多媒体视频播放器Word文档下载推荐.docx
- 文档编号:7806397
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:18
- 大小:113.78KB
多媒体视频播放器Word文档下载推荐.docx
《多媒体视频播放器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《多媒体视频播放器Word文档下载推荐.docx(18页珍藏版)》请在冰点文库上搜索。
图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类主要是对于媒体文件中的一些基本设置的操作。
界面设计
首先是打开按钮,用于媒体文件的打开;
然后依次是播放、暂停、停止、快进、快退、静音、全屏、退出、上一首、下一首、显示/隐藏按钮,以及视频进度滑块和音量滑块条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
变量名称
IDC_OCX1
WMPlayer
m_player
CWMPlayer4
IDC_SLIDER_progress
Slider
m_jindu
CSliderCtrl
IDC_SLIDER_vol
m_vol
IDC_LIST_MENU
ListControl
m_list2
CListBox
在按钮对应的消息响应函数中写程序将要用到表2的变量和WMP控件中的5个类的函数。
在这五个类中:
Cwmpplayer4类主要是关于对其他类的对象的调用以及基本的控件功能的实现,是WMP控件函数与外部交流的桥梁,不可缺少。
宁外其部分成员函数还能够进一步获取得到其他相关类对象的实例;
Cwmpcontrols类主要是对控件的更多的操作,例如播放、暂停;
Cwmpmedia类主要是对于媒体文件资源的一些操作,例如获取路径和名称;
Cwmpplaylist类主要是关于播放列表的操作;
Cwmpsettings类主要是对于媒体文件中的一些基本设置的操作。
表3其他类及对应对象表
类名
头文件名
对象名
CWMPControls
m_Control
CWMPSettings
m_Setting
CWMPMedia
m_Media
CWMPPlaylist
m_Playlist
表4其他数据定义
数据类型
变量名
CString
m_FileName
BOOL
flag,flag2,n
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所示。
关键功能的实现
对于各个按钮、列表功能的实现主要是通过对各个函数加入相应的代码,下文将列出相应的关键代码。
“打开”功能的实现
“打开”按钮主要是实现了对打开的文件进行过滤,主要使用了szFileFilter()函数。
点击确定时,首先是把文件路径传给播放列表中,列表在从文件路径中提取文件名来显示。
然后又把文件路径通过SetUrl()交给控件读取播放。
voidCYLJ_Media_PlayerDlg:
:
OnBUTTONopen()
{
charszFileFilter[]="
所有支持类型
|*.mp3;
*.mp4;
*.wma;
*.dat;
*.wav;
*.avi;
*.mov;
*.rmvb;
*.mmm;
*.mid;
*.rmi;
*.mpeg;
*.mpg|"
"
Mp3File(*.mp3)|*.mp3|"
Mp4File(*.mp4)|*.mp4|"
WmaFile(*.wma)|*.wma|"
VideoFile(*.dat)|*.dat|"
WaveFile(*.wav)|*.wav|"
AVIFile(*.avi)|*.avi|"
MovieFile(*.mov)|*.mov|"
RmvbFile(*.rmvb)|*.rmvb|"
MediaFile(*.mmm)|*.mmm|"
MidFile(*.mid;
*,rmi)|*.mid;
*.rmi|"
MPEGFile(*.mpeg)|*.mpeg|"
MPGFile(*.mpg)|*.mpg|"
AllFile(*.*)|*.*||"
;
ause();
}
else{
().play();
}
OnBUTTONstop()
().stop();
全屏功能的实现也是调用SetFullScreen(TRUE)函数来实现。
OnBUTTONfullscreen()
(TRUE);
“上一首”和“下一首”功能实现
“上一首”就是让光标往上移一行,也就是对应的光标变量(index)减去1。
当要判断光标在第一行的情况,也就是index=0的时候,这时光标应移到最后一首歌曲或视频上。
OnBUTTONpre()
CStringstr;
intindex=()-1;
etVolume());
”实现的。
设置音量用的是“SetVolume()”函数。
在“OnInitDialog()”函数中已对滑块范围进行初始化——CSliderCtrl*pSlide1=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
pSlide1->
SetRange(0,100);
使音量变化范围为0~100。
OnReleasedcaptureSlider1(NMHDR*pNMHDR,LRESULT*pResult)
().SetVolume());
*pResult=0;
另外静音程序如下,在静音按钮按下后把系统音量保存在vol中,等恢复时使用,再设置为静音,再次按下后取消静音然后恢复开始音量。
OnBUTTON4mute()
n=!
n;
if(n)
{
vol=().GetVolume();
etMute(TRUE);
etMute(FALSE);
etVolume(vol);
etDuration();
(0,m_time);
etCurrentPosition((double)nPos);
break;
caseSB_PAGEDOWN:
NewPos=();
().SetCurrentPosition((double)NewPos);
caseSB_PAGEUP:
}
视频进度的控制主要是SB_THUMBTRACK、SB_PAGEDOWN、SB_PAGEUP,三个消息响应即移动滑块、单击滑块右边滑条、单击滑块左边滑条的消息响应来实现视频进度的控制。
4结论与心得体会
平时我挺喜欢听歌看电影的,当看到老师给的选题中有多媒体视频播放器这个题目,我开始是还是挺激动的,能够自己做一个简单的程序,满足自己的爱好也是挺有成就感的。
在一开始选这个课题时,我和其他同学都觉得很难。
不像简单计算器和画图软件等课题曾在上课提到过,对于多媒体播放器我看到看到了题目不知道该怎样做。
然后我花了大量时间去了解第一步怎么做,分别查找了各个控件基本用法功能,最后选用了WindowsMediaPlayer控件,因为我vc中只能找到这个与视频有关的控件,于是在网上查了一些关于WindowsMediaPlayer控件的资料,结果按照网上说的方法来根本无法实现,因为网上都说要先插入17个WindowsMediaPlayer控件相关的类,但是我vc却不照网上那样实现,所以在头两天是在摸索中,耗费了很多时间,最后我先不管第一步,直接插入控件,然后发现关联变量时会有提示要插入17个类,点确定就行,问题就这么解决了。
然后我和同组的同学在网上找相应的资料,找到怎样在VC++里加入控件,各个控件的说明书。
进过比较和分析,我们一致采用WindowsMediaPlayer多媒体软件旗下的控件WMP控件。
因为WMP控件本身就是微软自带的控件,不存在兼容问题。
还有每个电脑多都有WindowsMediaPlayer播放器,其控件也都注册了。
知道怎样使用WMP控件,就可以很轻松地完成软件流程图的设计。
我结合了自己在网上搜索的资料,做好了整个多媒体播放器的整体设计,确定了软件的框架、主要构件以及构件之间的关联,而后由总体设计逐渐深入完成软件的详细设计和开发过程。
编写代码更加有条理,才会更加符合软件工程的标准。
整个程序设计我做了两天,每天熬夜到1点多,也学会了不少东西。
最后终于变好了,编写的软件可以满足课程设计给出的要求。
系统能选择打开、播放、暂停、停止音频文件和视频文件,并能控制声音的大小,可以播放*.mp3、*.wma、*.mdi、*.wav、*avi、*dat等格式的多媒体文件。
看到点击每一个按钮都能有相应的反应,顿时有了一种莫名的成就感,也感觉到自己的汗水得到了回报。
纸上得来终觉浅,绝知此事要躬行。
要想完成一项作品,并不是想的那样简单,做起来总是会遇到问题的,这时就需要要解决问题的能力和坚持不懈的决心。
通过本次试验,我收获了很多,对面向对象程序设计这门课所学的知识有了更好的理解。
书山有路勤为径,学海无涯苦作舟。
5参考文献
[1]揣锦华.面向对象程序设计与VC++实践[M].西安电子科技大学出版社.2005
[2]郑阿奇.VisualC++教程[M].北京:
机械工业出版社.2004
[3]周长发.VisualC++.NET多媒体编程[M].电子工业出版社.2002
[4]SteveMack.流媒体宝典.电子工业出版社.2003
[5]王育坚.VisualC++面向对象编程教程.第2版.北京:
清华大学出版社,2008
6思考题
1)控件自带的类和本程序中的类是如何共同作用的
答:
控件自带的的类肯定会在对话框的主程序中被调用,那么就要在主程序中#include入对应类的头文件。
对需要用到的类生成对应的对象以实现类中函数的使用。
调用了控件类中的函数后,还需要调用对话框自身的函数,比如消息及消息响应函数等函数,以及各控件对应的消息响应函数。
如此便可以实现控件自带类和本程序中的类的共同作用。
2)说明程序中调用的控件函数的作用
控件的不同类有不同的函数与之对应,不同函数有不同的功能。
其函数功能见表。
表5控件函数和对应的功能
功能
控件函数
进度刷新
OnTimer()
停止
暂停
OnBUTTONpause()
上一首
OnBUTTONFastforward
下一首
OnBUTTONFastreverse()
声音滑块
OnReleasedcaptureSlider1()
清空列表
进度控制
OnHScroll()
7附录
调试报告
调试一
运行时错误指明如下如图所示:
图9调试一错误提示
错误提示为:
useofundefinedtype'
CWMPControls'
。
在这行代码中,我用控件变量m_player调用GetControls()函数来获得CWMPControls类的对象以调用该的成员函数pause()函数,根据错误提示可知,我这行代码是写在视图类中,调用pause()属于类外调用,但是该类不认识CWMPControls类,所以要在视图类的最前面要加个头文件#include"
"
调试二
在调试播放列表时,看到播放列表中显示了路径感觉没有必要,所以修改了代码使只把歌曲名给了代码。
但这样再来播放列表上的歌曲时不能播放。
图10调试二的说明图
原因:
是因为播放列表上只有歌曲名,没了路径的话是不能找到文件的,所以不能播放。
所以解决方法是修改代码使其把歌曲路径递给播放列表。
但后来听老师的解说,可以通过取字符串函数来从路径里取文件名。
即播放列表中储存的是路径,但显示的是路径中文件名。
测试结果
编写好的软件能选择打开、播放、暂停、停止音频文件和视频文件,并能控制声音的大小,以及播放的进度,可以播放*.mp3、*.wma、*.mdi、*.wav、*avi、*dat等格式的多媒体文件。
同时还具有自制的播放列表,可以按照列表上的顺序进行一曲、下一曲的播放,同时还有保存列表和删除歌曲的作用。
图11播放器播放音乐展示
图12播放器隐藏列表展示
关键源代码
charszFileFilter[]=
"
OnBUTTONplay()
intindex=();
(index,str);
(str);
OnHScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)
intm_time;
m_time=(int)().GetDuration();
(0,m_tim
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多媒体 视频 播放