MFC 基於VLC的視訊播放器(二)---配置VLC庫
北京時間 23點18分 2018年12月19日
因為我之前是完成了一次,現在重新來寫一遍,所以更新會比較慢。
整理好步驟如下:
1、新建一個MFC專案,基於對話方塊
基於對話方塊,下一步,下一步,完成。
建立完成。
2、先初步修改介面。
因為這一章是配置,所以我只添加了播放的PICTURE控制元件、播放按鈕、狀態條控制元件。後面的介面會在後面持續更新。
注意:在建立控制元件後,我們應該為控制元件的ID進行修改,否則控制元件多了ID容易亂,這是一個必須養成的習慣。
3、執行一下
當然這只是空殼,點選了也沒有反應哈哈哈。
4、配置vlc的庫
我整理後的檔案如下,下載地址
將vlc資料夾拷貝到工程目錄下。
將vlc資料夾裡面的兩個dll檔案拷貝到Debug檔案下。
在你的程式碼解決方案上右鍵-屬性-vc++目錄-包含目錄和庫目錄修改如下:
開始執行測試程式碼:
我是在網上看到Alberl大神的整理的vlc函式,於是我也照著他的整理。
//參考Alberl大神的整理 class CAVPlayer { public: CAVPlayer(void); ~CAVPlayer(void); bool Play(const std::string &strPath); // 播放路徑為strPath的檔案 void Play (); // 播放 void Pause(); // 暫停 void Stop (); // 停止 void Volume(int nVol); // 音量設定為nVol void VolumeIncrease(); // 音量增大 void VolumeReduce(); // 音量減小 void SeekTo(int nPos); // 跳到指定位置nPos void SeekForward(); // 快進 void SeekBackward(); // 快退 void SetHWND(HWND hwnd); // 設定視訊顯示的視窗控制代碼 HWND GetHWND(); // 獲取視訊顯示的視窗控制代碼 void SetCallback(pfnPosChanged pfn); // 設定檔案位置改變時的回撥函式 pfnPosChanged GetCallback(); // 獲取檔案位置改變時的回撥函式 BOOL IsOpen(); // 檔案是否開啟 BOOL IsPlaying(); // 檔案是否正在播放 int GetPos(); // 獲取檔案當前播放的位置 void SetPos(int Pos); // 設定檔案播放位置 __int64 GetTime(); // 獲取時間 __int64 GetLength(); private: libvlc_instance_t *m_pVLC_Inst; // VLC例項 libvlc_media_player_t *m_pVLC_Player; // VLC播放器 HWND m_hWnd; // 視訊顯示的視窗控制代碼 pfnPosChanged m_pfn; // 檔案位置改變時的回撥函式 void Init(); // 初始化 void Release(); // 清理記憶體 };
我們先把整理完的AVPlayer.h和AVPlayer.cpp放到目錄下
然後再新增到解決方案中
測試開始:
先把picture控制元件的type改為rectangle
在標頭檔案新增定義
在.cpp檔案新增以下程式碼
#define WM_USER_POS_CHANGED WM_USER + 1
void CallbackPosChanged(void *data, int iPos) { CAVPlayer *pAVPlayer = (CAVPlayer *)data; if (pAVPlayer) { HWND hWnd = pAVPlayer->GetHWND(); if (::IsWindow(hWnd) && ::IsWindow(::GetParent(hWnd))) { ::PostMessage(::GetParent(hWnd), WM_USER_POS_CHANGED, (WPARAM)data, iPos); } } }
注意這個回撥函式要放在對話方塊初始化函式前面,因為在初始化函式裡面有呼叫
在onInitDialog裡面新增 設定播放的控制代碼
m_cAVPlayer.SetHWND(GetDlgItem(IDC_PLAY)->GetSafeHwnd()); // 設定播放器的視窗控制代碼
m_cAVPlayer.SetCallback(CallbackPosChanged);
接下來就是按鈕函式的新增
注意:按鈕函式的名稱要規範,不然後面容易混
m_cAVPlayer.Play("D:\\a.mkv");
好了,測試程式碼寫完了,執行,看一看效果。
注意:在執行時還需要把dll和plugins檔案拷貝到debug的資料夾下!!!!!
行了,執行完成!
程式碼已經上傳,你們可以看一下。下載地址
注意:1、本人是萌新,大佬們可以直接跳過閱讀我的文章,寫這個目的就是為了賺點分數以後可以用,當然也是想和其他萌新一起學習。
2、我會盡力快點更新,如果有什麼問題大家可以在底下評論,我看到便會回覆的,我的個人郵箱[email protected]
3、每一期我都會盡量放上原始碼,希望能幫到大家的學習。