多媒体视频播放器.docx
《多媒体视频播放器.docx》由会员分享,可在线阅读,更多相关《多媒体视频播放器.docx(22页珍藏版)》请在冰豆网上搜索。
![多媒体视频播放器.docx](https://file1.bdocx.com/fileroot1/2022-10/27/d32f9624-ad5e-49f9-b93d-ca33c9c64cc2/d32f9624-ad5e-49f9-b93d-ca33c9c64cc21.gif)
多媒体视频播放器
多媒体视频播放器1
1基本功能描述1
2设计思路1
3软件设计2
3.1设计步骤3
3.2界面设计6
3.3关键功能的实现9
3.3.1“打开”功能的实现9
3.3.2“播放”、“暂停”、“停止”“全屏”功能的实现10
3.3.3“上一首”和“下一首”功能实现12
3.3.4音量滑动条功能的实现12
3.3.5播放列表功能的实现14
3.3.6进度滑动条功能的实现15
4结论与心得体会16
5参考文献17
6思考题18
7附录18
7.1调试报告18
7.1.1调试一18
7.1.2调试二19
7.2测试结果20
7.3关键源代码21
多媒体视频播放器
1基本功能描述
多媒体视频播放工具是目前计算机必备的一个软件,比较流行的有RealPlayer、WindowsMediaPlayer以及国产暴风影音等,能够播放RM、RMVB、MP3、MPEG、DAT等多种格式的视频文件mp3、wma、mdi、wav、avi、dat等格式的音频文件。
用VC++软件设计并编写出一个多媒体视频播放器。
在设计期间,可以选择使用的多媒体控件,制作与用户交互性较好的应用程序界面。
对于控件有多种,可以自己选择。
本次课程设计要使用VC++6.0部的ActiveX控件——WindowsMediaPlayer控件,建立自己的多媒体播放器。
此多媒体播放器具有打开文件、播放、暂停、停止、关闭、全屏、音量滑块调节、进度滑块调节、快进、快退、显示隐藏播放列表等基本功能,可以播放*.mp3、*.wma、*.mdi、*.wav、*.avi、*.dat、*.mpg、*.rmvb等格式的多媒体文件。
同时还具有自制的播放列表,可以按照列表上的顺序进行一曲、下一曲的播放。
2设计思路
WindowsMediaPlayer是一款Windows系统自带的播放器,支持通过插件增强功能。
其控件作为本次课设的媒体控件可以满足要求。
并且该控件是微软自带的免费控件,通常每个电脑都应有这个控件,方便设计出来的软件在各个电脑运行。
根据WindowsMediaPlayer和各个按钮控件功能的特点,首先要在初始化中对CWMPControl,CWMPSettings,CWMPPlaylist,CWMPMedia等类的对象进行绑定和定义。
播放器的一些基本的功能如播放、暂停、全屏、静音、快进、快退等主要是调用CWMPControl和CWMPPlayer类中的成员函数来进行实现。
对于打开按钮,需要调用通用文件对话框类,调用szFileFilter()文件过滤函数和GetFileName()获取文件名函数。
除了以上提到的功能的实现,还有进度滑条Slider_progress和音量滑动条Slider2是通过对CSliderCtrl类实现的。
图1视频播放器流程图
3软件设计
设计平台可以是Win32的操作平台上,使用已安装的VC6.0++进行设计和调试。
在设计前要确保平台中有WMP控件。
结合之前的设计思路,使用WindowsMediaPlayer等控件来制作多媒体视频播放器。
若是Win64这与VC6.0++不兼容,可以选择更高的版本。
3.1设计步骤
打开VC++6.0,点击“新建”,在“新建”窗口选择“工程”选项卡。
由于程序是基于
对话框的MFC应用程序使用WindowsMediaPlayer等控件来制作多媒体视频播放器。
设置好地址位置和工程名后点“确定”。
这里的工程名字可以是自己的名字拼音缩写,也可以没有任何含义。
图2“新建”对话框示意图
在点击“确定”后进入到了“MFC应用程序向导—步骤1”的设置界面,选择“基本对话框”,然后点击“下一步”。
图3“MFC应用程序向导”示意图
在剩下的3个步骤中,全部选择默认的设置,不要做随意更改,直至“完成”便实现了对话框的创建。
然后是插入控件,先把系统初始化的按钮用“Delete”删除,在单击鼠标右键选择“插入ActiveX控件”,在跳出的对话框中选择“WindowsMediaPlayer”(一般当电脑安装了WindowsMediaPlayer,其控件也应该存在),点击“确定”。
图4添加“WindowsMediaPlayer”控件示意图
虽然已经插入控件了,但这时的控件还不能使用,因为控件的各种类并没有一起加入工程类中。
右击鼠标,选择“建立类向导……”,这时系统跳出对话框提示是否加入来自控件的类,直接点击“确定”就可以了。
图5“WindowsMediaPlayer”控件类添加示意图
接着对控件关联变量,右击加入的WMP控件,点击“属性”,把ID改为“IDC_player”,然后打开“建立类向导……”点到“MemberVariables”页面向IDC_player添加变量。
单击“ADDVariables”,会弹出图6所示的“Addmembername”对话框,命名为“m_player”,设为控制“Control”型,点击“OK”。
图6变量命名示意图
关联变量之后才算是真正的添加了该控件,可以发现在关联变量之后,控件工具栏多了“WindowsMediaPlayer”控件的选项,并且在“SourceFiles”中增加了17个类,相应的头文件也增加了17个,其中最主要的类为Cwmpplayer4,Cwmpcontrols,Cwmpmedia,Cwmpsettings四个大类。
Cwmpplayer4类主要是关于对其他类的对象的调用以及基本的控件功能的实现,提供了与WindowsMediaPlayer控件进行交互的基本方法,其中部分成员函数还能够进一步获取得到其他相关类对象的实例;Cwmpcontrols类主要是对控件的更多的操作;Cwmpmedia类主要是对于媒体文件资源的一些操作;Cwmpsettings类主要是对于媒体文件中的一些基本设置的操作。
3.2界面设计
首先是打开按钮,用于媒体文件的打开;然后依次是播放、暂停、停止、快进、快退、静音、全屏、退出、上一首、下一首、显示/隐藏按钮,以及视频进度滑块和音量滑块条Slider控件。
对控件主要进行变量的关联,以及ID的修改,对于普通按钮进行ID修改,结果如下下表1、表2、表3和表4所示。
表1控件ID以及对应响应函数表
按钮ID
控件Caption
消息响应函数
类型
IDC_BUTTON_open
打开
OnBUTTONopen()
命令按钮
IDC_BUTTON_fullscreen
全屏
OnBUTTONfullscreen()
命令按钮
IDC_BUTTON_play
播放
OnBUTTONplay()
命令按钮
IDC_BUTTON_panse
暂停/播放
OnBUTTONpanse()
命令按钮
IDC_BUTTON_stop
停止
OnBUTTONstop()
命令按钮
IDC_BUTTON_fastforward
快进
OnBUTTONFastforward()
命令按钮
IDC_BUTTON_fasteverse
快退
OnBUTTONfasteverse()
命令按钮
IDC_BUTTON_pre
上一曲
OnBUTTONpre()
命令按钮
IDC_BUTTON_next
下一曲
OnBUTTONnext()
命令按钮
IDC_BUTTON4_mute
静音
OnBUTTON4mute()
命令按钮
IDCANCEL
退出
无
命令按钮
IDC_BUTTON_show
隐藏/展开
OnBUTTONshow()
命令按钮
IDC_BUTTON_save
保存列表
OnBUTTONsave()
命令按钮
IDC_BUTTON_clear
删除列表
OnBUTTONclear()
命令按钮
然后是加入一些关联变量的控件,之前加入了WMPlayer,还要加入类别为“滑块”的Slider来当调节声音的滑块,还有加入类别为“列表框”的ListControl来充当播放列表。
表2控件ID以及关联变量表
按钮ID
控件Caption
变量名称
类型
IDC_OCX1
WMPlayer
m_player
CWMPlayer4
IDC_SLIDER_progress
Slider
m_jindu
CSliderCtrl
IDC_SLIDER_vol
Slider
m_vol
CSliderCtrl
IDC_LIST_MENU
ListControl
m_list2
CListBox
在按钮对应的消息响应函数中写程序将要用到表2的变量和WMP控件中的5个类的函数。
在这五个类中:
Cwmpplayer4类主要是关于对其他类的对象的调用以及基本的控件功能的实现,是WMP控件函数与外部交流的桥梁,不可缺少。
宁外其部分成员函数还能够进一步获取得到其他相关类对象的实例;Cwmpcontrols类主要是对控件的更多的操作,例如播放、暂停;Cwmpmedia类主要是对于媒体文件资源的一些操作,例如获取路径和名称;Cwmpplaylist类主要是关于播放列表的操作;Cwmpsettings类主要是对于媒体文件中的一些基本设置的操作。
表3其他类及对应对象表
类名
头文件名
对象名
CWMPControls
Wmpcontrols.h
m_Control
CWMPSettings
wmpsettings.h
m_Setting
CWMPMedia
wmpmedia.h
m_Media
CWMPPlaylist
wmpplaylist.h
m_Playlist
表4其他数据定义
数据类型
变量名
数据类型
变量名
CString
m_FileName
BOOL
flag,flag2,n
CString
m_PathName
int
vol
除了对各个控件关联变量以及消息响应函数,还要对对话框类进行消息响应函数的关联,如当一首歌播放完后的模式选择。
应用到WM_TIMER消息响应函数以及SetTimer()和KillTimer()函数,如图建立OnTimer函数。
图7添加“WM_TIMER”消息函数示意图
还有菜单的设计,其相对简单,只要名称和ID与表1保持一致就可以了。
在“ResourceFile”中右击鼠标添加“MENU”,属性为“IDR_MENU1”。
但是菜单并未与对话窗口有实质联系,需要将菜单加入到“IDD_SHIFAN_DIALOG”中来,在“IDD_SHIFAN_DIALOG”窗口空白右键单击,选中菜单“IDR_MENU1”,这样便完成了对菜单的加载。
图8控件按钮分布图
编译运行程序后得到了初步的界面效果图,当然还没有加入函数。
同时在左上角会显示自己写的工程名“YLJ_Media_Player”,如图8所示。
3.3关键功能的实现
对于各个按钮、列表功能的实现主要是通过对各个函数加入相应的代码,下文将列出相应的关键代码。
3.3.1“打开”功能的实现
“打开”按钮主要是实现了对打开的文件进行过滤,主要使用了szFileFilter()函数。
点击确定时,首先是把文件路径传给播放列表中,列表在从文件路径中提取文件名来显示。
然后又把文件路径通过SetUrl()交给控件读取播放。
voidCYLJ_