[C#][WPF]VideoLan DotNet for WinForm, WPF, Silverlight 5(RTSPストリームを再生する)

1.)概要

WPFでビデオデータを再生する場合は、MediaElementを使うのが一般的ですが扱えるビデオ形式に制限があり、再生したいデータが再生できずに困ることがあります。
VLC Media Playerは多くのビデオ形式や配信形式を扱えるプレイヤーです。
このプレイヤーをC#からコントロールし映像/音声を表示できるモジュールが"VideoLan DotNet for WinForm, WPF & Silverlight 5"です。
VLC_001.jpg

今回は、このモジュールを使用して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)を追加します。
VLC_002.jpg
(3)名前空間の設定を行います。
using Vlc.DotNet.Core;
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;
(4)VLCがインストールされているフォルダを設定します。
 コンストラクタでVLCのインストール先を設定します。
 このコードでは、実行ディレクトリのサブディレクトリ".\lib"にVLCがあるように設定しています。
public MainWindow()
{
// Set libvlc.dll and libvlccore.dll directory path
VlcContext.LibVlcDllsPath = @".\lib";
// Set the vlc plugins directory path
VlcContext.LibVlcPluginsPath = @".\lib\plugins";
}
(5)XAMLの設定を行います。
//アセンブリの設定を行う
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}" />
(6)Openを選択した時RTSPストリームを読み込むようにURLを設定します。
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 件のコメント :

コメントを投稿