1.)概要
WPFでビデオデータを再生する場合は、MediaElementを使うのが一般的ですが扱えるビデオ形式に制限があり、再生したいデータが再生できずに困ることがあります。VLC Media Playerは多くのビデオ形式や配信形式を扱えるプレイヤーです。
このプレイヤーをC#からコントロールし映像/音声を表示できるモジュールが"VideoLan DotNet for WinForm, WPF & Silverlight 5"です。
今回は、このモジュールを使用してRTSPストリームを再生してみます。(この記事は、VideoLanDotNetのサンプルコードを使用しています。)
2.)準備
公式サイト(http://vlcdotnet.codeplex.com/)から最新モジュールをダウンロードします。このモジュールはVLC Ver.1.2以降を必要としますので、VLCを公式サイト(http://www.videolan.org/vlc/)からダウンロードします。※この記事ではVLC Ver.2.1.0で動作を確認しています。
3.)プロジェクトの作成
(1)VisualStudioを起動し新規作成でWPFアプリケーションのプロジェクトを作成します。(2)参照設定にVideoLan DotNetのモジュール(Vlc.DotNet.Core.dll, Vlc.DotNet.Core.Interops.dll, Vlc.DotNet.Wpf.dll)を追加します。
(3)名前空間の設定を行います。
using Vlc.DotNet.Core;(4)VLCがインストールされているフォルダを設定します。
using Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media;
using Vlc.DotNet.Core.Interops.Signatures.LibVlc.MediaListPlayer;
using Vlc.DotNet.Core.Medias;
using Vlc.DotNet.Wpf;
コンストラクタでVLCのインストール先を設定します。
このコードでは、実行ディレクトリのサブディレクトリ".\lib"にVLCがあるように設定しています。
public MainWindow()(5)XAMLの設定を行います。
{
// Set libvlc.dll and libvlccore.dll directory path
VlcContext.LibVlcDllsPath = @".\lib";
// Set the vlc plugins directory path
VlcContext.LibVlcPluginsPath = @".\lib\plugins";
}
//アセンブリの設定を行う(6)Openを選択した時RTSPストリームを読み込むようにURLを設定します。
xmlns:Wpf="clr-namespace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf"
//VideoLan DotNetのインスタンス定義
<Wpf:VlcControl x:Name="myVlcControl" />
//イメージの定義
<Image Source="{Binding ElementName=myVlcControl, Path=VideoSource}" />
private void ButtonOpenClick(object sender, RoutedEventArgs e)
{
myVlcControl.Stop();
if (myVlcControl.Media != null)
{
myVlcControl.Media.ParsedChanged -= MediaOnParsedChanged;
}
//ここにストリームのURLを設定する
myVlcControl.Media = new LocationMedia(@"rtsp://192.168.78.3:554/channel1");
myVlcControl.Play();
}
4.)サンプルコード
サンプルコードは以下からダウンロードできます。VLC_RTSP_StreamPlayer.zip
実行方法
(1)プロジェクトをコンパイルする
(2)作成された実行ファイルのあるフォルダに"lib"フォルダを作成する
(3)"lib"フォルダにVLCのバイナリをコピーする
(必要なのはVLC内pluginsフォルダ全部、axvlc.dll,libvlc.dll, libvlccore.dll, npvlc.dll)
0 件のコメント :
コメントを投稿