视频播放器报告.docx
- 文档编号:8816169
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:31
- 大小:626.67KB
视频播放器报告.docx
《视频播放器报告.docx》由会员分享,可在线阅读,更多相关《视频播放器报告.docx(31页珍藏版)》请在冰点文库上搜索。
视频播放器报告
视频播放器报告
实验10多媒体与网络编程
【测试题1】编写代码实现制作一个音频文件播放器。
只需要实现如图所示的简单界面,点击打开弹出对话框,打开一个.wav的波形音频文件,点击“播放”按钮开始播放,点击“停止”按钮则停止播放,按“关机”按钮则退出应用程序。
需求分析:
1,项目背景和原因。
波形音频是一种电子数字化的声音,是计算机播放音频的一种重要格式,它存储的是声音的波形信息,当播放波形音频时,不管播放文件的设备是何种类型,都会得到相似的声音,波形音频文件通常wav作为文件扩展名。
由于采用波形音频存储电子化声音需要大量的存储空间,因此它一般只用于短时间的声音播放。
通过设计一个简单的波形音频播放器,了解MFC,了解接口类MCI。
2,波形音频播放器的功能播放器有“打开”,“播放”,“停止”,“关机”三个按钮,同时有一个状态栏,用于显示播放器当前处于的状态。
“打开”按钮用于打开一个波形音频文件;
“播放”用于播放选中的波形音频文件;
“停止”用于暂停正在播放的音频文件,再次点击“播放”时会
从暂停出继续播放;
“关机”用于退出播放器。
播放器界面如图所示:
3,数据字典
类向导ClassWizard
静态文本StaticText
按钮CommandButton,4,功能列表
“打开”voidCWaverDlg:
:
OnOpen()
“播放”voidCWaverDlg:
:
OnPlay()
“停止”voidCWaverDlg:
:
OnStop()
“关机”voidCWaverDlg:
:
OnExit()
5,具体实现步骤
1、首先在VisualC++平台上,选择File->New,新建一个名为
WaveAudio・h的头文件。
代码如下:
#if!
defined(WAVE_H_INCLUDED_)
#defineWAVE_H_INCLUDED_
#include"mmsystem.h"
classCWave
{
public:
BOOLm_bPlaying;
BOOLm_bOpen;
WORDm_wDeviceID;
public:
CWave();virtual~CWave();
DWORDOpen(CStringstrFileName);
//DWORDClose();
DWORDPlay();
voidStop();
DWORDClose();
};
#endif
2、接下来再新建WaveAudio.cpp文件。
代码如下:
#include"mmsystem.h"
#include"stdafx.h"
#include"afxwin.h"
#include"WaveAudio.h"
CWave:
:
CWave()
{m_bPlaying=FALSE;m_bOpen=FALSE;
m_wDeviceID=NULL;
}
CWave:
:
~CWave()
{
Close();
}
DWORDCWave:
:
Open(CStringstrFileName)
{
if(m_bOpen)
Close();
DWORDdwOpenFlag;
MCI_OPEN_PARMSmciOpenParam;mciOpenParam.lpstrDeviceType="WaveAudio";mciOpenParam.lpstrElementName=strFileName;
dwOpenFlag=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_OPEN_TYPE,(DWORD)(LPVOID)&mciOpenParam);
if(dwOpenFlag)
returndwOpenFlag;
m_wDeviceID=mciOpenParam.wDeviceID;
m_bOpen=TRUE;
dwOpenFlag=0;
MCI_SET_PARMSmciSetParam;
mciSetParam.dwTimeFormat=MCI_FORMAT_MILLISECONDS;
dwOpenFlag=mciSendCommand(m_wDevlceID,MCLSET,Ma_SET_TIME_FORM/\T,(DWORD)(LPVOID)&mciSetParam);
iffdwOpenFlag)
returndwOpenFlag;
return0;
}
DWORDCWavc:
:
Play()
{
MCI_PLAY_PARMSmclPlayParam;
DWORDdwPlavFIag;
(iwPlayHag=mciSendCommand(m_wDevicell),MCl_PLAY,NULL,(l)WORI))(LPV01l))&mciPlayParam);
ifidwPlavFIag)
returndwPlayFlag;
else{
m_bPlaying=TRUE;
return0;
}
}
voidCWave:
:
Stop()
{
mciSendCommand(m_wDevicelD31CLSTOP,NULUNULL);
}
DWORDCWave:
:
Close()
{
if|m_wDevicelD)
{
DWORDdwCloseFlag;
mciSendCommand(m_wDeviccID,MCLSTORMCI_WAIT,NULL);dwCloseFlag=mciScndCommand(m_wDcviceID,MCI_CLOSE,NULL,NULL);if(dwCloscFlag)
{
AfxMessageBox("关闭时出错");
returndwCloseFlag;
}
}
m_h()pen=FAI.SE;
m_bPlaving=FALSE;
inwDeviceID=NULL;
return0;
3、新建一个基于对话框类的工程,取名为Wavero在工作区FileView
中右键单击Waver,选择“添加到工程”为工程添加WaveAudio.cpp和WaveAudio.h文件。
然后在“工程”“设置”的“连接”中为工程添加winmm.libo这之后,需要在文件WaverDIg.h的头部添加#include"WaveAudio.h"。
最后在CwaverDIg类中添加成员变量:
protect:
CWavem_Wave;
CStringmstrFileName;
4、按照要求设计对话框(IDD_WAVER_DIALOG)的界面。
要求:
“打开”一按钮一IDC_OPEN
“播放”一按钮一IDC_PLAY
“停止”一按钮一IDC_STOP
“关机”一按钮一1DC_EXIT
“状态”一静态文本一IDC_STAT1C
编辑框一IDCSTATUS
播於]停止
Aaahi
犧态:
辭
na(K傷曲囲
壽HE]■0-璽匡]医鬥B
®CF
5、用类向导为对话框添加控件变量
IDC_OPEN
IDC_PLAY
IDC_STATUSm_btOpenm_btnPlaym_strStatus
6、用类向导为各个函数添加代码
voidCWaverDlg:
:
OnPlay()
{
//TODO:
Addyourcontrolnotificationhandlercodehereif(m_Wave.Play())
AfxMessageBox("播放出错”);
m_Wave.m_bPlaying=TRUE;
m_strStatus="正在播放";
UpdateData(FALSE);
}
voidCWaverDlg:
:
OnOpen()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CStringFilter;
charbuf[128];
DWORDdwFlag;
Filter="波形音频文件(*.WAV)|*.WAV||";
CFileDialogfileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,Filter);
if(fileDlg.DoModal()==IDOK)
{
m_strFileName=fileDlg.GetPathName();
dwFlag=m_Wave.Open(m_strFileName);
if(dwFlag)
{mciGetErrorString(dwFlag,buf,strlen(buf));AfxMessageBox(buf);
}
m_btnPlay.EnableWindow(TRUE);m_strStatus=m_strFileName+"文件已经正确打开.";UpdateData(FALSE);
}
}voidCWaverDlg:
:
OnStop()
{
//TODO:
Addyourcontrolnotificationhandlercodeherem_btnPlay.EnableWindow(TRUE);
m_btnOpen.EnableWindow(TRUE);
if(m_Wave.m_bPlaying)
m_strStatus="播放停止
UpdateData(FALSE);m_Wave.Stop();
}voidCWaverDlg:
:
OnExit(){
//TODO:
AddyourcontrolnotificationhandlercodehereOnCancel();
}
6、运行结果
MEEJ2SJ
打并1希於.|丽止|
剂|
扰S3:
|迂JKEEJl/-匕窗呼嚏・
即f-SMrr;-用一T■圃甲圧
U杲不是真正的
I户删的Y事於啊BfiBMP
|JTff®)
丈帕QQ|氐锤-直容孑想走
丈|诙朮音舷件伙■&叼V
【测试题2】
BMP位图显示程序,如下图所示,用一个简单的SDI工程实现单击“文件”->“打开”,选择一个.bmp文件,如果不是真正的BMP文件,或者不是真彩色的BMP文件,程序都将报告有关信息。
如果用户选择的是真彩色的BMP文件,则程序会在客户区显示整个图像。
需求分析:
1,项目背景和原因。
通过编写图片浏览器进一步加深对VC++编程的理解
2,视频播放器的功能
界面上有“选择图片”、“改变图片大小”两个按钮
“选择图片”用于打开一个图片文件,文件格式不限;
“改变图片大小”用于扩大或缩小图片。
>|«嗨瞎|空〒Q”彌
■■■■■11E;
:
:
选择團片®调节閤片大小i—I
~^||(AIIclassmembers]/||^CAboutDIg
Ml2resourcesdogIDD_ABOUTBOXIDDCTLY2412DL
3功能列表
4,具体实现步骤
1、建立工程,,工程名为Image
2、设计界面按钮
尹选择團片世〕[调节凰片大水迫!
Titriiji…”I
.瞎册堂调刊谢片大小②匚二口而亦…正
葉单项目届性
r
删圏片电1调节图片大彷过1
円册*小rm
3、功能列表
“打开”
voidCCTLY2412Dlg:
:
OnFileopen()
{
//TODO:
AddyourcommandhandlercodeherecharszFileFilter[|=
"Mp4File(*.mp4)|*.mp4|"
"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(*.*)|*.*||";
CFileDialogFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);if(FileDlg.DoModal()==IDOK)
{
CStringPathName=FileDlg.GetPathName();
PathName.MakeUpper();
m_AMovie.SetFileName(PathName);
}
}
放大图片
voidCCTLY2412Dlg:
:
OnVideo1x()
{
//TODO:
Addyourcommandhandlercodehere
m_AMovie.Pause();
m_AMovie.SetMovieWindowSize
(1);
m_AMovie.Run();
}
缩小图片
voidCCTLY2412Dlg:
:
OnVideo2x()
{
//TODO:
Addyourcommandhandlercodehere
m_AMovie.Pause();
m_AMovie.SetMovieWindowSize
(2);
m_AMovie.Run();
}
5,运行结果
【测试题3】
编写一个AVI视频播放器程序,能够播放AVI视频文件。
“文件”->“打开”菜单项,选择一个AVI文件,则程序在客户区的左上角创建一个MCIWnd窗口,并且窗口中已该AVI文件的首幅画面。
按下MCIWnd窗口控制条中的“播放”按钮就开始播放该AVI文件。
需求分析:
1,项目背景和原因。
目前有很多视频播放器,例如暴风影音、迅雷看看等,这些软件都可以很方便的播放各种格式的视频文件。
通过自行设计一个建简易播放器,使初学者了解用vc编写视频播放器的方法。
2,视频播放器的功能
编写一个简单的播放器,此播放器应具有播放至少AVI格式的功
能。
播放器中有“文件”、“播放”、“视频”、“音频”、“静音”、“消除静音”和“帮助”七个按钮。
“文件”按钮下又有“打开”、“关闭”、“退出”三个按钮,其中“打开”用于打开一个视频文件;“关闭”用于关闭当前的视频;“退出”
用于退出播放器“播放”按钮下有“开始”、“暂停”、“停止”,其中“开始”用于开始播放当前视频;“暂停”用于暂停正在播放的视频,当点击“开始”时从暂停的地方继续播放;“停止”用于停止正在播放的视频,当点击“开始”时又从开头播放。
“视频”下又有“原始大小”、“放大2倍”、“缩小2倍”按钮。
点击“原始大小”时,播放器窗口大小不变;点击“放大2倍”时,播放器窗口放大为原来的两倍;点击“缩小2倍”时,播放器窗口缩小为原来的一半。
“音频”下有“调节音量”、“调节左右声道平衡”。
“调节音量”下又有“增加”和“减小”两个按钮,分别用于增加音量和减小音量;而“调节左右声道平衡”在此播放器中并没有实际功能,若要实现调节左右声道平衡的功能要添加相应的代码,此时此刻我们的目的是要实现一些简单功能就可以了,所以不必理会“调节左右声道平衡”。
“帮助”按钮下还有个“关于播放器”的按钮,由于并没有给其编写相应的代码,也没有实际功能。
窗口如下:
3,数据字典
类向导ClassWizard
4,功能列表
播放器中所有的功能及其代码如下(所有的函数定义在类
CCTLY2412Dlg中):
“打开”OnFileopen()
“关闭”OnFileclose()
“退出”OnFileexit()
“开始”OnPlaystart()
“暂停”OnPlaypause()
“停止”OnPlaystop()
“原始大小”OnVideo1x()
“放大2倍”OnYi()
“缩小2倍”OnVideo2x()
“增加”OnAdd()
“减小”OnDown()
“消除静音”OnHuifu()
5,具体实现步骤
首先:
注册该控件在windows“运行”里写入:
regsvr32msdrm.ocx
单击确定。
1建立基于对话框的工程,工程名为CTLY2412。
2、删除IDD_PLAYER_DIALOG对话框中的一个0K按钮、一个Cancel
按钮和一个文本框,在对话框中插入一个菜单项,在菜单项中添加子菜单,具体要求见表格
顶层菜单项
子菜单项
ID号
文件(&F)
打开(&O)
ID_FILEOPEN
关闭(&C)
ID_FILECLOSE
退出(&X)
ID_FILEEXIT
播放(&P)
开始(&S)
ID_PLAYSTART
暂停(&P)
ID_PLAYPAUSE
停止(&T)
ID_PLAYSTOP
视频(&V)
原始大小(&O)
ID_VIDEO1X
原始大小的2倍(&D)
ID_VIDEO2X
音频(&A)
调节音量(&V)
ID_AUDEOVOLUME
调节左右声道平衡
(&B)
ID_AUDEOBALANCE
帮助(&H)
关于播放器(&A)
ID_HELPABOUT
3、用类向导为菜单添加类CTCY2412Dlg与对话框关联起来。
4、在对话框中添加ActiveMovie控件,ID为IDC_AMOVIE。
如图:
EdbjnnerClKi
AnqularGiuge/ulivEXCqiyIidI
WnyeiDinlrri
MhpulUAiNiClatt
XuIC口砒rdClddA
CbIbk4mCanlnlfl.Q
€nlDrDr«fBuHDnCIqseCQMNSVirwChEE町PdIVletng苗蓟梓厲二1
5、用类向导为IDC_AMOVIE映射一个成员变量m_AMovie
6、用类向导实现各个按钮的功能,为
“打开”--OnFileopen()“关闭”--OnFileclose()“退出”---OnFileexit()
“开始”--OnPlaystart()“暂停”-OnPlaypause(“停止”--OnPlaystop()
“原始大小”OnVideo1x()“放大2倍”---OnYi(“缩小2倍”
---OnVideo2x()“增加”---OnAdd()“减小”--OnDown()
添加代码
voidCCTLY2412Dlg:
:
OnFileopen()
{
//TODO:
Addyourcommandhandlercodehere
charszFileFilter[]=
"AVIFile(*.avi)|*.avi|"
"Mp4File(*.mp4)|*.mp4|"
"Mp3File(*.mp3)|*.mp3|"
"WmaFile(*.wma)|*.wma|"
"VideoFile(*.dat)|*.dat|"
"WaveFile(*.wav)|*.wav|"
"MovieFile(*.mov)|*.mov|"
"MediaFile(*.mmm)|*.mmm|"
"MidFile(*.mid;*,rmi)|*.mid;*.rmi|"
"MPEGFile(*.mpeg)|*.mpeg|"
"AllFile(*.*)|*.*||";
CFileDialogFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);if(FileDlg.DoModal()==IDOK){
CStringPathName=FileDlg.GetPathName();
PathName.MakeUpper();m_AMovie.SetFileName(PathName);
}
}
voidCCTLY2412Dlg:
:
OnFileclose()
{
IITODO:
Addyourcommandhandlercodehere
m_AMovie・SetFileName("");
}voidCCTLY2412Dlg:
:
OnFileexit()
{
IITODO:
Addyourcommandhandlercodehere
OnCancel();
}voidCCTLY2412Dlg:
:
OnPlaystart(){
//TODO:
Addyourcommandhandlercodehere
m_AMovie・Run();
SetTimer(0,20,NULL);〃设置定时器
}voidCCTLY2412Dlg:
:
OnPlaypause()
{
IITODO:
Addyourcommandhandlercodehere
m_AMovie・Pause();
}voidCCTLY2412Dlg:
:
OnPlaystop()
{
IITODO:
Addyourcommandhandlercodehere
m_AMovie・Stop();
KillTimer(O);//关掉定时器
voidCCTLY2412Dlg:
:
OnVideo1x()
{
//TODO:
Addyourcommandhandlercodehere
m_AMovie.Pause();
m_AMovie.SetMovieWindowSize
(1);m_AMovie.Run();
}
voidCCTLY2412Dlg:
:
OnVideo2x()
{
//TODO:
Addyourcommandhandlercodehere
m_AMovie.Pause();
m_AMovie.SetMovieWindowSize
(2);m_AMovie.Run();
}
voidCCTLY2412Dlg:
:
OnAdd()
{
//TODO:
Addyourcommandhandlercodehere
longm_valume=m_AMovie.GetVolume();//获取当前音量m_AMovie.Pause();m_AMovie.SetVolume(m_valume+200);
//用于增加音量m_AMovie.Run();
}
voidCCTLY2412Dlg:
:
OnDown()
{
//TODO:
Addyourcommandhandlercodehere
longm_valume=m_AMovie.GetVolume();m_AMovie.Pause
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 视频 播放 报告