Last updated: 2026年1月
Video Capture SDK .NET vs LibVLCSharp
包括的な.NETビデオキャプチャ比較
.NETアプリケーションに適したビデオキャプチャフレームワークを選ぶことは、重要なアーキテクチャ上の決定です。このガイドでは、VisioForge Video Capture SDK .NET(専用設計のキャプチャエンジン)とLibVLCSharp(VLCメディアエンジンの.NETバインディング)の詳細かつ公平な比較を提供します。LibVLCSharpはメディア再生に優れ、キャプチャデバイスを開くことができますが、Video Capture SDKはプロフェッショナルなビデオキャプチャワークフロー専用に設計されています。アーキテクチャ、機能、パフォーマンス、ライセンス、実際のコードを検証し、情報に基づいた判断ができるようにします。
エグゼクティブサマリー
| 側面 | Video Capture SDK .NET | LibVLCSharp |
|---|---|---|
| アーキテクチャ | デュアルエンジン:ネイティブDirectShow/Media Foundation + 組み込みGStreamerパイプライン | libvlc C interop経由のモノリシックVLCメディアエンジン |
| 主な目的 | プロフェッショナルなビデオキャプチャ、録画、ストリーミング、処理 | 基本的なキャプチャデバイスアクセス付きのメディア再生ライブラリ |
| キャプチャソース | ウェブカメラ、画面、IPカメラ、キャプチャカード、TVチューナー、NDI、産業用カメラ | dshow://経由のウェブカメラ、screen://経由の画面、URL経由のIPカメラ |
| ライブプレビュー | オーバーレイとエフェクト付きの内蔵GPU高速プレビュー | 内蔵ビデオサーフェスレンダリング(再生指向) |
| 録画フォーマット | MP4、MKV、WebM、AVI、WMV、MOV、TS、GIF + 型付き出力クラスで30以上 | soutトランスコードチェーン経由 — 文字列ベースの設定 |
| マルチ出力 | 同時録画 + ストリーム + プレビューのためのネイティブOutputs_Add API | sout duplicateディレクティブ経由 — 脆弱な文字列構文 |
| ビデオエフェクト | キャプチャ中の40以上のCPUおよびGPU高速エフェクト | キャプチャ中のリアルタイムエフェクトなし |
| 検出 | モーション、顔、バーコード/QR検出内蔵 | 検出機能なし |
| ライセンス | 開発者ごとの商用ライセンス(サブスクリプションまたは永続) | LGPL 2.1 — 動的リンクで無料 |
| 価格 | EUR 250(サブスクリプション)からEUR 1,500(チームライフタイム)まで | 無料(LGPL 2.1) |
アーキテクチャの詳細
Video Capture SDK .NETのアーキテクチャ
Video Capture SDKはデュアルエンジン設計を使用しています。プライマリエンジンはWindows上のDirectShowとMedia Foundationをラップし、OSが公開するすべてのキャプチャデバイスへのネイティブアクセスを提供します。セカンダリの組み込みGStreamerパイプラインは、クロスプラットフォームキャプチャ、高度なコーデック操作、IPカメラの取り込みを処理します。両方のエンジンは統一された.NET APIサーフェスを共有するため、切り替えにコード変更は不要です。
- ▶DirectShowとMedia Foundationフィルタグラフ経由のネイティブWindowsキャプチャ
- ▶macOS、Linux、iOS、Android向けのクロスプラットフォームGStreamerエンジン
- ▶Direct3D / OpenGLレンダラー経由のGPU高速プレビュー
- ▶.NET async/awaitサポート付きのイベント駆動アーキテクチャ
- ▶シングルプロセスモデル — 子プロセス管理不要
- ▶録画とストリーミング設定のための型付き出力クラス
LibVLCSharpのアーキテクチャ
LibVLCSharpはlibvlcの公式.NETバインディングで、VLCメディアプレーヤーの背後にあるコアエンジンです。VLCのC APIのマネージドラッパーを提供し、VLCの広範なメディア再生機能へのアクセスを可能にします。主に再生用に設計されていますが、VLCのメディアリソースロケーター構文(dshow://、screen://、v4l2://)を使用してキャプチャデバイスを開くことができます。
- ▶P/Invoke経由のlibvlc C APIのマネージド.NETラッパー
- ▶すべてのメディア操作を処理するモノリシックVLCエンジン
- ▶URL形式のメディアリソースロケーター経由でアクセスするキャプチャデバイス
- ▶sout(ストリーム出力)文字列チェーン経由で設定される録画
- ▶再生優先設計 — キャプチャは二次的なユースケース
- ▶プラットフォーム固有のVLCネイティブライブラリによるクロスプラットフォーム
主なアーキテクチャの違い
| 側面 | Video Capture SDK | LibVLCSharp |
|---|---|---|
| 設計の焦点 | ビデオキャプチャワークフロー専用に構築 | キャプチャを二次機能とするメディア再生ライブラリ |
| デバイス検出 | 完全なデバイスメタデータ付きのネイティブOS列挙API | 手動のdshow://またはv4l2:// URL構築 |
| 録画設定 | 型付き.NET出力クラス(MP4Output、H264EncoderSettings) | 文字列ベースのsoutトランスコードチェーン |
| エラー処理 | .NET例外とイベントベースのエラー | VLCログコールバックとイベントサブスクリプション |
| マルチ出力 | ネイティブOutputs_Add API — マネージドで型安全 | sout duplicateディレクティブ — 脆弱な文字列パース |
| エフェクトパイプライン | キャプチャ中の内蔵CPU + GPUエフェクトチェーン | キャプチャ用のリアルタイムエフェクトパイプラインなし |
機能別比較
キャプチャソース
| 機能 | Video Capture SDK | LibVLCSharp |
|---|---|---|
| USBウェブカメラ | ✅ | ⚠️(制限された制御でdshow://経由) |
| 内蔵ノートPCカメラ | ✅ | ⚠️(dshow:// URL経由) |
| 画面/デスクトップキャプチャ | ✅ | ⚠️(screen://経由の基本的なもの — 領域選択なし) |
| アプリケーションウィンドウキャプチャ | ✅ | ❌ |
| IPカメラ(RTSP/ONVIF) | ✅ | ⚠️(URLベース、自動再接続なし) |
| キャプチャカード(Blackmagic DeckLink) | ✅ | ❌ |
| TVチューナー(BDA/DVB) | ✅ | ❌ |
| NDIソース | ✅ | ❌ |
| 産業用カメラ(GigE Vision、USB3 Vision) | ✅ | ❌ |
| 仮想カメラ(OBS Virtual Cam) | ✅ | ⚠️(Windowsのみdshow://経由) |
ライブプレビュー
| 機能 | Video Capture SDK | LibVLCSharp |
|---|---|---|
| 内蔵ビデオプレビュー | ✅ | ✅(再生指向のサーフェス) |
| GPU高速レンダリング | ✅ | ✅ |
| プレビュー上のテキスト/画像オーバーレイ | ✅ | ❌(キャプチャ中のオーバーレイAPIなし) |
| 録画なしのプレビュー | ✅ | ✅ |
| 複数のプレビューウィンドウ | ✅ | ⚠️(複数のMediaPlayerインスタンスが必要) |
| WinForms / WPF / MAUIコントロール | ✅ | ✅(VideoViewコントロール利用可能) |
録画
| 機能 | Video Capture SDK | LibVLCSharp |
|---|---|---|
| MP4(H.264 / H.265) | ✅ | ⚠️(soutトランスコード文字列経由) |
| MKVコンテナ | ✅ | ⚠️(soutトランスコード文字列経由) |
| WebM(VP8 / VP9) | ✅ | ⚠️(soutトランスコード文字列経由) |
| AVI | ✅ | ⚠️(soutトランスコード文字列経由) |
| WMV / ASF | ✅ | ⚠️(soutトランスコード文字列経由) |
| 型付き出力設定 | ✅ | ❌(すべての設定は文字列ベース) |
| オーディオのみの録画 | ✅ | ⚠️(soutトランスコード文字列経由) |
| セグメント録画(時間/サイズで分割) | ✅ | ❌ |
| プリイベント録画(循環バッファ) | ✅ | ❌ |
マルチ出力
| 機能 | Video Capture SDK | LibVLCSharp |
|---|---|---|
| 同時録画 + ストリーミング | ✅ | ⚠️(sout duplicate経由 — 脆弱) |
| 複数の録画出力 | ✅ | ⚠️(sout duplicate経由 — 脆弱) |
| ネイティブOutputs_Add API | ✅ | ❌ |
| 独立した出力制御 | ✅ | ❌ |
| 録画中のスナップショット | ✅ | ⚠️(TakeSnapshot利用可能だが制限あり) |
ストリーミング
| 機能 | Video Capture SDK | LibVLCSharp |
|---|---|---|
| RTMP Push | ✅ | ⚠️(sout経由 — 制限された制御) |
| RTSPサーバーモード | ✅ | ❌ |
| SRT(Caller / Listener) | ✅ | ❌ |
| HLSセグメント生成 | ✅ | ⚠️(sout経由 — 制限あり) |
| UDP / TCP ユニキャスト / マルチキャスト | ✅ | ⚠️(sout rtp/udp経由) |
| 型付きストリーミング設定 | ✅ | ❌(すべての設定は文字列ベースのsoutチェーン) |
ビデオ処理
| 機能 | Video Capture SDK | LibVLCSharp |
|---|---|---|
| リアルタイムリサイズ/クロップ | ✅ | ❌(キャプチャ中の処理なし) |
| デインターレース | ✅ | ✅(VLCには内蔵デインターレースあり) |
| 色調整(明るさ、コントラスト) | ✅ | ❌(キャプチャ中のエフェクトなし) |
| テキストオーバーレイ/透かし | ✅ | ❌(キャプチャ中のオーバーレイなし) |
| 画像オーバーレイ/ロゴ | ✅ | ❌(キャプチャ中のオーバーレイなし) |
| ピクチャーインピクチャー | ✅ | ❌ |
| クロマキー(グリーンスクリーン) | ✅ | ❌ |
| GPU高速フィルター | ✅ | ❌ |
オーディオ
| 機能 | Video Capture SDK | LibVLCSharp |
|---|---|---|
| オーディオデバイスキャプチャ | ✅ | ⚠️(dshow://オーディオ経由) |
| システムオーディオ(ループバック)キャプチャ | ✅ | ❌ |
| オーディオミキシング(複数入力) | ✅ | ❌ |
| リアルタイムボリューム/ゲイン制御 | ✅ | ⚠️(基本的なボリューム制御) |
| オーディオエフェクト(40以上内蔵) | ✅ | ❌ |
| VUメーター/レベルモニタリング | ✅ | ❌ |
検出と分析
| 機能 | Video Capture SDK | LibVLCSharp |
|---|---|---|
| モーション検出 | ✅ | ❌ |
| 顔検出 | ✅ | ❌ |
| バーコード/QRコード読み取り | ✅ | ❌ |
| オブジェクトトラッキング | ✅ | ❌ |
| オーディオレベル検出 | ✅ | ❌ |
フレームアクセスと統合
| 機能 | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Rawフレームコールバック(RGB / YUV) | ✅ | ⚠️(SetVideoCallbacks経由 — 複雑なセットアップ) |
| Bitmap / SKBitmap / WriteableBitmap | ✅ | ❌(手動変換が必要) |
| ML.NET / ONNXとの統合 | ✅ | ⚠️(手動フレーム抽出が必要) |
| OpenCV Interop | ✅ | ⚠️(ビデオコールバック経由) |
| 直接GPUテクスチャアクセス | ✅ | ❌ |
| 仮想カメラ出力 | ✅ | ❌ |
プラットフォームサポート
オペレーティングシステム互換性
| プラットフォーム | Video Capture SDK | LibVLCSharp |
|---|---|---|
| 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 | LibVLCSharp |
|---|---|---|
| WinForms | ✅ | ✅(VideoViewコントロール) |
| WPF | ✅ | ✅(VideoViewコントロール) |
| .NET MAUI | ✅ | ✅(VideoViewコントロール) |
| Avalonia UI | ✅ | ✅(VideoViewコントロール) |
| コンソール/サービス | ✅ | ✅ |
| ASP.NET Core(バックグラウンドサービス) | ✅ | ⚠️(再生指向の設計) |
| Blazor(サーバーサイド処理) | ✅ | ⚠️(制限されたサーバーサイドキャプチャ) |
価格比較
Video Capture SDK .NETの価格
開発者1名、商用利用、1年間のアップデート
最大8名の開発者、永続ライセンス、ライフタイムアップデート付き
All licenses include:
- ✓ ロイヤリティフリーの配布
- ✓ すべてのソースコード例
- ✓ 優先チケットサポート
- ✓ すべてのプラットフォームターゲット含む
LibVLCSharpのコスト
LGPL 2.1ライセンス — 動的リンクが必要
プロプライエタリな静的リンクまたはLGPL非互換の使用向け
LGPLコンプライアンスの考慮事項
LibVLCSharpとlibvlcはLGPL 2.1の下でライセンスされています。つまり、LGPLの条件に準拠する限り、商用プロプライエタリソフトウェアで使用できます。主な要件は次のとおりです:
- ⚠libvlcに動的にリンクする必要があります(静的リンクではなく)
- ⚠ユーザーがLGPLライセンスのライブラリを修正版に置き換える機能を提供する必要があります
- ⚠LGPLライセンスのコピーを含め、libvlcの使用を目立つように記載する必要があります
- ⚠libvlc自体を修正した場合、その修正をLGPLの下で公開する必要があります
- ⚠静的リンクや特定の組み込みシナリオでは、VideoLANからの商用ライセンスが必要になる場合があります
LGPLはGPLよりも寛容ですが、コンプライアンスにはリンクと配布要件への注意が必要です。一部の企業法務チームは、オープンソースコンプライアンスリスクを避けるために商用ライセンスを要求しています。
コード例
例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();LibVLCSharp
C#using LibVLCSharp.Shared;
// Initialize VLC engine
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);
// Open webcam via dshow:// URL
// Note: device name must be known in advance
using var media = new Media(libVLC,
"dshow://",
FromType.FromLocation);
// Add recording via sout transcode chain
media.AddOption(
":sout=#transcode{" +
"vcodec=h264,vb=4000," +
"acodec=aac,ab=192" +
"}:duplicate{" +
"dst=std{access=file," +
"mux=mp4," +
"dst=recording.mp4}," +
"dst=display" +
"}");
// Set dshow device (string-based)
media.AddOption(
":dshow-vdev=Integrated Camera");
media.AddOption(
":dshow-adev=Microphone (Realtek Audio)");
// Start — no typed API, errors in VLC log
mediaPlayer.Play(media);
// To stop: mediaPlayer.Stop();
// No progress events, no state machine例2:オーバーレイ + ストリーミング付き画面録画
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;
var capture = new VideoCaptureCore();
// Screen capture source
capture.Video_CaptureDevice = new ScreenCaptureSourceSettings
{
FullScreen = true,
FrameRate = 30,
CaptureCursor = true
};
// Add timestamp overlay
capture.Video_Overlays.Add(new VideoOverlayText
{
Text = "{timestamp}",
Position = new System.Drawing.Point(10, 10),
Font = new System.Drawing.Font("Arial", 14),
Color = System.Drawing.Color.White
});
// Add watermark image
capture.Video_Overlays.Add(new VideoOverlayImage
{
Filename = "logo.png",
Position = new System.Drawing.Point(10, 50),
Opacity = 0.7
});
// Record to file
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings { Bitrate = 8000 }
};
capture.Output_Filename = "screen.mp4";
// Also stream via RTMP
capture.Outputs_Add(new RTMPOutput
{
URL = "rtmp://streaming-server/live/key"
});
await capture.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);
// Screen capture via screen:// URL
using var media = new Media(libVLC,
"screen://",
FromType.FromLocation);
// Configure screen capture
media.AddOption(":screen-fps=30");
media.AddOption(":screen-follow-mouse");
// Record to file via sout
// Note: No overlay support during capture
// Note: No text/image overlay API
media.AddOption(
":sout=#transcode{" +
"vcodec=h264,vb=8000" +
"}:std{" +
"access=file," +
"mux=mp4," +
"dst=screen.mp4" +
"}");
// Cannot simultaneously stream via RTMP
// sout duplicate is fragile and often fails
// for screen capture + streaming combos
// No overlay API — cannot add timestamps
// No watermark support during capture
// No region selection for capture area
mediaPlayer.Play(media);例3:マルチ出力:録画 + ストリーム + プレビュー
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;
var capture = new VideoCaptureCore();
// Set webcam source
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];
// Primary output: MP4 recording
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings { Bitrate = 4000 },
Audio = new AACEncoderSettings { Bitrate = 192 }
};
capture.Output_Filename = "recording.mp4";
// Second output: RTMP stream
capture.Outputs_Add(new RTMPOutput
{
URL = "rtmp://live.server/app/stream_key",
Video = new H264EncoderSettings { Bitrate = 2500 },
Audio = new AACEncoderSettings { Bitrate = 128 }
});
// Third output: Low-res backup
capture.Outputs_Add(new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 1000,
Width = 640,
Height = 360
}
}, "backup.mp4");
// Preview is always available
capture.Video_Preview_Enabled = true;
// All outputs start simultaneously
await capture.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);
// Open webcam
using var media = new Media(libVLC,
"dshow://",
FromType.FromLocation);
media.AddOption(
":dshow-vdev=Integrated Camera");
// Attempt multi-output via sout duplicate
// WARNING: This is fragile and often fails
media.AddOption(
":sout=#transcode{" +
"vcodec=h264,vb=4000," +
"acodec=aac,ab=192" +
"}:duplicate{" +
"dst=std{access=file," +
"mux=mp4," +
"dst=recording.mp4}," +
"dst=std{access=rtmp," +
"mux=flv," +
"dst=rtmp://live.server/app/key}," +
"dst=display" +
"}");
// No independent bitrate per output
// No low-res backup option
// Single transcode shared across all outputs
// If one output fails, all may fail
// No typed API — string errors at runtime
mediaPlayer.Play(media);例4:検出付きRTSP IPカメラ監視
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;
var cameras = new List<VideoCaptureCore>();
var cameraUrls = new[]
{
"rtsp://192.168.1.101/stream",
"rtsp://192.168.1.102/stream",
"rtsp://192.168.1.103/stream",
"rtsp://192.168.1.104/stream"
};
foreach (var url in cameraUrls)
{
var cam = new VideoCaptureCore();
cam.IP_Camera_Source = new IPCameraSourceSettings
{
URL = url,
Type = IPCameraType.RTSP,
ReconnectOnFailure = true,
ReconnectDelay = TimeSpan.FromSeconds(5)
};
// Motion detection
cam.Motion_Detection.Enabled = true;
cam.Motion_Detection.Sensitivity = 70;
cam.OnMotionDetected += (s, e) =>
{
Console.WriteLine($"Motion on {url}");
};
// Barcode detection
cam.Barcode_Reader.Enabled = true;
cam.OnBarcodeDetected += (s, e) =>
{
Console.WriteLine($"Barcode: {e.Value}");
};
// Segmented recording
cam.Output_Format = new MP4Output();
cam.Output_Filename = $"cam_{cameras.Count}.mp4";
cam.SegmentedRecording.Enabled = true;
cam.SegmentedRecording.Duration = TimeSpan.FromHours(1);
cameras.Add(cam);
}
foreach (var cam in cameras)
await cam.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
Core.Initialize();
using var libVLC = new LibVLC();
var cameraUrls = new[]
{
"rtsp://192.168.1.101/stream",
"rtsp://192.168.1.102/stream",
"rtsp://192.168.1.103/stream",
"rtsp://192.168.1.104/stream"
};
var players = new List<MediaPlayer>();
foreach (var url in cameraUrls)
{
var player = new MediaPlayer(libVLC);
var media = new Media(libVLC, url,
FromType.FromLocation);
// Record via sout
media.AddOption(
":sout=#transcode{vcodec=h264,vb=2000}" +
":std{access=file,mux=mp4," +
$"dst=cam_{players.Count}.mp4}}");
// No motion detection — not available
// No barcode detection — not available
// No face detection — not available
// No auto-reconnection on stream failure
// No segmented recording support
// Must implement reconnection manually:
player.EndReached += (s, e) =>
{
// Manual reconnect attempt
// ThreadPool.QueueUserWorkItem(_ =>
// player.Play(media));
};
player.Play(media);
players.Add(player);
}
// No event-driven detection
// No managed surveillance features
// Manual process monitoring required各ソリューションを選ぶタイミング
以下が必要な場合はVideo Capture SDKを選択
- ✓リアルタイムビデオエフェクトとオーバーレイ付きのプロフェッショナルキャプチャ
- ✓単一パイプラインからのマルチ出力録画 + ストリーミング
- ✓モーション、顔、バーコード検出付きの監視システム
- ✓キャプチャ中のリアルタイムオーディオエフェクト(40以上)
- ✓ブロードキャストアプリケーション向けの仮想カメラ出力
- ✓産業用およびプロフェッショナルハードウェアサポート(DeckLink、GigE Vision)
- ✓キャプチャ中のピクチャーインピクチャーとクロマキーコンポジティング
- ✓領域選択とオーバーレイ付きの画面録画
- ✓文字列ベースの設定なしの完全に型付けされた.NET API
以下が必要な場合はLibVLCSharpを選択
- ✓基本的なキャプチャデバイスアクセス付きのメディア再生
- ✓LGPLコンプライアンスが許容される予算ゼロのプロジェクト
- ✓エフェクトや検出なしのシンプルなウェブカメラ録画
- ✓.NET MAUIアプリケーションでのクロスプラットフォームメディア再生
- ✓すでにVLCインフラストラクチャとワークフローを使用しているプロジェクト
- ✓LGPLライセンスと互換性のあるオープンソースプロジェクト
- ✓基本的なビデオキャプチャ機能のクイックプロトタイプ
- ✓再生が主でキャプチャが副次的なアプリケーション
デプロイメントと配布
Video Capture SDKのデプロイメント
- ✓NuGetパッケージにすべてのネイティブ依存関係を含む
- ✓単一のNuGet参照 — 外部ツールのインストール不要
- ✓商用ライセンスでロイヤリティフリーの再配布
- ✓xcopy / MSIX / ClickOnceデプロイメントサポート
- ✓Dockerコンテナサポート(LinuxおよびWindows)
- ✓LGPL義務なし — プロプライエタリソフトウェアに安全
LibVLCSharpのデプロイメント
- ⚠NuGetパッケージ利用可能(LibVLCSharp + VideoLAN.LibVLCプラットフォームパッケージ)
- ⚠プラットフォーム固有のVLCネイティブライブラリをバンドルする必要あり(約80-150 MB)
- ⚠LGPLコンプライアンスには動的リンクとライセンス通知が必要
- ⚠ユーザーがlibvlcライブラリを置き換えるメカニズムを提供する必要あり
- ⚠プラットフォームパッケージがネイティブライブラリの配布を処理
- ⚠静的リンクにはVideoLANの商用ライセンスが必要
判断マトリックス
| 要件 | Video Capture SDK | LibVLCSharp | 勝者 |
|---|---|---|---|
| プロフェッショナルキャプチャアプリケーション | Video Capture SDK | ||
| マルチ出力(録画 + ストリーム) | Video Capture SDK | ||
| 検出付き監視 | Video Capture SDK | ||
| キャプチャ中のリアルタイムエフェクト | Video Capture SDK | ||
| 仮想カメラ出力 | Video Capture SDK | ||
| 産業用/プロフェッショナルハードウェア | Video Capture SDK | ||
| PiP/クロマキーコンポジティング | Video Capture SDK | ||
| キャプチャ中の40以上のオーディオエフェクト | Video Capture SDK | ||
| オーバーレイ付き画面録画 | Video Capture SDK | ||
| 予算$0(オープンソース) | LibVLCSharp | ||
| シンプルなウェブカメラ録画 | LibVLCSharp | ||
| LGPL互換プロジェクト | LibVLCSharp |
結論
Video Capture SDK .NET
Video Capture SDKは、プロフェッショナルなビデオキャプチャワークフローに優れた専用設計のキャプチャエンジンです。型付き.NET API、内蔵エフェクトパイプライン、マルチ出力アーキテクチャ、検出機能、プロフェッショナルハードウェアサポートにより、キャプチャ品質と機能が重要なアプリケーションにとって明確な選択肢です。商用ライセンスにより、企業配布のためのクリーンなIP(知的財産)が保証されます。
LibVLCSharp
LibVLCSharpは、キャプチャデバイスも開くことができる優れたメディア再生ライブラリです。アプリケーションが主に再生を目的とし、時折シンプルな録画を行う場合、LibVLCSharpは有能で無料のオプションです。ただし、文字列ベースのsout設定、リアルタイムエフェクトの欠如、検出機能の不在は、プロフェッショナルなキャプチャアプリケーションが大幅に多くのカスタム開発を必要とすること、またはLibVLCSharpだけでは単に構築できないことを意味します。
The Reality
キャプチャ中心のアプリケーションを構築するほとんどの.NET開発者にとって、Video Capture SDKはLibVLCSharpが提供するように設計されたことのないプロフェッショナルグレードの機能を提供します。LibVLCSharpは再生ライブラリとして輝き、予算が主な制約である場合の基本的なキャプチャには合理的な選択です。アプリケーションにエフェクト、検出、マルチ出力、またはプロフェッショナルハードウェアサポートが必要な場合、Video Capture SDKが実用的な選択肢です。
