基於VLC的播放器開發


VLC的C++封裝  

  因為工作需要,研究了一段時間的播放器開發,如果從頭開始做,可以學習下FFmpeg(http://www.ffmpeg.org/),很多播放器都是基於FFmpeg開發的,但是這樣工作量和難度都比較大,如果想很快能拿出一個播放器來用的,可以研究下開源的播放器,參考下射手播放器作者的文章:媒體播放器三大底層架構

  對比下現有的主流播放器:媒體播放器列表,VLC是在各個方面都表現很突出的一款。VLC 是一款免費、自由、開源的跨平台多媒體播放器及框架,可播放大多數多媒體文件,DVD、音頻 CD、VCD 以及各類流媒體協議。VLC官網:http://www.videolan.org/

  VLC是在Linux下用C語言開發的,如果想用其接口,可以將C的接口用C++封裝一下,這樣使用方便的很多,在CodeProject上搜到一個C++的封裝,在他的基礎上加了點函數,使用了最新的VLC版本(2.1.0),用MFC做成了如下的樣子:

  主要實現功能:

  1、打開:加載音視頻文件(同時開始播放)。

  2、播放/暫停:播放暫停文件播放。

  3、停止:停止播放。

  4、快進:快進5秒。

  5、快退:后退5秒。

  6、音量:音量調節(0--100)。

  7、播放進度控制:使用進度條控制。

  基本上實現的功能和CodeProject上那個demo差不多,我修改后可以播放網絡流媒體,將加載的文件名修改為流媒體地址就可以了。播放上面雙語字幕的文件時貌似不能正常顯示中文,VLC播放器本身也有這個問題,不過可以設置修改。其他更多的功能還有待研究,VLC的接口注釋都很詳細,按照它的接口應該可以實現更多的功能,有問題也可以直接在VideoLan的論壇上發帖問:https://forum.videolan.org/

  主要問題:運行時需要依賴的VLC的plugins目錄里的DLL(66M大小)太多,有一些DLL是用不到的,如果封裝成ActiveX給Web下調用,打包的cab的會比較大,需要裁剪。。。

  主要參考文章:

  1、http://www.codeproject.com/Articles/38952/VLCWrapper-A-Little-C-wrapper-Around-libvlc

  2、http://www.cnblogs.com/Alberl/archive/2013/11/04.html

 

VLC的C#封裝

  如果播放器客戶端使用的是.Net開發的,如何使用VLC?可以有以下幾種方法:

  1、ActiveX控件:可以將上述MFC的播放器封裝成ActiveX控件提供給C#調用。鑒於業余時間有限,現在這部分工作還沒做。

  2、使用.Net的PInvoke技術將VLC的C接口封裝成C#接口,這方面網上的文章也很多,具體可參考以下文章:

  libvlc media player in C# (part 1)
  http://www.helyar.net/2009/libvlc-media-player-in-c/

  libvlc media player in C# (part 2)
  http://www.helyar.net/2009/libvlc-media-player-in-c-part-2/

  VideoLan DotNet for WinForm, WPF & Silverlight 5
  https://vlcdotnet.codeplex.com/

  nVLC
  http://www.codeproject.com/Articles/109639/nVLC

  c#萬能視頻播放器
  http://www.cnblogs.com/haibindev/archive/2011/12/21/2296173.html

  這里還有一個Android下的VLC播放器開發:

  http://www.cnblogs.com/mythou/p/3235698.html

 

源碼下載

  基於VLC的MFC播放器下載:http://download.csdn.net/detail/luxiaoxun/6671339

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM