<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      前言

      本文主要講述,在WPF中,借助Vlc.DotNet調(diào)用VLC類庫,實(shí)現(xiàn)視頻播功能,下面我們先來做開發(fā)前的準(zhǔn)備工作。

      準(zhǔn)備工作

      首先,我們創(chuàng)建一個(gè)項(xiàng)目WpfVLC,然后,進(jìn)入Neget搜索Vlc.DotNet,得到如下界面:



      我們選擇Vlc.DotNet.Wpf,點(diǎn)擊安裝(這里我已經(jīng)安裝了,所以圖中顯示為卸載)。

      然后,我們?nèi)LC官網(wǎng),下載VLC播放器。

      VLC官網(wǎng):http://www.videolan.org/ <http://www.videolan.org/>

      因?yàn)槲业碾娔X是64位的,所以我下載64位的VLC版本,如下圖:



      ?下載完成后,正常安裝即可,下載的文件截圖如下:



      安裝完成后,我們找到安裝的具體位置并打開,如下圖:



      在文件夾內(nèi)我們找到文件libvlc.dll,libvlccore.dll和文件夾plugins,然后將他們復(fù)制出來。

      現(xiàn)在我們回到我們剛剛創(chuàng)建的項(xiàng)目WpfVLC,進(jìn)入文件目錄,打開debug文件夾,然后我們在其目錄下創(chuàng)建一個(gè)文件夾libvlc,如下:



      然后,在在liblic下建立一個(gè)文件夾win-x64,如下:



      再然后,我們將剛剛復(fù)制的vlc的三個(gè)文件,放到這個(gè)文件夾下,如下:



      到此,我們的準(zhǔn)備工作就完成了,現(xiàn)在開始編碼。

      使用Vlc.DotNet播放視頻

      現(xiàn)在,我們進(jìn)入項(xiàng)目的代碼開發(fā)。

      首先我們將項(xiàng)目設(shè)置為64位項(xiàng)目,因?yàn)槲覀兪褂玫腣LC是64的。



      然后,我們打開MainWindow頁面。

      在頁面命名空間引入的地方加入Vlc.DotNet的命名空間。
      xmlns:vlc="clr-namespace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf"
      接著,我們在頁面布局中加入VlcControl控件和打開文件、播放、停止的按鈕,如下:
      <DockPanel DockPanel.Dock="Bottom"> <StackPanel Height="50"
      DockPanel.Dock="Bottom" Orientation="Horizontal"> <Button Name="btnOpen"
      Content="打開文件" Click="open_Click" Width="80"></Button> <Button Name="btnPause"
      Content="暫停" Click="pause_Click" Width="50"></Button> <Button Name="btnStop"
      Content="停止" Click="stop_Click" Width="50"></Button> </StackPanel> </DockPanel>
      <vlc:VlcControl x:Name="VlcControl" />
      然后,我們編寫xaml.cs文件的代碼,如下:
      public partial class MainWindow : Window { private string filePath; public
      MainWindow() { InitializeComponent(); } private void Window_Loaded(object
      sender, RoutedEventArgs e) { var currentAssembly = Assembly.GetEntryAssembly();
      var currentDirectory = new FileInfo(currentAssembly.Location).DirectoryName;
      var libDirectory = new DirectoryInfo(System.IO.Path.Combine(currentDirectory,
      "libvlc", IntPtr.Size == 4 ? "win-x86" : "win-x64"));
      this.VlcControl.SourceProvider.CreatePlayer(libDirectory); } private void
      open_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new
      OpenFileDialog(); ofd.Multiselect = false; ofd.Title = "請選擇視頻文件"; var result =
      ofd.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) {
      filePath = ofd.FileName; try { btnPause.Content = "暫停";
      this.VlcControl.SourceProvider.MediaPlayer.Play(new Uri(filePath)); } catch
      (Exception ex) { } } } public void pause_Click(object sender, RoutedEventArgs
      e) { if (btnPause.Content.ToString() == "播放") { btnPause.Content = "暫停";
      this.VlcControl.SourceProvider.MediaPlayer.Play(); } else { btnPause.Content =
      "播放"; this.VlcControl.SourceProvider.MediaPlayer.Pause(); } } private void
      stop_Click(object sender, RoutedEventArgs e) { new Task(() => {
      this.VlcControl.SourceProvider.MediaPlayer.Stop();//這里要開線程處理,不然會(huì)阻塞播放
      }).Start(); } }
      這樣,我們就完成了最基本的視頻播放、暫停、停止的功能。

      可以看到,播放、暫停、停止的代碼非常簡單,就是調(diào)用控件的play,pause,stop函數(shù)即可。

      因?yàn)閂LC非常優(yōu)秀,可以支持多種格式的文件播放,所以我們寫的這個(gè)播放器也就可以打開任意類型的視頻文件。

      播放界面如下:



      現(xiàn)在,加入Slider控制播放進(jìn)度和音量。

      Slider樣式,參考如下文章:

      WPF依賴屬性的正確學(xué)習(xí)方法 <https://www.cnblogs.com/kiba/p/11149147.html>

      WPF滑塊控件(Slider)的自定義樣式 <https://www.cnblogs.com/kiba/p/11253686.html>

      VlcControl控制播放進(jìn)度的方法很簡單,如下:
      private void Slider1_DragCompleted(object sender,
      System.Windows.Controls.Primitives.DragCompletedEventArgs e) { var position =
      (float)(slider1.Value / slider1.Maximum); if (position == 1) { position =
      0.99f; } this.VlcControl.SourceProvider.MediaPlayer.Position =
      position;//Position為百分比,要小于1,等于1會(huì)停止 }
      控制播放聲音的方法如下:
      private void Slider2_DragCompleted(object sender,
      System.Windows.Controls.Primitives.DragCompletedEventArgs e) {
      //Audio.Volume:音量的百分比,值在0—200之間
      this.VlcControl.SourceProvider.MediaPlayer.Audio.Volume = (int)slider2.Value; }
      這樣我們的播放器就開發(fā)完成了。

      最終界面如下:



      播放其他視頻源

      播放RTSP

      通過上面的代碼編寫,我們了解到了,在C#里使用VLC播放視頻的代碼非常簡單,只要在Play函數(shù)中寫入地址即可。

      那么播放RTSP自然是同理,只要在Play中寫入RTSP的地址即可,如下:
      this.VlcControl.SourceProvider.MediaPlayer.Play(new
      Uri(rtsp://192.168.1.111));
      播放攝像頭

      播放攝像頭在這里也很簡單,只是Play的入?yún)⑸晕⒁⒁庖幌录纯?,如下?br>string mrl = @"dshow:// "; string optVideo = @":dshow-vdev=攝像頭設(shè)備名"; //string
      optAudio = @":dshow-adev=音頻設(shè)備名"; string size = ":dshow-size=800";
      this.VlcControl.SourceProvider.MediaPlayer.Play(mrl, optVideo, size);

      ----------------------------------------------------------------------------------------------------

      到此C#開發(fā)可播放攝像頭及任意格式視頻的播放器完成了。

      代碼已經(jīng)傳到Github上了,歡迎大家下載。

      Github地址:https://github.com/kiba518/WpfVLC <https://github.com/kiba518/WpfVLC>


      ----------------------------------------------------------------------------------------------------

      注:此文章為原創(chuàng),任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處!
      若您覺得這篇文章還不錯(cuò),請點(diǎn)擊下方的【推薦】,非常感謝!

      https://www.cnblogs.com/kiba/p/11303137.html
      <https://www.cnblogs.com/kiba/p/11303137.html>

      ?

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          久久精品操| 老头将舌头伸进了我的私密部位 | 黄页网站在线播放 | 年轻女教师高潮 | 青青操在线播放 | 大鸡巴日逼 | 操嫩逼电影网 | 韩国一级毛片免费视频 | 里美尤利娅全部av作品 | 韩国无码毛片 |