Last updated: 2026年1月
Media Player SDK .NET vs LibVLCSharp
プロフェッショナル .NET ビデオプレーヤー比較
DVDナビゲーション、オーディオエフェクト、仮想カメラ出力、モーション検出を備えたLibVLCSharpの代替をお探しですか?この比較では、.NETビデオプレーヤー開発におけるVisioForge Media Player SDK .NETとLibVLCSharpを評価します — WPF、WinForms、Avalonia、クロスプラットフォーム再生シナリオをカバーしています。DirectShowベースのWindowsプレーヤーが必要な場合でも、GStreamerベースのクロスプラットフォームソリューションが必要な場合でも、このガイドは適切な.NETメディアプレーヤーSDKの選択をサポートします。
エグゼクティブサマリー
| 側面 | Media Player SDK .NET | LibVLCSharp |
|---|---|---|
| アーキテクチャ | デュアルエンジン(DirectShow + GStreamer) | libvlc Cインターロップ経由のモノリシックVLCエンジン |
| エンジン | MediaPlayerCore(Windows)+ MediaPlayerCoreX(クロスプラットフォーム) | 単一LibVLCコア |
| 価格 | EUR 250-500/年またはEUR 750-1,500永久 | 無料(LGPL 2.1) |
| 最適な用途 | プロフェッショナルアプリ、DVD、エフェクト、ブロードキャスト | シンプルな再生、最も幅広いフォーマットサポート |
| 学習曲線 | 中程度(2つのエンジン、豊富なAPI) | 簡単(最小限のAPI) |
アーキテクチャ詳細分析
Media Player SDK .NET — デュアルエンジン設計
2つの独立したエンジンが単一のSDKに含まれています。MediaPlayerCore(Windows)はDirectShow / Media Foundation / FFMPEGおよびVLCデコーダーを提供し、DVDナビゲーション、プレイリスト、PiP、OSD、仮想カメラ、NDI出力、40以上のオーディオエフェクトを備えています。MediaPlayerCoreX(クロスプラットフォーム)はGStreamerベースのパイプラインを使用し、Windows、macOS、Linux、iOS、Android向けのasync-first APIを提供します。
- ▶Windows上のDirectShow / Media Foundation / FFMPEGおよびVLCデコーダー
- ▶DVDナビゲーション、プレイリスト、PiP、OSD、仮想カメラ、NDI出力
- ▶DirectSoundエフェクトを含む40以上のオーディオエフェクト
- ▶Source_Mode経由で選択可能な複数の再生エンジン
- ▶async-first APIを備えたGStreamerベースのクロスプラットフォームパイプライン
- ▶VR/360ビデオとリアルタイムビデオ/オーディオエフェクト
LibVLCSharp — 単一VLCエンジン
LibVLCSharpはLibVLC(VLCメディアプレーヤーエンジン)をラップし、プラットフォーム間で統一された単一のAPIを提供します。処理能力は限定的ですが再生に特化しており、VLCの実績あるデコーダースタックと最も幅広いフォーマット互換性の恩恵を受けています。
- ▶LibVLC(VLCメディアプレーヤーエンジン)をラップ
- ▶すべてのプラットフォームで統一された単一API
- ▶限定的な処理能力で再生に特化
- ▶実戦で検証済みのVLCデコーダースタック
- ▶Chromecastとネットワークブラウジングのサポート
- ▶大規模なコミュニティと豊富なドキュメント
主要なアーキテクチャの違い
| 側面 | Media Player SDK | LibVLCSharp |
|---|---|---|
| エンジン設計 | デュアルエンジン:DirectShowベース(Windows)+ GStreamerベース(クロスプラットフォーム) | 単一モノリシックVLCエンジン |
| オーディオ処理 | バンドごとのEQ、コンプレッサー、リバーブ、コーラスを備えた40以上の型付きオーディオエフェクト | 基本的なEQプリセットのみ |
| ビデオ処理 | CPU + GPUエフェクトパイプライン、クロマキー、PiP、OSDオーバーレイ | 文字列オプション経由の基本的なVLCフィルター |
| 出力機能 | 仮想カメラ、NDI、マルチスクリーンディスプレイ | Chromecast、ネットワークブラウジング(SMB、FTP、UPnP) |
| 検出 | 顔、モーション、AIオブジェクト、バーコード/QR検出が内蔵 | 検出機能なし |
| APIスタイル | IntelliSense対応の強い型付け.NET API | シンプルなAPI — C# 3行で再生 |
機能ごとの比較
再生
| 機能 | Media Player SDK | LibVLCSharp |
|---|---|---|
| ファイル再生(500+フォーマット) | ✅ | ✅(VLC経由で最も幅広い) |
| ネットワークストリーミング(RTSP、RTMP、HLS、DASH) | ✅ | ✅ |
| DVDナビゲーション(メニュー、チャプター、タイトル) | ✅ | ✅ |
| Blu-rayメニュー | ❌ | ✅ |
| 字幕(SRT、SSA/ASS、WebVTT、VobSub、PGS) | ✅ | ✅ |
| 360 / VRビデオ | ✅ | ✅ |
| HDR再生 | ⚠️ | ✅(トーンマップ付き) |
| MIDI再生 | ✅ | ❌ |
| 暗号化メディア | ✅ | ❌ |
| SRT / NDI入力 | ✅ | ❌ |
オーディオ
| 機能 | Media Player SDK | LibVLCSharp |
|---|---|---|
| オーディオエフェクト(40+ EQ、リバーブ、コーラス、3D) | ✅ | ⚠️(基本的なEQのみ) |
| プロフェッショナルVUメーター + FFT | ✅ | ❌ |
| オーディオエンハンサー(正規化、オートゲイン) | ✅ | ❌ |
| オーディオミキシング(外部トラック追加) | ✅ | ❌ |
| チャンネルマッパー | ✅ | ❌ |
ビデオ処理
| 機能 | Media Player SDK | LibVLCSharp |
|---|---|---|
| リアルタイムビデオエフェクト(CPU + GPU) | ✅ | ⚠️(基本的なVLCフィルター) |
| クロマキー(グリーンスクリーン) | ✅ | ❌ |
| AIビデオアップスケーリング | ✅ | ❌ |
| LUTカラーグレーディング | ✅ | ❌ |
| ピクチャーインピクチャー | ✅ | ❌ |
| OSDオーバーレイシステム(マルチレイヤー) | ✅ | ⚠️(基本的なマーキー) |
| ビデオコンポジション | ✅ | ❌ |
出力
| 機能 | Media Player SDK | LibVLCSharp |
|---|---|---|
| 仮想カメラ出力 | ✅ | ❌ |
| NDI出力 | ✅ | ❌ |
| マルチスクリーンディスプレイ | ✅ | ❌ |
検出と分析
| 機能 | Media Player SDK | LibVLCSharp |
|---|---|---|
| 顔検出 | ✅ | ❌ |
| モーション検出 | ✅ | ❌ |
| AIオブジェクト検出 | ✅ | ❌ |
| バーコード / QRスキャン | ✅ | ❌ |
再生コントロール
| 機能 | Media Player SDK | LibVLCSharp |
|---|---|---|
| 可変速度 | ✅ | ✅ |
| フレームステッピング(前進 + 後退) | ✅ | ⚠️(前進のみ) |
| 逆再生 | ✅ | ❌ |
| フレーム精度シーク | ✅ | ⚠️(キーフレームベース) |
| プレイリスト管理(内蔵) | ✅ | ⚠️(手動) |
| イベント付きループ | ✅ | ✅ |
| セグメント再生 | ✅ | ⚠️ |
フレームキャプチャ
| 機能 | Media Player SDK | LibVLCSharp |
|---|---|---|
| ファイルへのスナップショット(JPEG、PNG、BMP) | ✅ | ✅ |
| Bitmap / SKBitmap / byte[]へのスナップショット | ✅ | ⚠️ |
ネットワーク
| 機能 | Media Player SDK | LibVLCSharp |
|---|---|---|
| Chromecast | ❌ | ✅ |
| ネットワークブラウジング(SMB、FTP、UPnP) | ❌ | ✅ |
| SSDP / UPnPディスカバリー | ❌ | ✅ |
プラットフォームサポート
オペレーティングシステム互換性
| プラットフォーム | Media Player SDK | LibVLCSharp |
|---|---|---|
| Windows 7-11 | ✅ | ✅ |
| macOS 10.15+ | ✅ | ✅(LibVLCは10.7+をサポート) |
| Linux | ✅ | ✅ |
| Android 7.0+ | ✅ | ✅(LibVLCは2.3+をサポート) |
| iOS 13+ | ✅ | ✅(LibVLCは8.4+をサポート) |
| tvOS | ❌ | ✅ |
UIフレームワーク互換性
| フレームワーク | Media Player SDK | LibVLCSharp |
|---|---|---|
| WinForms | ✅ | ✅ |
| WPF | ✅ | ✅ |
| WinUI 3 | ✅ | ⚠️(コミュニティ) |
| .NET MAUI | ✅ | ✅ |
| Avalonia | ✅ | ✅ |
| Uno Platform | ✅ | ⚠️(限定的) |
| Xamarin | ✅ | ✅ |
| Console | ✅ | ✅ |
価格比較
Media Player SDK .NET 価格
1開発者 — ファイル/ストリーム再生、字幕、基本エフェクト
1開発者 — + ネットワークストリーミング(RTSP、RTMP、HLS、NDI)、モーション検出、HWアクセラレーション
1開発者 — + VR/360ビデオ
無制限の開発者、永久ライセンス、チーム全体
無制限の開発者、永久ライセンス、チーム全体
無制限の開発者、永久ライセンス、チーム全体
All licenses include:
- ✓ ロイヤリティフリー配布
- ✓ ランタイム料金なし
- ✓ すべてのソースコード例
- ✓ 非商用利用は無料(ライセンスキーが必要)
- ✓ 優先チケットサポート
LibVLCSharp コスト
LGPL 2.1ライセンス — 動的リンクが必要
VideoLANからの有料コンサルティングが利用可能
LGPLコンプライアンスの考慮事項
LibVLCSharpとlibvlcはLGPL 2.1でライセンスされています。これは、LGPLの条件に準拠する限り、商用プロプライエタリソフトウェアで使用できることを意味します。主な要件は次のとおりです:
- ⚠libvlcに動的リンクする必要があります(静的リンク不可)
- ⚠ユーザーがLibVLC DLLを修正版に置き換えることを許可する必要があります
- ⚠LGPLライセンスのコピーを含め、libvlcの使用を記載する必要があります
- ⚠VLCコードを変更してクローズドソースにすることはできません
- ⚠一部の企業法務チームは、LGPLコンプライアンスリスクを回避するために商用ライセンスを要求します
LGPLはGPLよりも寛容ですが、コンプライアンスにはリンクと配布の要件に注意が必要です。Media Player SDKはLGPL動的リンク制約なしでロイヤリティフリー配布を提供します。
コード例
例1:シンプルなファイル再生
Media Player SDK (MediaPlayerCoreX)
C#var player = new MediaPlayerCoreX(videoView);
var source = await UniversalSourceSettingsV2.CreateAsync(
new Uri("video.mp4"));
await player.OpenAsync(source);
await player.PlayAsync();
// Position and duration
var duration = await player.DurationAsync();
await player.Position_SetAsync(
TimeSpan.FromSeconds(30));LibVLCSharp
C#Core.Initialize();
var libVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(libVLC);
mediaPlayer.Play(
new Media(libVLC, "video.mp4",
FromType.FromPath));
// Position and duration
var duration = mediaPlayer.Length; // ms
mediaPlayer.Time = 30000; // ms例2:ナビゲーション付きDVD
Media Player SDK (MediaPlayerCore)
C#var player = new MediaPlayerCore(videoView);
player.Source_Mode = MediaPlayerSourceMode.DVD_DS;
player.Playlist_Clear();
player.Playlist_Add(@"D:\");
await player.PlayAsync();
// Save bookmark for later resume
int savedTitle = player.DVD_Title_GetCurrent();
int savedChapter = player.DVD_Chapter_GetCurrent();
var savedPosition = await player.Position_GetAsync();
Console.WriteLine(
$"Bookmarked: Title {savedTitle}, " +
$"Chapter {savedChapter}, " +
$"Position {savedPosition}");
// Resume from saved bookmark
await player.DVD_Title_PlayAsync(savedTitle);
await player.DVD_Chapter_PlayAsync(savedChapter);
await player.Position_SetAsync(savedPosition);
// Navigate using title/chapter jumps
await player.DVD_Menu_ShowAsync(DVDMenu.Title);
int totalChapters = player.DVD_Chapter_GetCount();
await player.DVD_Chapter_PlayAsync(
Math.Min(5, totalChapters));LibVLCSharp
C#Core.Initialize();
var libVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(libVLC);
mediaPlayer.Play(
new Media(libVLC, "dvd:///D:",
FromType.FromLocation));
// DVD navigation via mediaPlayer methods
mediaPlayer.Navigate(NavigateMode.Up);
mediaPlayer.Navigate(NavigateMode.Activate);
// Less granular control than Media Player SDK
// No bookmark/resume API
// Limited chapter/title management例3:エフェクト付きオーディオ処理
Media Player SDK (MediaPlayerCore)
C#var player = new MediaPlayerCore(videoView);
player.Playlist_Clear();
player.Playlist_Add("podcast.mp3");
player.Audio_Effects_Enabled = true;
// Register 10-band EQ and compressor
player.Audio_Effects_Add(-1,
AudioEffectType.Equalizer, "gfxEq",
true, TimeSpan.Zero, TimeSpan.Zero);
player.Audio_Effects_Add(-1,
AudioEffectType.Compressor, "comp",
true, TimeSpan.Zero, TimeSpan.Zero);
await player.PlayAsync();
// Custom per-band EQ values (dB)
float[] bands = { -4f, -2f, 0f, 3f, 5f,
6f, 5f, 4f, 2f, -1f };
for (int i = 0; i < bands.Length; i++)
player.Audio_Effects_Equalizer_Band_Set(
-1, "gfxEq", i, bands[i]);
// Compressor for consistent loudness
player.Audio_Effects_Compressor(-1, "comp",
gain: 5f, threshold: -20f, ratio: 4f,
attack: 10f, release: 200f);
// Query peak levels
var levels = player.Audio_Channel_GetLevels();
Console.WriteLine(
$"L: {levels.Left:F1} dB, " +
$"R: {levels.Right:F1} dB");LibVLCSharp
C#Core.Initialize();
var libVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(libVLC);
mediaPlayer.Play(
new Media(libVLC, "music.mp3",
FromType.FromPath));
// Basic equalizer only
var eq = new Equalizer(1); // preset index
mediaPlayer.SetEqualizer(eq);
// No VU meter
// No FFT spectrum analysis
// No 3D sound
// No reverb, chorus, or compressor
// No per-band EQ control
// No audio level monitoring例4:仮想カメラ + NDI出力
Media Player SDK (MediaPlayerCore)
C#var player = new MediaPlayerCore(videoView);
player.Playlist_Clear();
player.Playlist_Add("presentation.mp4");
// Output to virtual camera (Zoom, Teams, OBS)
player.Virtual_Camera_Output_Enabled = true;
// Output to NDI network
player.NDI_Output = new NDIOutput
{
Name = "Studio Feed"
};
// Add OSD overlay
player.OSD_Enabled = true;
player.OSD_Layers_Create(
0, 0, 1920, 1080, true);
player.OSD_Layers_Draw_Text(
0, 10, 10, "LIVE",
new Font("Arial", 36), Color.Red);
player.OSD_Layers_Render();
await player.PlayAsync();LibVLCSharp
C#// Virtual camera output: NOT AVAILABLE
// NDI output: NOT AVAILABLE
// OSD overlay: Limited to VLC marquee
Core.Initialize();
var libVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(libVLC);
var media = new Media(libVLC,
"presentation.mp4",
FromType.FromPath);
media.AddOption(":sub-filter=marq");
media.AddOption(":marq-marquee=LIVE");
mediaPlayer.Play(media);
// No virtual camera
// No NDI
// No rich OSD layers例5:モーションと顔検出
Media Player SDK (MediaPlayerCore)
C#var player = new MediaPlayerCore(videoView);
player.Playlist_Clear();
player.Playlist_Add("lobby_feed.mp4");
// Face detection with highlight
player.Face_Tracking = new FaceTrackingSettings
{
Enabled = true,
Highlight = true,
ScaleFactor = 1.1,
MinNeighbors = 5
};
player.OnFaceDetected += (s, e) =>
Console.WriteLine(
$"Detected {e.Count} face(s)");
// AI object detection
player.AI_ObjectDetection =
new AIObjectDetectionSettings
{
Enabled = true,
Confidence = 0.6f,
Classes = new[] {
"person", "car", "bag" }
};
player.OnAIObjectDetected += (s, e) =>
Console.WriteLine(
$"AI: {e.Label} ({e.Confidence:P0})");
await player.PlayAsync();LibVLCSharp
C#// Motion detection: NOT AVAILABLE
// Face detection: NOT AVAILABLE
// AI object detection: NOT AVAILABLE
// Barcode scanning: NOT AVAILABLE
// Would need external libraries
// (OpenCV, ZXing, etc.) processing
// frames manually
Core.Initialize();
var libVLC = new LibVLC();
var mediaPlayer = new MediaPlayer(libVLC);
mediaPlayer.Play(
new Media(libVLC, "lobby_feed.mp4",
FromType.FromPath));
// No built-in detection
// No event-driven analysis
// Manual frame extraction required各ソリューションを選ぶタイミング
次の場合はMedia Player SDKを選択
- ✓フルメニューナビゲーション、チャプター、ブックマーク付きのDVDアプリケーション
- ✓40以上のエフェクト、VUメーター、FFTスペクトラムを備えたプロフェッショナルオーディオ
- ✓Zoom、Teams、OBS向けの仮想カメラ出力
- ✓ブロードキャストおよび制作ワークフロー向けのNDI出力
- ✓マルチスクリーンコンフィデンスモニターとデジタルサイネージ
- ✓モーション、顔、AIオブジェクト検出による監視
- ✓ピクチャーインピクチャー合成とクロマキープレビュー
- ✓プロフェッショナルレビュー向けのフレーム精度シークと逆再生
- ✓ビデオストリームでのバーコード/QRスキャン
次の場合はLibVLCSharpを選択
- ✓シンプルなデスクトップまたはモバイルメディアプレーヤーアプリケーション
- ✓IPTVおよびストリーミングビューアーアプリケーション
- ✓Chromecastストリーミングとネットワークブラウジング(SMB、FTP、UPnP)
- ✓予算ゼロまたはオープンソースプロジェクト
- ✓VLCデコーダースタックによる最大のコーデックとフォーマットカバレッジ
- ✓最小限の統合作業 — C# 3行でビデオを再生
- ✓tvOSサポートと幅広いレガシーOS互換性
- ✓大規模なコミュニティと豊富なStackOverflowコンテンツ
デプロイメントと配布
Media Player SDK デプロイメント
- ✓NuGetパッケージにすべての依存関係が含まれる
- ✓Xcopyデプロイメントをサポート
- ✓商用ライセンスによるロイヤリティフリー配布
- ✓ランタイム料金なし
- ✓LGPL義務なし — プロプライエタリソフトウェアに安全
- ✓アプリサイズへの影響:約50-100 MB
LibVLCSharp デプロイメント
- ⚠NuGetパッケージが利用可能(LibVLCSharp + VideoLAN.LibVLCプラットフォームパッケージ)
- ⚠プラットフォームごとにLibVLC DLLを含める必要がある
- ⚠LGPLは動的リンクを要求 — ユーザーがVLC DLLを置き換えられる必要がある
- ⚠LGPLライセンス通知を含める必要がある
- ⚠プラットフォームパッケージがネイティブライブラリの配布を処理
- ⚠アプリサイズへの影響:約40-80 MB
意思決定マトリックス
| 要件 | Media Player SDK | LibVLCSharp | 勝者 |
|---|---|---|---|
| シンプルなメディアプレーヤー | LibVLCSharp | ||
| DVDキオスク / トレーニングアプリ | Media Player SDK | ||
| オーディオエフェクト / EQ / VUメーター | Media Player SDK | ||
| ストリーミング用仮想カメラ | Media Player SDK | ||
| NDIブロードキャスト出力 | Media Player SDK | ||
| マルチスクリーンディスプレイ | Media Player SDK | ||
| 検出付き監視 | Media Player SDK | ||
| IPTV / ストリーミングビューアー | LibVLCSharp | ||
| Chromecast / ネットワークブラウジング | LibVLCSharp | ||
| デジタルサイネージ(OSD付き) | Media Player SDK | ||
| 予算ゼロ | LibVLCSharp | ||
| オープンソースプロジェクト | LibVLCSharp | ||
| PiP / クロマキー合成 | Media Player SDK | ||
| バーコード / QRスキャン | Media Player SDK |
結論
Media Player SDK .NET
フルメニューナビゲーション付きDVD再生、Zoom/Teams/OBS向け仮想カメラ出力、AI搭載の顔およびオブジェクト検出、40以上のリアルタイムオーディオエフェクト、ブロードキャスト向けNDI出力、ピクチャーインピクチャー合成、フレーム精度シークと逆再生、FFTスペクトラム付きプロフェッショナルVUメーター、クロマキーとAIビデオアップスケーリング、マルチスクリーンディスプレイ、LGPL制約なしのロイヤリティフリー配布が必要な場合はMedia Player SDKを選択してください。年間ライセンスはEUR 250/年から、ワンタイムの永久オプションも利用可能です。
LibVLCSharp
VLCデコーダースタックによる最大のコーデックとフォーマットカバレッジ、ゼロコストのLGPLライセンス再生、Chromecastストリーミングとネットワークメディアブラウジング(SMB、FTP、UPnP)、C# 3行での最小限の統合作業、tvOSサポートと幅広いレガシーOS互換性、豊富なStackOverflowコンテンツと実戦検証済みの安定性を持つ大規模なコミュニティが必要な場合はLibVLCSharpを選択してください。
The Reality
簡単なメディアプレーヤー、ストリーミングクライアント、IPTVアプリケーションには、LibVLCSharpがより少ないコードとゼロコストで対応します。エフェクト、検出、DVDキオスク、ブロードキャスト出力を必要とする機能重視のアプリケーションには、Media Player SDKが通常唯一の実行可能なオプションです。一部のチームは両方のSDKを組み合わせています — 基本的な再生画面にはLibVLCSharp、エフェクト、検出、またはブロードキャスト出力が必要な画面にはMedia Player SDKを使用します。
