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