基於VLC開發視訊播放器---VLC +MFC
阿新 • • 發佈:2019-02-05
1。開發視訊播放器一般可以基於ffmpeg,其與目前大部播放器的關係可以是萬能發動機與汽車的關係。VLC播放器的編解碼庫就是ffmpeg。利用VLC現有的sdk可以快速,簡便的開發出滿足需要的視訊播放器。本文演示如何開發一個簡單視訊播放器。
2。環境:
OS: Windows 7 32位旗艦版
IDE: VS2005
LIB: VLC0.99 SDK
3。相關資料:
說明:
由於VLC是跨平臺庫,在windows下如果要從原始碼編譯庫需要MinGw + Mysys或者Cygwin環境。搭建環境及編譯步驟較繁瑣,故直接利用現成二進位制庫高效。
4。建立工程
1)在VS2005下建立一個基於對話方塊工程。新增控制元件,建立好後類似下圖:
2)需要的設定:
解壓vlc-0.9.9-win32.zip檔案後,將sdk目錄下的include和lib目錄拷貝至工程目錄。在建立的工程屬性C/C++/常規裡設定包含的目錄為..\include,連結器/常規裡設定附加庫目錄為..\lib;將vlc解壓後的plugins目錄拷貝至工作的Debug目錄。
3)示例程式碼:
class CvlcTestDlg : public CDialog { public: CvlcTestDlg(CWnd* pParent = NULL); ~CvlcTestDlg(); enum { IDD = IDD_VLCTEST_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); protected: HICON m_hIcon; virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() private: CString strVPath; HWND m_hWndVideo; bool m_bNew; libvlc_exception_t m_vlcEx; libvlc_instance_t* m_vlcInst; libvlc_media_player_t* m_vlcMplay; libvlc_media_t* m_vlcMedia; private: afx_msg void OnBnClickedBtnPlay(); afx_msg void OnBnClickedBtnStop(); afx_msg void OnBnClickedBtnPause(); afx_msg void OnBnClickedBtnDir(); };
相關事件:
void CvlcTestDlg::OnBnClickedBtnPlay() { // TODO: 在此新增控制元件通知處理程式程式碼 TRACE("Start player!\n"); GetDlgItemText(IDC_EDIT1, strVPath); if(m_bNew == true) { m_bNew = false; m_vlcMedia = libvlc_media_new(m_vlcInst, strVPath.GetBuffer(0), &m_vlcEx); m_vlcMplay = libvlc_media_player_new_from_media(m_vlcMedia, &m_vlcEx); libvlc_media_release(m_vlcMedia); libvlc_media_player_set_drawable(m_vlcMplay, (libvlc_drawable_t)m_hWndVideo, &m_vlcEx); } libvlc_media_player_play(m_vlcMplay, &m_vlcEx); TRACE("Playing video!\n"); }
void CvlcTestDlg::OnBnClickedBtnStop()
{
// TODO: 在此新增控制元件通知處理程式程式碼
libvlc_media_player_stop(m_vlcMplay, &m_vlcEx);
m_bNew = true;
}
5。執行結果:
注:不支援中文路徑。
6。測試程式碼下載: