Last updated: 2026年1月
Video Capture SDK .NET vs Datastead TVideoGrabber
包括的な.NETビデオキャプチャコンポーネント比較
.NETアプリケーションに適したビデオキャプチャコンポーネントの選択は、プロジェクトの機能と長期的なコストを決定します。このガイドでは、VisioForge Video Capture SDK .NET(5つのオペレーティングシステムをサポートするモダンなデュアルエンジンキャプチャプラットフォーム)とDatastead TVideoGrabber(Windows向けの成熟したDirectShowベースのキャプチャコンポーネント)の詳細な比較を提供します。アーキテクチャ、機能、マルチ出力サポート、ストリーミング、価格、実際のコードを検証し、情報に基づいた判断ができるようにします。
エグゼクティブサマリー
| 側面 | Video Capture SDK .NET | TVideoGrabber |
|---|---|---|
| アーキテクチャ | デュアルエンジン:ネイティブDirectShow/Media Foundation + 組み込みFFmpegパイプライン | シングルエンジン:DirectShowプロパティベースコンポーネント |
| プラットフォームサポート | Windows、macOS、Linux、Android、iOS(5プラットフォーム) | Windowsのみ |
| 価格 | 年額EUR 489 – EUR 6,999(全機能含む) | EUR 695基本 + EUR 950 NDI + EUR 950エンコーダーアドオン = 同等機能でEUR 2,595以上 |
| 最適な用途 | ストリーミング、マルチ出力、リアルタイムエフェクトを備えたクロスプラットフォームキャプチャアプリ | OCR要件のあるWindows専用シングル出力キャプチャ |
| APIスタイル | イベントとawaitパターンを備えた非同期優先.NET API | 同期呼び出しによるプロパティベースコンポーネントモデル |
アーキテクチャ詳細分析
Video Capture SDK .NETアーキテクチャ
Video Capture SDKはデュアルエンジン設計を採用しています。プライマリエンジンはWindows上のDirectShowとMedia Foundationをラップし、OSが公開するすべてのキャプチャデバイスへのネイティブアクセスを提供します。セカンダリの組み込みFFmpegパイプラインは、高度なコーデック操作、IPカメラの取り込み、クロスプラットフォーム録画を処理します。両エンジンは統一された.NET APIサーフェスを共有しているため、エンジン間の切り替えにコード変更は不要です。
- ▶DirectShowとMedia FoundationフィルターグラフによるネイティブWindowsキャプチャ
- ▶外部CLI依存なしのコーデック柔軟性のための組み込みFFmpeg
- ▶Direct3D / OpenGLレンダラーによるGPUアクセラレーテッドプレビュー
- ▶.NET async/awaitサポートによるイベント駆動アーキテクチャ
- ▶シングルプロセスモデル — 子プロセス管理不要
- ▶クロスプラットフォームサポート:Windows、macOS、Linux、Android、iOS
TVideoGrabberアーキテクチャ
TVideoGrabberはDatasteadが開発したシングルエンジンのDirectShowベースコンポーネントです。プロパティベースのAPIを通じてキャプチャデバイスのプロパティと録画設定を公開します。キャプチャ開始前にコンポーネントのプロパティを設定することで構成を行い、.NET向けに適応された伝統的なDelphi/VCLコンポーネントパターンに従っています。
- ▶Windows上のデバイスアクセスと録画のためのDirectShowフィルターグラフ
- ▶プロパティベースの構成モデル(プロパティを設定してから開始)
- ▶組み込みONVIF PTZカメラ制御サポート
- ▶キャプチャ中のOCRテキスト認識(ユニークな機能)
- ▶NDIと高度なエンコーディング用のオプションアドオンモジュール
- ▶Windowsのみ — macOS、Linux、モバイルサポートなし
主要なアーキテクチャの違い
| 側面 | Video Capture SDK | TVideoGrabber |
|---|---|---|
| エンジン設計 | デュアルエンジン(DirectShow/MF + FFmpeg) | シングルエンジン(DirectShowのみ) |
| プラットフォーム範囲 | 5つのOS、7つのUIフレームワーク | Windowsのみ、WinForms/WPF |
| APIパターン | Async/await、イベント、マネージドオブジェクト | プロパティベース、同期呼び出し |
| マルチ出力 | 同時録画 + ストリーム + スナップショット | 一度に1つの出力のみ |
| ストリーミング | RTMP、RTSP、SRT、HLS、NDI組み込み | ストリーミングプロトコルなし |
| アドオンモデル | ライセンスに全機能含む | ベース + 有料アドオン(NDI EUR 950、エンコーダー EUR 950) |
機能別比較
キャプチャソース
| 機能 | Video Capture SDK | TVideoGrabber |
|---|---|---|
| USBウェブカメラ | ✅ | ✅ |
| ノートPC内蔵カメラ | ✅ | ✅ |
| 画面 / デスクトップキャプチャ | ✅ | ✅ |
| IPカメラ(RTSP/ONVIF) | ✅ | ✅ |
| ONVIF PTZ制御 | ✅ | ✅ |
| キャプチャカード(Blackmagic、Magewell) | ✅ | ⚠️(DirectShow経由のみ) |
| TVチューナー(BDA/DVB) | ✅ | ⚠️(限定的なサポート) |
| NDIソース | ✅ | ⚠️(EUR 950のアドオンが必要) |
| 仮想カメラ(OBS Virtual Cam) | ✅ | ✅ |
| DECKLINK入力 | ✅ | ❌ |
録画
| 機能 | Video Capture SDK | TVideoGrabber |
|---|---|---|
| MP4(H.264 / H.265) | ✅ | ✅ |
| MKVコンテナ | ✅ | ❌ |
| WebM(VP8 / VP9 / AV1) | ✅ | ❌ |
| AVI | ✅ | ✅ |
| WMV / ASF | ✅ | ✅ |
| MOV(ProRes) | ✅ | ❌ |
| MPEG-TS | ✅ | ⚠️(限定的なコンテナサポート) |
| アニメーションGIF | ✅ | ❌ |
| オーディオのみ(MP3、AAC、WAV) | ✅ | ⚠️ |
| 時間/サイズによるファイル分割 | ✅ | ❌ |
| プリイベント録画(循環バッファ) | ✅ | ❌ |
マルチ出力
| 機能 | Video Capture SDK | TVideoGrabber |
|---|---|---|
| 同時録画 + ストリーム | ✅ | ❌ |
| 複数の録画出力 | ✅ | ❌ |
| 同時録画 + スナップショット | ✅ | ⚠️(基本的なスナップショットサポート) |
| 出力ごとの異なる解像度 | ✅ | ❌ |
| 仮想カメラ出力 | ✅ | ❌ |
| タイムシフト / 遅延再生 | ✅ | ❌ |
ストリーミングプロトコル
| 機能 | Video Capture SDK | TVideoGrabber |
|---|---|---|
| RTMP Push(YouTube、Twitch) | ✅ | ❌ |
| RTSPサーバーモード | ✅ | ❌ |
| SRT(Caller / Listener) | ✅ | ❌ |
| HLSセグメント生成 | ✅ | ❌ |
| NDI出力 | ✅ | ❌ |
| UDP / TCP ユニキャスト / マルチキャスト | ✅ | ❌ |
ビデオ処理
| 機能 | Video Capture SDK | TVideoGrabber |
|---|---|---|
| リアルタイムリサイズ / クロップ | ✅ | ✅ |
| デインターレース | ✅ | ✅ |
| 色調整(明るさ、コントラスト) | ✅ | ✅ |
| テキストオーバーレイ(タイムスタンプ、ウォーターマーク) | ✅ | ✅ |
| 画像オーバーレイ / ロゴ | ✅ | ✅ |
| GPUアクセラレーテッドビデオエフェクト | ✅ | ❌ |
| クロマキー(グリーンスクリーン) | ✅ | ❌ |
| ピクチャーインピクチャー | ✅ | ❌ |
オーディオ
| 機能 | Video Capture SDK | TVideoGrabber |
|---|---|---|
| オーディオデバイスキャプチャ | ✅ | ✅ |
| システムオーディオ(ループバック)キャプチャ | ✅ | ❌ |
| オーディオミキシング(複数入力) | ✅ | ❌ |
| リアルタイム音量 / ゲイン制御 | ✅ | ⚠️ |
| オーディオエフェクト(エコー、リバーブ) | ✅ | ❌ |
| VUメーター / レベルモニタリング | ✅ | ⚠️ |
検出と分析
| 機能 | Video Capture SDK | TVideoGrabber |
|---|---|---|
| モーション検出 | ✅ | ✅ |
| 顔検出 | ✅ | ❌ |
| バーコード / QRコード読取 | ✅ | ❌ |
| OCRテキスト認識 | ❌ | ✅ |
| オブジェクトトラッキング | ✅ | ❌ |
| オーディオレベル検出 | ✅ | ⚠️ |
プラットフォームサポート
オペレーティングシステム互換性
| プラットフォーム | Video Capture SDK | TVideoGrabber |
|---|---|---|
| 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 | TVideoGrabber |
|---|---|---|
| WinForms | ✅ | ✅ |
| WPF | ✅ | ✅ |
| .NET MAUI | ✅ | ❌ |
| Avalonia UI | ✅ | ❌ |
| Console / Service | ✅ | ❌ |
| ASP.NET Core(バックグラウンドサービス) | ✅ | ❌ |
| Blazor(サーバーサイド処理) | ✅ | ❌ |
価格比較
Video Capture SDK .NETの価格
開発者1名、非商用利用
開発者1名、商用利用、全機能含む
最大3名の開発者、商用利用、1年間のアップデート
最大8名の開発者、商用利用、1年間のアップデート
All licenses include:
- ✓ ロイヤリティフリーの配布
- ✓ 全機能含む(ストリーミング、NDI、GPUエフェクト、マルチ出力)
- ✓ 全ソースコードサンプル
- ✓ 優先チケットサポート
- ✓ 5つの全プラットフォームターゲット含む
TVideoGrabberの価格
シングル出力キャプチャ、基本機能、Windowsのみ
NDIソース/出力サポートを追加
高度なハードウェアエンコーディングサポートを追加
全アドオン含む — それでもWindowsのみ、ストリーミングなし、シングル出力
総所有コスト
同等の機能セットを比較すると、価格の状況は大きく変わります。全アドオン付きのTVideoGrabberライセンスはEUR 2,595で、Windows専用のシングル出力キャプチャのみを提供します。EUR 1,000のVideo Capture SDK Professionalには、クロスプラットフォームサポート、ストリーミング、マルチ出力、GPUエフェクトなどが含まれ、価格は半額以下です。
- ⚠SDK Professional(EUR 1,000)は全て含む vs TVideoGrabberフルスタック(EUR 2,595)はギャップあり
- ⚠SDKにはストリーミングプロトコル(RTMP、SRT、HLS)が含まれる — TVideoGrabberにはどの価格帯でもなし
- ⚠SDKにはマルチ出力録画が含まれる — TVideoGrabberにはどの価格帯でもなし
- ⚠SDKは5つのプラットフォームをカバー — TVideoGrabberはWindowsのみ
- ⚠SDKにはGPUアクセラレーテッドエフェクト含む — TVideoGrabberは基本的な処理のみ
コード例
例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();TVideoGrabber
C#// TVideoGrabber — property-based approach
var grabber = new TVideoGrabber();
// Select video device by index
grabber.VideoDevice = 0;
// Select audio device by index
grabber.AudioDevice = 0;
// Set recording mode
grabber.RecordingMethod = TRecordingMethod.rmMP4;
// Set output filename
grabber.RecordingFileName = "recording.mp4";
// Set video bitrate
grabber.VideoBitrate = 4000000;
// Set audio bitrate
grabber.AudioBitrate = 192000;
// Start capture and recording
grabber.StartPreview();
grabber.StartRecording();
// Note: Properties set before starting
// No async/await — synchronous calls
// Single output only例2:ONVIF PTZ制御付きIPカメラ
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
var capture = new VideoCaptureCore();
// Connect to ONVIF IP camera
capture.IP_Camera_Source = new IPCameraSourceSettings
{
URL = "rtsp://192.168.1.100:554/stream",
Login = "admin",
Password = "password",
Type = IPCameraType.RTSP
};
// ONVIF PTZ control
var ptz = new ONVIFPTZController(
"192.168.1.100", "admin", "password");
await ptz.MoveAsync(PanDirection.Left, TiltDirection.Up, 0.5);
await ptz.ZoomAsync(ZoomDirection.In, 0.3);
await ptz.GoToPresetAsync("entrance");
// Record while controlling PTZ
capture.Output_Format = new MP4Output();
capture.Output_Filename = "camera_feed.mp4";
// Simultaneously stream to RTMP
capture.Network_Streaming_Enabled = true;
capture.Network_Streaming_Format = new RTMPOutput
{
URL = "rtmp://stream.example.com/live",
StreamKey = "KEY"
};
await capture.StartAsync();TVideoGrabber
C#// TVideoGrabber — ONVIF PTZ support
var grabber = new TVideoGrabber();
// Set IP camera URL
grabber.IPCameraURL = "rtsp://192.168.1.100:554/stream";
grabber.IPCameraLogin = "admin";
grabber.IPCameraPassword = "password";
// ONVIF PTZ — built-in support
grabber.ONVIF_PTZ_Move(
ePTZ_Direction.Left, 50);
grabber.ONVIF_PTZ_Zoom(
ePTZ_ZoomDirection.In, 30);
grabber.ONVIF_PTZ_GotoPreset("entrance");
// Record to file
grabber.RecordingMethod = TRecordingMethod.rmMP4;
grabber.RecordingFileName = "camera_feed.mp4";
grabber.StartPreview();
grabber.StartRecording();
// Note: No streaming capability
// Cannot simultaneously record + stream
// PTZ control is a strong point
// Windows only例3:マルチ出力録画 + ストリーミング
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
var capture = new VideoCaptureCore();
// Set webcam source
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];
// Output 1: High-quality local recording
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 8000,
Profile = H264Profile.High
}
};
capture.Output_Filename = "archive.mp4";
// Output 2: Stream to YouTube via RTMP
capture.Network_Streaming_Enabled = true;
capture.Network_Streaming_Format = new RTMPOutput
{
URL = "rtmp://a.rtmp.youtube.com/live2",
StreamKey = "YOUR_KEY",
Video = new H264EncoderSettings { Bitrate = 4500 }
};
// Output 3: Low-res recording for thumbnails
capture.AdditionalOutputs.Add(new OutputConfig
{
Filename = "preview.mp4",
Format = new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 1000,
Width = 640, Height = 360
}
}
});
// All three outputs run simultaneously
await capture.StartAsync();TVideoGrabber
C#// TVideoGrabber — single output only
var grabber = new TVideoGrabber();
// Select video device
grabber.VideoDevice = 0;
// Can only record to ONE file at a time
grabber.RecordingMethod = TRecordingMethod.rmMP4;
grabber.RecordingFileName = "archive.mp4";
grabber.VideoBitrate = 8000000;
grabber.StartPreview();
grabber.StartRecording();
// LIMITATIONS:
// - Cannot stream while recording
// - Cannot record multiple files simultaneously
// - No RTMP/SRT/HLS streaming support
// - No additional outputs at different resolutions
// - To stream, you would need a separate tool
// alongside TVideoGrabber
//
// Multi-output and streaming are simply
// not available in TVideoGrabber at any
// price point.例4:録画付きモーション検出
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
var capture = new VideoCaptureCore();
// Set video source
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];
// Enable motion detection
capture.Motion_Detection.Enabled = true;
capture.Motion_Detection.Sensitivity = 70;
capture.Motion_Detection.HighlightMotion = true;
capture.Motion_Detection.HighlightColor = Color.Red;
// Motion event handler
capture.OnMotionDetected += (s, e) =>
{
Console.WriteLine(
$"Motion at {DateTime.Now}: " +
$"Level={e.Level:P0}");
// Start recording on motion
if (!capture.IsRecording)
{
capture.Output_Filename =
$"motion_{DateTime.Now:yyyyMMdd_HHmmss}.mp4";
capture.StartRecording();
}
};
// Configure output
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 4000,
UseHardwareEncoder = true
}
};
// Start preview with detection
await capture.StartAsync();TVideoGrabber
C#// TVideoGrabber — motion detection
var grabber = new TVideoGrabber();
// Select video device
grabber.VideoDevice = 0;
// Enable motion detection
grabber.MotionDetection_Enabled = true;
grabber.MotionDetection_Sensitivity = 70;
// Motion event
grabber.OnMotionDetected += (s, e) =>
{
Console.WriteLine(
$"Motion detected at {DateTime.Now}");
};
// Set recording format
grabber.RecordingMethod = TRecordingMethod.rmMP4;
grabber.RecordingFileName = "motion.mp4";
grabber.StartPreview();
// Note: TVideoGrabber does support
// basic motion detection — this is
// a shared capability.
// However, no motion highlight overlay,
// no hardware encoding toggle,
// no dynamic filename switching,
// no simultaneous stream on motion.意思決定マトリックス
| 要件 | Video Capture SDK | TVideoGrabber | 勝者 |
|---|---|---|---|
| クロスプラットフォーム(Windows、Mac、Linux、モバイル) | Video Capture SDK | ||
| マルチ出力(同時録画 + ストリーム) | Video Capture SDK | ||
| リアルタイムオーディオエフェクト | Video Capture SDK | ||
| GPUアクセラレーテッドビデオエフェクト | Video Capture SDK | ||
| RTMP / HLS / SRTストリーミング | Video Capture SDK | ||
| 仮想カメラ出力 | Video Capture SDK | ||
| ファイル分割 / タイムシフト | Video Capture SDK | ||
| ハードウェアエンコーディング(NVENC、QSV) | Video Capture SDK | ||
| 追加コストなしのNDI | Video Capture SDK | ||
| キャプチャ中のOCR | TVideoGrabber |
結論
Video Capture SDK .NET
Video Capture SDKは、5つのオペレーティングシステム、7つのUIフレームワークをカバーし、ストリーミング、マルチ出力、GPUエフェクト、NDI、ハードウェアエンコーディングなど全機能をEUR 1,000からの単一ライセンスに含む、包括的でモダンなキャプチャプラットフォームを提供します。クロスプラットフォームキャプチャアプリケーションを構築するチームや、ストリーミングとマルチ出力録画を必要とするプロジェクトにとって、SDKはアドオン付きTVideoGrabberよりも大幅に高い価値を低い総コストで提供します。
TVideoGrabber
TVideoGrabberは、堅実なDirectShow統合とユニークなOCR機能を備えた成熟したWindows専用キャプチャコンポーネントです。ビデオフィードからのテキスト認識を必要とするシンプルなWindows専用キャプチャプロジェクトには合理的な選択です。しかし、ストリーミング、マルチ出力サポート、クロスプラットフォーム互換性の欠如、およびアドオンの高コスト(合計EUR 2,595)は、モダンなアプリケーション開発における魅力を制限しています。
The Reality
OCR要件があり、ストリーミングやマルチ出力を必要としないWindows専用プロジェクトには、TVideoGrabberは実行可能なオプションです。他のほぼすべてのビデオキャプチャシナリオ — クロスプラットフォーム、ストリーミング、マルチ出力、GPUエフェクト、またはコスト重視の開発 — では、Video Capture SDKがより低い総価格でより強力な選択肢です。
