Last updated: 2026年1月
Video Capture SDK .NET vs Medialooks MFormats SDK
パイプラインエンジン vs フレームベースキャプチャの比較
VisioForge Video Capture SDK .NETとMedialooks MFormats SDKの選択は、根本的に異なる2つのアーキテクチャモデル間の決定です。Video Capture SDKはソース、処理、出力を宣言的に構成するパイプラインベースのエンジンを使用し、MFormatsは各フレームを手動で取得してルーティングするフレームベースのグラブ-プロセス-出力ループに従います。このガイドでは、アーキテクチャ、機能、プラットフォームサポート、価格、実際のコードを比較し、プロジェクトに最適な選択ができるようにします。
エグゼクティブサマリー
| 側面 | Video Capture SDK .NET | MFormats SDK |
|---|---|---|
| アーキテクチャ | デュアルエンジン:ネイティブDirectShow/Media Foundation + 組み込みFFmpegパイプライン | COMオブジェクトによるフレームベースのグラブ-プロセス-出力ループ |
| プラットフォームサポート | Windows、macOS、Linux、Android、iOS(5プラットフォーム) | Windowsのみ |
| 価格 | 250〜500 EUR/年(サブスクリプション)または1,500 EURチーム/永久ライセンス | 〜4,508ドル/開発者/年(サブスクリプション必須) |
| 最適な用途 | クロスプラットフォームキャプチャアプリ、マルチ出力パイプライン、ビデオエフェクト、検出 | マルチベンダーSDIブロードキャスト、HTML5 CGオーバーレイ、プレイリスト/プレイアウトワークフロー |
| SDIハードウェア | Blackmagic DeckLinkサポート | Blackmagic、AJA、Bluefish444、DeltacastマルチベンダーSDI |
| UIフレームワーク | WinForms、WPF、MAUI、Avalonia、Uno、Console、Blazor | WinForms、WPF、Console |
| ライセンスモデル | 永久ライセンスまたは年間サブスクリプション;期限切れ後も動作 | 年間サブスクリプションのみ;サブスクリプション失効時にウォーターマーク追加 |
| サポート | 専用チケットシステム、優先SLA | メールサポート、フォーラム |
アーキテクチャの詳細分析
Video Capture SDK .NETアーキテクチャ
Video Capture SDKはパイプラインベースの設計を使用します。ソース、処理ステージ、出力を宣言的に構成します。エンジンは内部フィルターグラフを自動的に組み立て、スレッディング、同期、バッファ管理を処理します。デュアルエンジンはネイティブデバイスアクセス用のDirectShow/Media Foundationと、高度なコーデックおよびIPカメラ取り込み用の組み込みFFmpegパイプラインをラップします。
- ▶宣言的パイプライン構成:プロパティを設定し、StartAsync()を呼び出す
- ▶デュアルエンジン:ネイティブOSキャプチャAPI + 組み込みFFmpeg
- ▶Direct3D / OpenGLレンダラーによるGPUアクセラレーテッドプレビュー
- ▶.NET async/awaitサポートによるイベント駆動アーキテクチャ
- ▶自動スレッド管理によるシングルプロセスモデル
- ▶1つのパイプラインからのマルチ出力:録画 + ストリーミング + スナップショットを同時に
MFormats SDKアーキテクチャ
MFormatsはCOMオブジェクト上に構築されたフレームベースのグラブ-プロセス-出力モデルを使用します。MFReaderを作成してフレームを取得し、各フレームをMFTransformオブジェクトで処理し、MFWriterまたはMFRenderer出力に送信します。これによりフレームごとの細かい制御が可能になりますが、キャプチャループの記述、スレッディングの管理、フレームタイミングの手動処理が必要です。
- ▶フレームベースループ:MFReaderからフレームを取得、処理、MFWriterに送信
- ▶.NETインターオプラッパーを備えたCOMベースアーキテクチャ
- ▶手動スレッディングとフレームタイミング管理が必要
- ▶フレームごとの制御によりカスタムルーティングロジックが可能
- ▶パイプラインの各ステージ用の個別オブジェクト(Reader、Transform、Writer、Renderer)
- ▶ブロードキャストワークフロー用の組み込みプレイアウトおよびプレイリストスケジューリング
主要なアーキテクチャの違い
| 側面 | Video Capture SDK | MFormats SDK |
|---|---|---|
| プログラミングモデル | 宣言的パイプライン:構成して開始 | 命令型ループ:フレームごとに取得、処理、出力 |
| スレッディング | 自動内部スレッド管理 | 開発者がキャプチャループのスレッディングを管理 |
| フレームルーティング | パイプライン構成による自動 | コード内でフレームごとに手動ルーティング |
| マルチ出力 | 1つのパイプラインからの組み込み同時出力 | 開発者がフレームを複製して複数のwriterにルーティング |
| プラットフォーム | クロスプラットフォーム(.NET 6-10、MAUI) | Windowsのみ(COMベース) |
| オブジェクトモデル | 純粋な.NETマネージドAPI | .NETラッパーによるCOMインターオプ |
機能ごとの比較
キャプチャソース
| 機能 | Video Capture SDK | MFormats SDK |
|---|---|---|
| USBウェブカメラ | ✅ | ✅ |
| スクリーン/デスクトップキャプチャ | ✅ | ✅ |
| IPカメラ(RTSP/ONVIF) | ✅ | ✅ |
| Blackmagic DeckLink SDI | ✅ | ✅ |
| AJA SDIカード | ❌ | ✅ |
| Bluefish444 SDIカード | ❌ | ✅ |
| Deltacast SDIカード | ❌ | ✅ |
| TVチューナー(BDA/DVB) | ✅ | ❌ |
| NDIソース | ✅ | ✅ |
| 産業用カメラ(GenICam/GigE Vision) | ✅ | ❌ |
| 仮想カメラ(OBS Virtual Cam) | ✅ | ⚠️(DirectShow経由) |
録画と出力
| 機能 | Video Capture SDK | MFormats SDK |
|---|---|---|
| MP4(H.264 / H.265) | ✅ | ✅ |
| MXFコンテナ | ⚠️ | ✅(MFormatsはブロードキャストMXFに強い) |
| MKVコンテナ | ✅ | ❌ |
| WebM(VP8 / VP9 / AV1) | ✅ | ❌ |
| AVI | ✅ | ✅ |
| MOV(ProRes) | ✅ | ✅ |
| WMV / ASF | ✅ | ✅ |
| MPEG-TS | ✅ | ✅ |
| アニメーションGIF | ✅ | ❌ |
| オーディオのみ(MP3、AAC、WAV、FLAC) | ✅ | ⚠️ |
| プリイベント録画(循環バッファ) | ✅ | ❌ |
マルチ出力
| 機能 | Video Capture SDK | MFormats SDK |
|---|---|---|
| 録画 + ストリーミングの同時実行 | ✅ | ✅ |
| 複数の独立した録画出力 | ✅ | ⚠️(手動フレーム複製が必要) |
| 独立した出力制御(各出力の開始/停止/一時停止) | ✅ | ⚠️(writerごとの手動制御) |
| 出力ごとに異なるコーデック | ✅ | ✅ |
| 録画中のスナップショット | ✅ | ✅ |
ストリーミング
| 機能 | Video Capture SDK | MFormats SDK |
|---|---|---|
| RTMP Push | ✅ | ✅ |
| RTSPサーバー | ✅ | ❌ |
| SRTストリーミング | ✅ | ✅ |
| HLS出力 | ✅ | ⚠️ |
| NDI出力 | ✅ | ✅ |
| UDP / TCPマルチキャスト | ✅ | ✅ |
ビデオ処理とエフェクト
| 機能 | Video Capture SDK | MFormats SDK |
|---|---|---|
| リアルタイムリサイズ/クロップ | ✅ | ✅ |
| デインターレース | ✅ | ✅ |
| 色調整 | ✅ | ✅ |
| テキスト/画像オーバーレイ | ✅ | ✅ |
| HTML5 CGオーバーレイ | ❌ | ✅ |
| クロマキー(グリーンスクリーン) | ✅ | ✅ |
| GPUアクセラレーテッドビデオエフェクト(40+) | ✅ | ⚠️(組み込みエフェクトが限定的) |
| ピクチャーインピクチャー | ✅ | ✅ |
| トランジションとワイプ | ✅ | ✅ |
オーディオ
| 機能 | Video Capture SDK | MFormats SDK |
|---|---|---|
| オーディオデバイスキャプチャ | ✅ | ✅ |
| オーディオミキシング(複数入力) | ✅ | ✅ |
| オーディオエフェクト(40+組み込み:EQ、コンプレッサー、リバーブなど) | ✅ | ❌ |
| VUメーター/レベル監視 | ✅ | ✅ |
| システムオーディオループバックキャプチャ | ✅ | ⚠️ |
| 埋め込みオーディオルーティング(SDI) | ✅ | ✅ |
検出と分析
| 機能 | Video Capture SDK | MFormats SDK |
|---|---|---|
| モーション検出 | ✅ | ❌ |
| 顔検出 | ✅ | ❌ |
| バーコード/QRコード読み取り | ✅ | ❌ |
| オブジェクトトラッキング | ✅ | ❌ |
| オーディオレベル検出 | ✅ | ✅ |
ブロードキャストとプレイアウト
| 機能 | Video Capture SDK | MFormats SDK |
|---|---|---|
| プレイリスト/プレイアウトスケジューリング | ❌ | ✅ |
| マルチベンダーSDI出力 | ⚠️ | ✅(MFormatsはAJA、Bluefish、Deltacast出力をサポート) |
| HTML5 CG(キャラクタージェネレーター)オーバーレイ | ❌ | ✅ |
| 仮想カメラ出力 | ✅ | ❌ |
| ゲンロック/リファレンス同期 | ❌ | ✅ |
プラットフォームサポート
オペレーティングシステム互換性
| プラットフォーム | Video Capture SDK | MFormats SDK |
|---|---|---|
| Windows x64 | ✅ | ✅ |
| Windows ARM64 | ✅ | ❌ |
| macOS(Apple Silicon + Intel) | ✅ | ❌ |
| Linux x64(Ubuntu、Debian、Fedora) | ✅ | ❌ |
| Linux ARM64(Raspberry Pi) | ✅ | ❌ |
| Android(.NET MAUI経由) | ✅ | ❌ |
| iOS(.NET MAUI経由) | ✅ | ❌ |
UIフレームワーク互換性
| フレームワーク | Video Capture SDK | MFormats SDK |
|---|---|---|
| WinForms | ✅ | ✅ |
| WPF | ✅ | ✅ |
| .NET MAUI | ✅ | ❌ |
| Avalonia UI | ✅ | ❌ |
| Uno Platform | ✅ | ❌ |
| Console / Service | ✅ | ✅ |
| Blazor(Server-Side) | ✅ | ❌ |
価格比較
Video Capture SDK .NETの価格
開発者1名、商用利用、年間アップデートとサポート
開発者最大3名、永久ライセンス、1年間のアップデート含む
開発者最大8名、永久ライセンス、1年間のアップデート含む
All licenses include:
- ✓ ロイヤリティフリー配布
- ✓ すべてのソースコード例
- ✓ 優先チケットサポート
- ✓ すべてのプラットフォームターゲット含む
- ✓ 永久ライセンスオプション:サブスクリプション終了後も使用継続可能(ウォーターマークなし)
MFormats SDKの価格
年間サブスクリプション、単一開発者、Windowsのみ
開発者5席、3年間サブスクリプション契約
構成によってはデプロイメントごとのランタイム料金が必要な場合あり
サブスクリプション失効に関する警告
MFormats SDKは必須の年間サブスクリプションモデルを使用しています。サブスクリプションが失効または更新されない場合:
- ⚠すべてのビデオ出力にウォーターマークが自動的に追加されます
- ⚠アクティブなサブスクリプションなしでは本番環境でSDKを使用し続けることができません
- ⚠永久ライセンスのフォールバックオプションはありません
- ⚠ライセンスサーバーが検証できない場合、デプロイされたアプリケーションにウォーターマークが表示されます
Video Capture SDKは購入後無期限に動作し続ける永久ライセンスを提供しており、更新が失効してもウォーターマークのペナルティはありません。
コード例
例1:ウェブカメラキャプチャからMP4
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;
// Create the capture engine
var capture = new VideoCaptureCore();
// Set video source (first available webcam)
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];
// Set audio source
var audioDevices = await capture.Audio_CaptureDevice_ListAsync();
capture.Audio_CaptureDevice = audioDevices[0];
// Configure MP4 output with H.264
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 4000,
Profile = H264Profile.Main
},
Audio = new AACEncoderSettings
{
Bitrate = 192
}
};
capture.Output_Filename = "recording.mp4";
// Enable preview
capture.Video_Preview_Enabled = true;
// Start recording with preview
await capture.StartAsync();MFormats SDK
C#// MFormats: Frame-based capture loop
MFDeviceClass devClass = new MFDeviceClass();
MFReaderClass reader = new MFReaderClass();
MFWriterClass writer = new MFWriterClass();
MFRendererClass renderer = new MFRendererClass();
// Configure video device
reader.DeviceSet(eMFDeviceType.eMFDT_Video, 0, "");
reader.DeviceSet(eMFDeviceType.eMFDT_Audio, 0, "");
// Configure writer output
writer.WriterSet("recording.mp4", 0, "");
// You must run the capture loop yourself
while (capturing)
{
MFFrame frame;
reader.SourceFrameGet(-1, out frame, "");
if (frame != null)
{
// Preview
renderer.RenderSet("preview", frame, "");
// Write to file
writer.WriterPut(frame, "");
// Release frame manually
Marshal.ReleaseComObject(frame);
}
Thread.Sleep(1); // Manual timing
}例2:IPカメラ + オーバーレイ + ストリーミング
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;
var capture = new VideoCaptureCore();
// IP camera source
capture.IP_Camera_Source = new IPCameraSourceSettings
{
URL = "rtsp://192.168.1.100:554/stream",
Type = IPCameraType.RTSP
};
// Add text overlay
capture.Video_Overlays.Add(new VideoOverlayText
{
Text = "{timestamp} - Camera 1",
Position = new System.Drawing.Point(10, 10),
Font = new System.Drawing.Font("Arial", 14),
Color = System.Drawing.Color.White
});
// Stream to RTMP
capture.Network_Streaming_Enabled = true;
capture.Network_Streaming_Format = new RTMPOutput
{
URL = "rtmp://streaming-server/live",
StreamKey = "stream_key",
Video = new H264EncoderSettings { Bitrate = 4500 },
Audio = new AACEncoderSettings { Bitrate = 128 }
};
// Also record locally
capture.Output_Filename = "backup.mp4";
capture.Output_Format = new MP4Output();
await capture.StartAsync();MFormats SDK
C#// MFormats: Manual frame loop with overlay + streaming
MFReaderClass reader = new MFReaderClass();
MFWriterClass localWriter = new MFWriterClass();
MFWriterClass rtmpWriter = new MFWriterClass();
MFRendererClass renderer = new MFRendererClass();
// Configure RTSP source
reader.ReaderOpen("rtsp://192.168.1.100:554/stream", "");
// Configure outputs
localWriter.WriterSet("backup.mp4", 0, "");
rtmpWriter.WriterSet("rtmp://streaming-server/live/stream_key", 0, "");
while (capturing)
{
MFFrame frame;
reader.SourceFrameGet(-1, out frame, "");
if (frame != null)
{
// Add overlay manually via MFTransform
MFOverlayClass overlay = new MFOverlayClass();
overlay.OverlayTextSet(frame,
DateTime.Now.ToString() + " - Camera 1",
10, 10, 14, "Arial", 0xFFFFFF, 0, "");
// Clone frame for second output
MFFrame clone;
frame.MFClone(out clone, eMFrameClone.eMFC_Full, eMFCC.eMFCC_Default);
// Write to local file
localWriter.WriterPut(frame, "");
// Write to RTMP stream
rtmpWriter.WriterPut(clone, "");
Marshal.ReleaseComObject(clone);
Marshal.ReleaseComObject(frame);
}
}各ソリューションを選ぶタイミング
次の場合はVideo Capture SDKを選択
- ✓クロスプラットフォームキャプチャアプリケーション(Windows、macOS、Linux、モバイル)
- ✓自動スレッディングとバッファ管理を備えたパイプラインベースアーキテクチャ
- ✓40以上の組み込みGPUアクセラレーテッドビデオ・オーディオエフェクト
- ✓キャプチャ中のモーション検出、顔検出、バーコードスキャン
- ✓OBS、Zoom、Teams連携用の仮想カメラ出力
- ✓永久ライセンスオプション付きの予算に優しいライセンス
- ✓個別の開始/停止制御を持つ複数の独立した出力
- ✓産業用カメラサポート(GenICam、GigE Vision)
- ✓TVチューナーおよびDVBキャプチャサポート
次の場合はMFormats SDKを選択
- ✓マルチベンダーSDIサポート:Blackmagicに加えAJA、Bluefish444、Deltacast
- ✓プレイリストスケジューリングと自動化によるブロードキャストプレイアウト
- ✓ライブブロードキャスト用HTML5ベースCG(キャラクタージェネレーター)オーバーレイ
- ✓ブロードキャストスタジオ環境用のゲンロックおよびリファレンス同期
- ✓すべての処理ステップに対するフレームごとの手動制御
- ✓完全なブロードキャストメタデータサポート付きMXFコンテナフォーマット
- ✓既存のブロードキャストインフラストラクチャおよびSDIルーターとの統合
決定マトリックス
| 要件 | Video Capture SDK | MFormats SDK | 勝者 |
|---|---|---|---|
| クロスプラットフォームサポート | Video Capture SDK | ||
| 独立制御付きマルチ出力 | Video Capture SDK | ||
| オーディオエフェクト(40+組み込み) | Video Capture SDK | ||
| GPUビデオエフェクト | Video Capture SDK | ||
| モーション/顔/バーコード検出 | Video Capture SDK | ||
| 仮想カメラ出力 | Video Capture SDK | ||
| 2,000 EUR以下の予算 | Video Capture SDK | ||
| 永久ライセンスオプション | Video Capture SDK | ||
| 産業用カメラ(GenICam) | Video Capture SDK | ||
| TVチューナー/DVBキャプチャ | Video Capture SDK | ||
| マルチベンダーSDI(AJA、Bluefish444) | MFormats SDK | ||
| ブロードキャスト用HTML5 CGオーバーレイ | MFormats SDK |
結論
Video Capture SDK .NET
Video Capture SDKは、豊富なビデオ処理、検出機能、複数の独立した出力、幅広いデバイスサポートを必要とする.NET開発者向けの、クロスプラットフォームのパイプラインベースキャプチャエンジンとして優れています。その宣言的API、40以上のGPUエフェクト、永久ライセンスにより、デスクトップからモバイルまでのほとんどのキャプチャアプリケーションにとってコスト効率の高い選択肢です。
MFormats SDK
MFormats SDKは、マルチベンダーSDIハードウェアサポート(AJA、Bluefish444、Deltacast)、HTML5 CGオーバーレイ、プレイリストベースのプレイアウト自動化を必要とするブロードキャスト中心のワークフローに適しています。そのフレームベースアーキテクチャは、プロフェッショナルなブロードキャスト環境に適したフレームごとの細かい制御を提供します。ただし、Windowsのみで、大幅に高価であり、サブスクリプションが失効するとウォーターマークが追加されます。
The Reality
大多数の.NETビデオキャプチャプロジェクト — 特にクロスプラットフォームサポート、検出機能、または予算に配慮したライセンスを必要とするプロジェクト — にとって、Video Capture SDKは明らかな選択肢です。MFormatsは、AJA/Bluebishハードウェア統合とCGオーバーレイワークフローが不可欠なマルチベンダーSDIブロードキャストスタジオに特化した位置付けです。
