開発環境:visual studio2015
開発言語:C#.net
1.準備
下準備としてVLC公式サイトから下記をダウンロードしインストールしておきます。
【https://www.videolan.org/vlc/download-windows.ja.html】
2.【Vlc.DotNet.Forms】の設定
①【visual studio】でプロジェクトを作成し
【ツール】→【Nugetパッケージマネージャー】→【ソリューションのNugetパッケージの管理】を選択
②検索ボックスに【VLC】と入力すると【Vlc.DotNet.Forms】があるのでこれを選択し【インストールする】
③【ツールボックス】タブを右クリックから、【アイテムの選択】をクリックする。
【ツールボックスアイテムの選択】ウィンドウが表示されるので
【.net Frameworkコンポーネント】タブにある【参照】ボタンをクリックする。
【ファイル選択ダイアログ】が表示されるので、今回作成したプロジェクトフォルダから
【Vlc.DotNet.Forms.dll】を選択する。
私の環境では【../packages/Vlc.DotNet.Forms.3.0.0/lib/net40】にありました。
④【VlcControl】が追加されるのでフォームに貼り付けます。
3.スクリプト
スクリプトは下記のとおり
ストリーミングのテストとして下記を使わせてもらいました。
【rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov】
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace vlcPlayer { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { vlcControl1.Play(new Uri("rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov")); } private void vlcControl1_VlcLibDirectoryNeeded(object sender, Vlc.DotNet.Forms.VlcLibDirectoryNeededEventArgs e) { e.VlcLibDirectory = new System.IO.DirectoryInfo(@"C:\Program Files (x86)\VideoLAN\VLC"); } } }
4.結果
無事ストリーミング再生できることが確認出来ました。
結構簡単に出来たと思った矢先問題発生!
ネットワーク状態によって接続が切れた場合
勝手に再接続はしてくれないようです。
運用上、人の操作が難しいためそこは自動でやってくれないと・・・
ステータスチェンジのイベントがあればいいのですが
見た感じなさそうだし、ドキュメントも不親切だしで
どうしようか悩んだ結果
Timerでポーリングすることにしました。
【vlc】のステータスは下記のとおり変化するようです。
①デフォルト状態:NothingSpecial
②接続開始:Opening
③ストリーミング中:Playing
④接続が切れる:Ended
で、接続が切れたときに再度再生開始とするようにしました。
private void timer1_Tick(object sender, EventArgs e) { if (vlcControl1.State == Vlc.DotNet.Core.Interops.Signatures.MediaStates.Ended) { vlcControl1.Play(new Uri("rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov")); } }