雖然上個教程中10多行代碼便做出了一個播放器,但如果加上快進快退等功能的話,代碼都會擠在一團,閱讀性很差,所以這個版本將對VLC進行封裝,由於第一個教程已經進行了ffmpeg的封裝,所以這里將利用它的框架CAVPlayer,由於這些封裝代碼都很簡潔明了,所以將不再對細節一一介紹,直接給出封裝好的代碼。
#include <string> #include "AVPlayer.h" int main(int argc, char* argv[]) { std::string strCMD; CAVPlayer cAVPlayer; cAVPlayer.Play("G:\\media test\\music\\amani.wma"); while(true) { std::cin >> strCMD; if (! strCMD.compare("Quit")) { break; } } return 0; }
運行之后,輸入Quit即可退出。這里有效代碼僅僅一行,是不是比上一個教程又簡潔很多呢~O(∩_∩)O~
其中CAVPlayer的部分封裝如下:
class CAVPlayer { public: CAVPlayer(void); ~CAVPlayer(void); void Init(); // 初始化 void Close(); // 關閉文件及清理 bool Play(const std::string &strPath); // 播放路徑為strPath的文件 void PlayNext(); // 播放下一個文件 void PlayPre(); // 播放上一個文件 void Stop (); // 停止 void Pause(); // 暫停 void Volume(int nVol); // 音量設置為nVol void VolumeIncrease(); // 音量增大 void VolumeReduce(); // 音量減小 void SeekTo(int nPos); // 跳到指定位置nPos void SeekForward(); // 快進 void SeekBackward(); // 快退 ...... }
CAVPlayer目前只實現了Play函數,其他函數將會在后面的教程一次性實現,屆時不再一一列出,這里給出一個框架,加快大家對VLC的認識。
(代碼在win7系統的VC6、VS2008、VS2010、VS2012下均編譯通過;在XP系統的VS2008、VS2010下均編譯通過;在gcc下應該也能編譯通過,不過沒有用gcc測試。
由於第一個教程給出的是VS2010的代碼,有些小伙伴沒安裝這個編譯器,導致很多問題,所以這個教程給出的代碼是VC6的,可以升級到任何編譯器)

(由於界面等工作還沒開始,所以下一個教程可能會隔得久一點,Alberl會盡快直播~)