多媒体与网络编程实验报告.docx

上传人:b****1 文档编号:657458 上传时间:2023-04-29 格式:DOCX 页数:29 大小:342.61KB
下载 相关 举报
多媒体与网络编程实验报告.docx_第1页
第1页 / 共29页
多媒体与网络编程实验报告.docx_第2页
第2页 / 共29页
多媒体与网络编程实验报告.docx_第3页
第3页 / 共29页
多媒体与网络编程实验报告.docx_第4页
第4页 / 共29页
多媒体与网络编程实验报告.docx_第5页
第5页 / 共29页
多媒体与网络编程实验报告.docx_第6页
第6页 / 共29页
多媒体与网络编程实验报告.docx_第7页
第7页 / 共29页
多媒体与网络编程实验报告.docx_第8页
第8页 / 共29页
多媒体与网络编程实验报告.docx_第9页
第9页 / 共29页
多媒体与网络编程实验报告.docx_第10页
第10页 / 共29页
多媒体与网络编程实验报告.docx_第11页
第11页 / 共29页
多媒体与网络编程实验报告.docx_第12页
第12页 / 共29页
多媒体与网络编程实验报告.docx_第13页
第13页 / 共29页
多媒体与网络编程实验报告.docx_第14页
第14页 / 共29页
多媒体与网络编程实验报告.docx_第15页
第15页 / 共29页
多媒体与网络编程实验报告.docx_第16页
第16页 / 共29页
多媒体与网络编程实验报告.docx_第17页
第17页 / 共29页
多媒体与网络编程实验报告.docx_第18页
第18页 / 共29页
多媒体与网络编程实验报告.docx_第19页
第19页 / 共29页
多媒体与网络编程实验报告.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

多媒体与网络编程实验报告.docx

《多媒体与网络编程实验报告.docx》由会员分享,可在线阅读,更多相关《多媒体与网络编程实验报告.docx(29页珍藏版)》请在冰点文库上搜索。

多媒体与网络编程实验报告.docx

多媒体与网络编程实验报告

实验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_wDeviceID,MCI_SET,MCI_SET_TIME_FORMAT,(DWORD)(LPVOID)&mciSetParam);

if(dwOpenFlag)

returndwOpenFlag;

return0;

}

DWORDCWave:

:

Play()

{

MCI_PLAY_PARMSmciPlayParam;

DWORDdwPlayFlag;

dwPlayFlag=mciSendCommand(m_wDeviceID,MCI_PLAY,NULL,(DWORD)(LPVOID)&mciPlayParam);

if(dwPlayFlag)

returndwPlayFlag;

else{

m_bPlaying=TRUE;

return0;

}

}

voidCWave:

:

Stop()

{

mciSendCommand(m_wDeviceID,MCI_STOP,NULL,NULL);

}

DWORDCWave:

:

Close()

{

if(m_wDeviceID)

{

DWORDdwCloseFlag;

mciSendCommand(m_wDeviceID,MCI_STOP,MCI_WAIT,NULL);

dwCloseFlag=mciSendCommand(m_wDeviceID,MCI_CLOSE,NULL,NULL);

if(dwCloseFlag)

{

AfxMessageBox("关闭时出错");

returndwCloseFlag;

}

}

m_bOpen=FALSE;

m_bPlaying=FALSE;

m_wDeviceID=NULL;

return0;

}

3、新建一个基于对话框类的工程,取名为Waver。

在工作区FileView中右键单击Waver,选择“添加到工程”为工程添加WaveAudio.cpp

和WaveAudio.h文件。

然后在“工程”->“设置”的“连接”中为工程添加winmm.lib。

这之后,需要在文件WaverDlg.h的头部添加#include“WaveAudio.h”。

最后在CwaverDlg类中添加成员变量:

protect:

CWavem_Wave;

CStringm_strFileName;

4、按照要求设计对话框(IDD_WAVER_DIALOG)的界面。

要求:

“打开”—按钮—IDC_OPEN

“播放”—按钮—IDC_PLAY

“停止”—按钮—IDC_STOP

“关机”—按钮—IDC_EXIT

“状态”—静态文本—IDC_STATIC

编辑框—IDC_STATUS

5、用类向导为对话框添加控件变量

IDC_OPENm_btOpen

IDC_PLAYm_btnPlay

IDC_STATUSm_strStatus

6、用类向导为各个函数添加代码

voidCWaverDlg:

:

OnPlay()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(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:

Addyourcontrolnotificationhandlercodehere

m_btnPlay.EnableWindow(TRUE);

m_btnOpen.EnableWindow(TRUE);

if(m_Wave.m_bPlaying)

m_strStatus="播放停止……";

UpdateData(FALSE);

m_Wave.Stop();

}

voidCWaverDlg:

:

OnExit()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

OnCancel();

}

6、运行结果

【测试题2】

BMP位图显示程序,如下图所示,用一个简单的SDI工程实现单击“文件”->“打开”,选择一个.bmp文件,如果不是真正的BMP文件,或者不是真彩色的BMP文件,程序都将报告有关信息。

如果用户选择的是真彩色的BMP文件,则程序会在客户区显示整个图像。

需求分析:

1,项目背景和原因。

通过编写图片浏览器进一步加深对VC++编程的理解

2,视频播放器的功能

界面上有“选择图片”、“改变图片大小”两个按钮。

“选择图片”用于打开一个图片文件,文件格式不限;

“改变图片大小”用于扩大或缩小图片。

3功能列表  

“打开图片”----------OnFileopen()

“改变图片大小”---------OnVideo1x()、OnVideo2x()

4,具体实现步骤 

1、建立工程,,工程名为Image。

2、设计界面按钮

3、功能列表

“打开”

voidCCTLY2412Dlg:

:

OnFileopen()

{

//TODO:

Addyourcommandhandlercodehere

charszFileFilter[]=

"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()

“静音”------------------OnQiuet()

“消除静音”------------OnHuifu()

5,具体实现步骤  

首先:

注册该控件在windows“运行”里写入:

regsvr32msdrm.ocx单击确定。

1、建立基于对话框的工程,工程名为CTLY2412。

2、删除IDD_PLAYER_DIALOG对话框中的一个OK按钮、一个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。

如图:

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()

{

//TODO:

Addyourcommandhandlercodehere

m_AMovie.SetFileName("");

}

----------------------------------------------------------------------------------------------------------

voidCCTLY2412Dlg:

:

OnFileexit()

{

//TODO:

Addyourcommandhandlercodehere

OnCancel();

}

-------------------------------------------------------------------------------------------------------------

voidCCTLY2412Dlg:

:

OnPlaystart()

{

//TODO:

Addyourcommandhandlercodehere

m_AMovie.Run();

SetTimer(0,20,NULL);//设置定时器

}

-------------------------------------------------------------------------------------------------------------

voidCCTLY2412Dlg:

:

OnPlaypause()

{

//TODO:

Addyourcommandhandlercodehere

m_AMovie.Pause();

}

------------------------------------------------------------------------------------------------------------

voidCCTLY2412Dlg:

:

OnPlaystop()

{

//TODO:

Addyourcommandhandlercodehere

m_AMovie.Stop();

KillTimer(0);//关掉定时器

}

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();

}

----------------

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2