多媒体播放器设计(3)

2019-04-01 16:31

第三章 多媒体播放器软件设计

3.1开发环境配置

在开发之前我们需要在vs2010中搭建directshow sdk开发包。 首先我们将下载好的directshow sdk安装到本机上。 接着我们打开directshow的sdk安装目录:

C:/DX90SDK/Samples/C++/DirectShow/,在里面找到一个叫baseclasses的工程。

双击baseclasses.sln打开,按照提示转换工程,打开后对它进行编译。 如图2所示,我们会看到编译失败,提示有很多错误。

图2 :编译中的错误

我们将项目->属性->配置属性->C/C++-> 常规->附加包含目录里面的内容(.,../../../../include)删掉。

接着我们将项目->属性->配置属性->C/C++-> 语言->强制For循环范围中的合规性设置为否。

再接着我们在项目->属性->配置属性->C/C++-> 命令行->其它选项中增加/wd4430选项。

最后我们再次编译,发现编译成功。

编译成功之后,我们在项目->属性->配置属性->vc++ 目录里选择包含目录然后增加C:\\DXSDK\\Include;C:\\DXSDK\\Samples\\C++\\Common\\Include;C:\\DXSDK\\Samples\\C++\\DirectShow\\BaseClasses,在库目录中增加C:\\DXSDK\\Lib。

7

3.2实现GraphEdit模拟

实际使用Directshow播放器,首先需要使用GraphEdit来模拟实现,验证插入滤波器的运行特点,体会滤波器的操作过程,为播放器能够正常播放视频做好保障。

在使用graphedit进行模拟实现视频播放的过程中,我们发现无法正常建立滤波器链表。

进行了相关知识的了解之后,我才知道这是由于没有安装相应的解码器。如图3所示,我安装了相应的解码器。

图3:.安装解码器

如图4所示,在安装了解码器之后,则能正常的建立滤波器链表了。

图4 建立滤波器链表

3.3 directshow接口实现函数说明

Directshow有关的接口和方法主要封装在CDXGraph类中,这个类也是本设计中两个重要的类之一。以下就是该类中所包含的主要方法以及作用:

8

函数名 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


多媒体播放器设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第二章 赋范线性空间-黎永锦

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: