当前位置:首页 > 多媒体播放器设计
函数名 Bool CDXGraph::Create(void) Bool CDXGraph::QueryInterfaces(void) 函数功能 生成滤波器链表管理器 查询各类接口 Bool CDXGraph::RenderFile(TCHAR * 剖析媒体文件 inFile) Bool CDXGraph::SetDisplayWindow(HWND 设置显示窗口 inWindow) Bool CDXGraph::SetNotifyWindow(HWND 设置窗口消息通知 inWindow) Bool CDXGraph::Run(void) Bool CDXGraph::Stop(void) Bool CDXGraph::Pause(void) 播放视频 停止播放 暂停播放 Bool CDXGraph::GetDuration(double * 获取播放时间长度 outDuration) Bool CDXGraph::GetCurrentPosition(double * 获取当前播放位置 outPosition) Bool CDXGraph::SetCurrentPosition(double 设置当前播放位置 inPosition) Bool CDXGraph::SetPlaybackRate(double 设置播放速率 inRate) Bool CDXGraph::GetStopPosition(double 获取视频的结束位置 *outPosition) Bool CDXGraph::SetStartStopPosition(double 设置视频开始结束位置 inStart,double inStop) Bool CDXGraph::Mute( ) Bool CDXGraph::UnMute( ) 静音模式 非静音模式 Bool CDXGraph::SetFullScreen(BOOL 设置全屏 inEnabled) Bool CDXGraph::SnapshotBitmap(TCHAR 抓图保存 *outFIle) 表1:CDGraph类中的主要函数及其作用
3.4模块实现函数说明
实现模块功能的具体函数则均属于CMediaPlayer类,它是本设计中两个重要的类中的另外一个,它是在建立MediaPlayer工程时由MFC建立的一个对话框的类,在该对话框上进行的操作函数即可实现程序所需要的所有功能,其实现函数则是调用CDXGraph类的相关函数,从而完成各项具体功能。各个模块的具体实现函数描述如表2:
9
模块名称 打开模块 播放模块 暂停模块 停止模块 实现函数 void CMediaPlayerDlg::OnBnClickedButtonOpen() void CMediaPlayerDlg::OnBnClickedButtonPlay() void CMediaPlayerDlg::OnBnClickedButtonPause() void CMediaPlayerDlg::OnBnClickedButtonStop() 抓图模块 void CMediaPlayerDlg::OnBnClickedButtonGrasp() 退出模块 void CMediaPlayerDlg::OnBnClickedButtonExit() 拖拽模块 void CMediaPlayerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 菜单模块 void CMediaPlayerDlg::OnMenuOpenfile() void CMediaPlayerDlg::OnMenuHalfrate() void CMediaPlayerDlg::OnMenuNormalrate() void CMediaPlayerDlg::OnMenuDoublerate() void CMediaPlayerDlg::OnMenuFullscreen() void CMediaPlayerDlg::OnMenuAlwaysontop() void CMediaPlayerDlg::OnMenuMute() void CMediaPlayerDlg::OnMenuClosefile() void CMediaPlayerDlg::OnMenuPlay() void CMediaPlayerDlg::OnMenuStop() void CMediaPlayerDlg::OnMenuGrabimage() void CMediaPlayerDlg::OnMenuExit() 表2:各个模块及其实现函数
3.5主要变量声明
程序中用到得主要控件有:6个按钮控件,一个图像控件,两个进度条控件。 控件名称 IDC_BUTTON_OPEN 变量类型 CButton 变量名 m_Open 打开 说明 10
IDC_BUTTON_PLAY IDC_BUTTON_PAUSE IDC_BUTTON_STOP IDC_BUTTON_GRASP IDC_BUTTO_EXIT IDC_SLIDER_PLAY CButton CButton CButton CButton CButton CSliderCtrl m_Play m_Pause m_Stop m_Grap m_Exit m_sliderPlayer m_siderVolume m_videoWindow 播放 暂停 停止 抓图 退出 视频进度条 音量进度条 图像控件 IDC_SLIDER_VOLUME CSliderCtrl IDC_VIDEO_WINDOW CStatic 表3:程序中的主要变量
3.6设计多媒体播放器的界面 播放器主界面设计如图5:
图5:播放器主界面
3.7播放器模块设计
为界面添加Picture Control图像控件,两个进度条控件以及打开、播放、
11
暂停、停止、抓图、退出等按钮控件。
下面对各个模块的实现函数及其代码做简要分析:
(1)单击播放器界面中的“打开”按钮,即可打开要播放的媒体文件。在下述代码中,将以只读方式打开要播放的文件,并且过滤了流媒体文件的格式,获取了媒体的路径和文件名。
void CMediaPlayerDlg::OnBnClickedButtonOpen() {
CString strFilter = _T(\VI File (*.avi) | *.avi|\
strFilter += \ strFilter += \ strFilter += \
strFilter += \ //编辑下拉选项框 CFileDialog
dlg(TRUE,NULL,NULL,OFN_PATHMUSTEXIST|OFN_HIDEREADONLY, strFilter, this); //设置打开文件对话框
if (dlg.DoModal() == IDOK)//当用户打开文件时,做以下行为 { } }
(2)单击“播放”按钮后,开始选择播放的媒体文件。同时在标题栏中显示播放速率和媒体文件名,具体代码如下:
void CMediaPlayerDlg::OnBnClickedButtonPlay() {
if (m_pFilterGraph) //如果CDXGraph对象已创建成功,则执行以下代码 {
SetWindowText(_T(\倍速播放 \设置窗口标题m_pFilterGraph->Run(); //播放视频文件
m_pFilterGraph->ChangeAudioVolume(m_volume); //改变音量 栏文本内容
CreateGraph();创建链表,连接滤波器
m_sourceFile = dlg.GetPathName();//获取文件所在的路径名
m_mediaFileName =GetFileTitleFromFileName(m_sourceFile,1);//获取
文件名称
12
共分享92篇相关文档