教你利用VC++和JAVA 设计视频播放器的详细步骤Word格式.docx
- 文档编号:16481291
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:23
- 大小:247.98KB
教你利用VC++和JAVA 设计视频播放器的详细步骤Word格式.docx
《教你利用VC++和JAVA 设计视频播放器的详细步骤Word格式.docx》由会员分享,可在线阅读,更多相关《教你利用VC++和JAVA 设计视频播放器的详细步骤Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
+播放控制命令
+查找文件
+播放():
void
+暂停():
+停止():
Void
+退出():
+全屏():
界面管理
+媒体文件信息
+播放控制指令
+界面隐藏/显示指令
+音量控制
+显示播放情况():
+查找文件():
+播放():
+暂停():
+退出():
+全屏():
+音量大小:
unsignedlong
+增大音量():
+减小音量():
图2播放器类图
三界面设计
界面应满足以下要求:
1.界面首先要布置一系列按钮控件实现所有要实现的功能;
2.设置“播放进度条”来指示媒体文件的播放进度,还应该可以用鼠标拖动进度条来改变播放进度;
3.设置音量控制按钮(包括增大和减小);
4.界面应尽量美观;
根据以上描述,程序运行时效果如图3所示。
图3播放器界面设计
四系统实现
启动VisualC++6.0,执行New—Project新建菜单项,新建一个MFCAppWizard(ExE)应用,在左上方的工程文本中输入“Player”,完成后单击【确定】按钮,进入MFCAppWizard向导。
如图4所示。
图4新建工程
1.在MFCAppWizard向导的第一步选择DialogBased,单击【Finish】按钮完成工程的建立。
2.为应用程序添加菜单资源。
执行Insert—Resource…菜单,打开InsertResource对话框,选择Menu项,为工程添加菜单资源,其ID为ID_MENU1。
3.为工程添加ActiveMovie控件。
执行Project—AddToProject—ComponentsAddAontrols,在出现的ComponentsAndControlsGallery对话框中打开RegisteredActiveControls文件夹,选中ActiveMovieControlObject选项,然后按【Insert】后关闭对话框,调整好控件在对话框中的位置。
如图5所示。
图5ActiveMovie添加控件
4.在对话框类的文件夹中包含控件类,添加的代码如下:
//MovieDlg.h:
headerfile
#include“activemovie3.h”
5.OnPaint()
播放器对话框函数。
voidCMediaPlayerDlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);
//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//在用户端长方形中置图像
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&
rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//拉图像
dc.DrawIcon(x,y,m_hIcon);
}
else
CDialog:
OnPaint();
}
6.设置对话框的属性。
在对话框的属性框中的Menu框中选择ID_MENU1菜单。
这样就把创建的菜单加入到对话框中。
7.创建控件类的对象,在对话框类的头文件中添加CActiveMovie3类型的变量,如下所示:
//MovieDlg.h:
header.file
Protected:
HICONm_hIcon;
CActiveMovie3m_ActiveMovie;
8.添加菜单的消息映射。
并编辑代码响应功能,其代码如下所示:
(1)添加【打开】按钮的处理函数,它的主要功能是初始化路径,取得播放曲目列表文件的全路径并利用文件对话框打开视频文件,具体实现步骤为,在对话框资源中,双击打开文件按钮,出现“AddMemberFunction”对话框,默认MemberFunctionName为OnOpen,单击“OK”按钮,进入OnOpen()函数编辑区,添加如下代码:
OnOpen()
{
charszFileFilter[]=
//设置打开下拉菜单
"
Mp3File(*.mp3)|*.mp3|"
WmaFile(*.wma)|*.wma|"
VideoFile(*.dat)|*.dat|"
WaveFile(*.wav)|*.wav|"
AVIFile(*.avi)|*.avi|"
MovieFile(*.mov)|*.mov|"
MediaFile(*.mmm)|*.mmm|"
MidFile(*.mid;
*,rmi)|*.mid;
*.rmi|"
MPEGFile(*.mpeg)|*.mpeg|"
AllFile(*.*)|*.*||"
;
CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
∥定义打开对话框对象
if(dlg.DoModal()==IDOK)
CStringPathName=dlg.GetPathName();
//获取一个字符串
PathName.MakeUpper();
m_ActiveMovie.SetFileName(PathName);
//设置该串为媒体播放器文件
其中,第一条语句用于设置选择文件的类型,第二条语句用于创建一个“打开文件”的对话框,后面的语句用于选择要播放的文件。
(2)添加【关闭】按钮的处理函数,它的主要功能是利用文件对话框关闭视频文件,具体实现步骤同
(1),添加的代码如下:
OnClose()
//在这里增加控制处理程序代码
m_ActiveMovie.CloseWindow();
//关闭窗口
(3)添加【播放】按钮的处理函数,我们先判断文件的状态,再调用控件的有关方法来播放视频文件,具体代码如下:
OnPlay()
m_ActiveMovie.Run();
SetTimer(0,20,NULL);
//设置定时器模式
(4)添加【停止】按钮的处理函数,它的主要功能是利用文件对话框停止视频文件的播放,具体实现如下:
OnStop()
m_ActiveMovie.Stop();
KillTimer(0);
//关掉定时器
(5)添加【暂停】按钮的处理函数,它的主要功能是利用文件对话框暂停视频文件的播放,具体实现如下:
OnPause()
//在这里增加控制处理程序代码
m_ActiveMovie.Pause();
(6)添加调节音量大、小的处理函数,具体实现如下:
OnUpper()
longVolume=m_ActiveMovie.GetVolume();
//获取当前音量
m_ActiveMovie.SetVolume(Volume+100);
//增大音量
OnLower()
m_ActiveMovie.SetVolume(Volume-100);
//减小音量
//继续播放
(7)添加【重复】按钮的处理函数,它的主要功能是利用文件对话框进行重复播放,具体实现如下:
OnRepeat()
if(!
isRepeat){
isRepeat=TRUE;
//如果重复为真
SetDlgItemText(IDC_STATIC2,"
Status:
Repeat"
);
//重复播放
}
else{
isRepeat=FALSE;
//如果重复为假
Normal"
(8)添加【全屏】按钮的处理函数,它的主要功能是把视频播放器切换成全屏形式进行播放,具体实现如下:
OnFulscreeen()
//暂停播放
m_ActiveMovie.SetFullScreenMode(true);
//设置全屏模式
m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED);
//将窗口显示为最大
//继续播放
(9)设置定时功能
OnTimer(UINTnIDEvent)
doubleCurrentPos=m_ActiveMovie.GetCurrentPosition();
//得到当前位置
if(CurrentPos==0&
&
isRepeat)
m_ActiveMovie.Run();
CDialog:
OnTimer(nIDEvent);
(10)添加【退出】按钮的处理函数,它的功能是关闭视频播放器。
OnCancel()
OnCancel();
(11)至此,已完成所有的编程工作,现在可以编译和生成多媒体播放器应用程序了,可用它来播放各种格式的媒体文件。
经过上面的操作,我们现在可以编译并运行此应用程序了。
运行程序后,先单击“打开”按钮,出现“打开文件”对话框,进行媒体文件的选择后,即可播放媒体文件。
在播放的过程中,可以音量控制按钮进行音量的控制,还可以按“全屏显示”按钮,使媒体文件全屏播放,若单击鼠标左键,则暂停播放;
再单击鼠标右键,则可选择屏幕播放状态。
利用JAVA设计视频播放器
一.程序的界面设计
媒体播放器的用户界面包含一个主窗口,3个菜单和一个打开文件的对话框。
首先我们来看看主窗口的设计。
主窗口应该把窗口标题显示为“简单媒体器”,显示“文件”,“播放控制”,“播放列表”菜单,显示彩色背景的欢迎信息。
图显示了程序刚启动时的主窗口。
“文件”菜单包含3个菜单项,如图所示。
“打开”菜单显示一个对话框,用来选择媒体文件的位置。
“循环”菜单决定媒体文件只播放一次(默认)还是反复播放(当菜单被选中)。
最后,“退出”菜单关闭程序。
另外,单击主窗口右上角的“关闭”按钮也可以关闭程序。
单击“文件/打开”菜单时,出现“打开媒体文件”对话框,如图所示。
选中媒体文件之后,单击“打开”按钮即可打开媒体文件;
单击“取消”按钮终止文件打开操作。
“播放控制”菜单下有3个命令可以用:
播放,暂停,停止,如图6所示。
而播放列表在最初是空的,用户播放过的媒体文件随机存入该菜单下。
图6程序播放窗口界面
二.程序总体概述
应用的类名称:
MediaPlayer,下边给出了该类的结构框架。
其中,JFrame是一个超类。
这部程序声明下列事件的处理程序:
动作事件,控制器件,菜单项事件,绘图事件,窗口事件。
我们把每个事件的处理程序叫作监听器,那么本程序就包括5个监听器:
动作事件监听器,控制器件监听器,菜单项事件监听器,绘图事件监听器,窗口事件监听器
classMediaPlayer
extendsJFrame
implementsActionListener,ControllerListener,ItemListener{
//构造函数,其中包括了设置响应窗口事件的监听器;
MediaPlayer(Stringtitle){
//用本方法可以设置菜单栏;
PublicvoidsetupMenu(){
//动作事件响应成员;
PublicvoidactionPerformed(ActionEvente){
//菜单状态改变事件的响应函数;
PublicvoidItemStateChange(ItemEvente){
//调用绘画函数进行界面的绘制;
Publicvoidupdate(Grphicsg){
//本类的
main函数构成一个实例
Publicstaticvoidmain(string[]args){
三.MediaPlayer构造函数
MediaPlayer构造函数的功能主要有:
●设置主窗口的标题
●注册窗口监听器,以处理窗口关闭事件
●把新创建的菜单条设置为主窗口的菜单条
●把主窗口的大小设置为400×
400像素
●显示主窗口
●结束构造窗口
代码及解释如下:
MediaPlayer(Stringtitle){
super(title);
//利用一个adapter实现对用户点击窗口系统菜单的关闭按钮
//时的响应;
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
//调用dispose以执行windowClosed
dispose();
}
publicvoidwindowClosed(WindowEvente){
if(player!
=null)
player.close();
System.exit(0);
});
//调用设置程序菜单栏的方法成员完成菜单的布置
setupMenu();
setSize(400,400);
setVisible(true);
四.setupMenu构造程序菜单
setupMenu构造程序的功能包括:
创建“文件”菜单
●创建“打开”菜单
●把MediaPlayer对象注册成功为“打开”菜单项动作事件的监听器
●把“打开”菜单项加入“文件”菜单
●把“文件”菜单中加入一条水平分隔线
●创建带检查框的“循环”菜单项
●把MediaPlayer对象注册成功为“循环”菜单项动作事件的监听器
●把“循环”菜单项加入“文件”菜单
●在“文件”菜单项中加入一条水平分隔线
●按照创建“打开”菜单项的过程,创建“退出”菜单项
●创建“播放列表”菜单
●创建“播放控制”菜单
●创建“播放”菜单项
●把MediaPlayer对象注册成功为“播放”菜单项动作事件的监听器
●把“播放”菜单项加入“播放控制”菜单
●在“播放控制”菜单中加入一条水平分隔线
●创建“暂停”菜单项
●把MediaPlayer对象注册成功为“暂停”菜单项动作事件的监听器
●把“循环”菜单项加入“播放控制”菜单
●按照创建“暂停”菜单项的过程,创建“停止”菜单项
●创建一个菜单条(MenuBar)
●把“文件”菜单加入到菜单条
●把“播放控制”菜单加入到菜单条
●把“播放列表”菜单加入到菜单条
publicvoidsetupMenu()
//设置一个菜单
Menuf=newMenu("
文件"
//往设置的菜单种添加菜单项
MenuItemmi=newMenuItem("
打开"
mi.addActionListener(this);
f.add(mi);
f.addSeparator();
CheckboxMenuItemcbmi=newCheckboxMenuItem("
循环"
false);
cbmi.addItemListener(this);
f.add(cbmi);
mi=newMenuItem("
退出"
Menul=newMenu("
播放列表"
Menuc=newMenu("
播放控制"
MenuItemmove=newMenuItem("
播放"
move.addActionListener(this);
c.add(move);
c.addSeparator();
MenuItempause=newMenuItem("
暂停"
pause.addActionListener(this);
c.add(pause);
MenuItemstop=newMenuItem("
停止"
stop.addActionListener(this);
c.add(stop);
//设置一个菜单栏
MenuBarmb=newMenuBar();
//将设置的菜单依次加入程序的菜单栏中去
mb.add(f);
mb.add(c);
mb.add(l);
//将构造完成的菜单栏交给当前程序的窗口;
setMenuBar(mb);
播放器的文件菜单,如下图
图7文件菜单
图8播放列表
图9播放控制菜单
五.动作监听器
动作监听器根据用户的操作作出相应的反应
(1)如果动作事件起源于“退出”菜单项,触发一个给查监听器的窗口关闭事件
(2)如果动作事件起源于“播放“菜单项,判断当前是否存在一个播放器,存在则将该播放器置于运动状态
(3)如果动作事件起源于“暂停”菜单项,判断当前是否存在一个播放器,存在则停止该播放器的播放
(4)如果动作事件起源于“停止”菜单项,判断当前是否存在一个播放器,存在则停止该播放器的播放,并把播放指针移到文件头
(5)如果动作事件起源于“打开”菜单,则:
●创建一个“打开媒体文件“对话框
●把对话框的当前目录设置为上次关闭时的目录
●显示对话框。
这个对话框是一个模式对话框
●如果用户没有通过对话框选择媒体文件,则返回
●保存用户在对话框中选择的目录打开的文件名字selectfile和其全路径名cufile
利用该文件的名字和全路径名创建一个菜单项加入“播放列表”。
该菜单项名为该文件名称,单击该菜单项所窗出的字符串是该文件的全路径名,如图所示。
可以看到,我们将利用这个菜单实现了一个recent功能,用户可以从这里选择最近播放的媒体文件而不必从文件夹中打开。
(6)如果动作事件起源于“播放列表”下的菜单项(最后一种动作来源),则:
●将当前播放的文件全路径名cufile设为来自于该动作传出的字符串
●如果出现已创建JMF播放器对象,关闭该对象,根据指定的目录和名字,创建一个使用file:
协议的媒体定位器(MediaLocator)对象,再利用该对象创建一个JMF播放器对象
(7)如果出现异常
●显示错误信息,然后返回
●把主窗口的标题设置为媒体文件的名字
●把MediaPlayer对象注册为来自JMF播放器对象的控制器事件的监听器
●让JMF播放器对象预先提取媒体内容
程序代码及解释如下:
f.addSeparator
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教你利用VC+和JAVA 设计视频播放器的详细步骤 利用 VC JAVA 设计 视频 播放 详细 步骤