您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 多媒体编程音频视频实验报告汇总
1南京工程学院实验报告课程名称多媒体编程基础实验项目名称音频和视频实验学生班级多媒体132实验学生姓名滕超学号202130229同组学生姓名无实验时间2016年5月26日实验地点信息楼A2132实验5音频/视频处理一、实验目的:1.理解Windows系统中音频、视频处理的方法。2.理解MCI接口的概念。3.了解音视频处理技巧,以及实际应用方法4.掌握实现音频播放器和视频播放器的常用方法。二、实验环境及开发工具:PC机、Windows8.1操作系统、VisualC++2013三、实验要求及内容:1)理解第9章教材例题及上课所讲的参考例程。2)运用学过的知识,在理解例题的基础上自己编写一个多媒体播放器应用程序,包括:一个音频(MP3、wma)播放器和一个视频播放器处理(avi、wmv、asf)程序,要求具有以下功能:可以播放本机中的音视频媒体文件文件;音频播放参照课堂提供的例子,必须创建一个播放类来实现视频播放可以直接使用WMP控件,适当添加针对文件的操作功能。3音频设计流程图:音频界面设计如下:使用CPlayWave类/*PlayWave.h*/#pragmaonce#includemmsystem.hclassCPlayWave{//定义保护保护成员protected:MCIDEVICEIDm_DeviceID;//记录波形设备ID4MCIDEVICEIDm_ElementID;//记录波形元素IDpublic:CPlayWave(void);~CPlayWave(void);DWORDInitDevice(void);DWORDTeminalDevice(void);DWORDPlay(HWNDhWnd,LPCWSTRpFileName);DWORDStop(void);DWORDPause();DWORDResume();};/*PlayWave.cpp*/#includeStdAfx.h#includePlayWave.hCPlayWave::CPlayWave(void){m_DeviceID=0;//初始化设备IDm_ElementID=0;//初始化元素IDInitDevice();//调用InitDevice方法初始化设}CPlayWave::~CPlayWave(void){if(m_ElementID)//判断波形元素是否为0Stop();//停止波形元素if(m_DeviceID)//判断波形设备是否为0TeminalDevice();//停止波形设备}DWORDCPlayWave::InitDevice(void){DWORDdwResult=0;//定义一个整型变量if(m_DeviceID==0)//如果设备ID为0{5MCI_OPEN_PARMSmciInitParms;//定义打开参数mciInitParms.lpstrDeviceType=(LPWSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;dwResult=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_WAIT,(DWORD)(LPVOID)&mciInitParms);//打开波形设备m_DeviceID=mciInitParms.wDeviceID;}returndwResult;}DWORDCPlayWave::TeminalDevice(void){DWORDdwResult=0;//定义一个整型变量if(m_DeviceID)//判断设备ID是否为0{//关闭波形设备dwResult=mciSendCommand(m_DeviceID,MCI_CLOSE,NULL,NULL);}m_DeviceID=0;//将波形设备ID设置为0returndwResult;}DWORDCPlayWave::Play(HWNDhWnd,LPCWSTRpFileName){MCI_OPEN_PARMSmciOpenParms;//定义打开参数memset(&mciOpenParms,0,sizeof(MCI_OPEN_PARMS));//初始化参数mciOpenParms.lpstrElementName=pFileName;//设置文件名DWORDdwResult=0;//定义整型变量dwResult=mciSendCommand(m_DeviceID,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpenParms);//打开波形元素if(!dwResult){m_ElementID=mciOpenParms.wDeviceID;//获取波形元素IDMCI_PLAY_PARMSmciPlayParms;//定义播放参数mciPlayParms.dwCallback=(DWORD)hWnd;//设置播放参数dwResult=mciSendCommand(m_ElementID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&mciPlayParms);//播放wav文件}6returndwResult;}DWORDCPlayWave::Stop(void){DWORDdwResult=0;//定义一个整型变量if(m_ElementID)//判断波形元素ID是否为0{//关闭波形元素dwResult=mciSendCommand(m_ElementID,MCI_CLOSE,NULL,NULL);m_ElementID=0;//设置波形元素ID为0}returndwResult;}DWORDCPlayWave::Pause(){mciSendCommand(m_ElementID,MCI_PAUSE,0,NULL);return0;}DWORDCPlayWave::Resume(){mciSendCommand(m_ElementID,MCI_RESUME,0,NULL);return0;}/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/“添加”按钮的事件处理voidCMusicDlg::OnBnClickedAddlist(){//TODO:在此添加控件通知处理程序代码//m_List.ResetContent();//清空列表CFileDialogflDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,L音频文件|*.wav;*.mp3;*.wma||,this);7//定义一个问价打开对话框if(flDlg.DoModal()==IDOK)//判断用户是否按OK按钮{POSITIONpos=flDlg.GetStartPosition();//获取文件名列表的首位置while(pos!=NULL)//利用循环遍历文件名列表{m_List.AddString(flDlg.GetNextPathName(pos));//将文件名添加的列表框控件中}}}“播放”按钮添加事件处理voidCMusicDlg::OnLbnDblclkList1(){//TODO:在此添加控件通知处理程序代码intselIndex=m_List.GetCurSel();//获取当前选择的列表项索引if(selIndex!=LB_ERR)//判断是否有项目被选中{//定义一个字符串对象CStringstr;//根据索引获取当前项目的字符串m_List.GetText(selIndex,str);//停止播放wave.Stop();wave.TeminalDevice();//开始播放歌曲wave.Play(m_hWnd,str);}}双击列表框播放音乐voidCMusicDlg::OnLbnDblclkList1(){//TODO:在此添加控件通知处理程序代码intselIndex=m_List.GetCurSel();//获取当前选择的列表项索引if(selIndex!=LB_ERR)//判断是否有项目被选中{//定义一个字符串对象CStringstr;8//根据索引获取当前项目的字符串m_List.GetText(selIndex,str);//停止播放wave.Stop();wave.TeminalDevice();//开始播放歌曲wave.Play(m_hWnd,str);}}“暂停”和“继续”事件处理voidCMusicDlg::OnBnClickedBstopPlay(){wave.Pause();is_stop=!is_stop;GetDlgItem(IDC_BSTOP_PLAY)-SetWindowText(L继续);if(is_stop){wave.Resume();GetDlgItem(IDC_BSTOP_PLAY)-SetWindowText(L暂停);}}视频播放器设计流程图:9定义变量:CWMPPlayer4m_play;CWMPControlsm_mediacontrol;//控制按钮关联CWMPSettingsm_mediasetting;//设置按钮关联CWMPMediam_media;//媒体CProgressCtrl*m_progress;//进度条“打开”按钮事件处理voidCVideoPlayer::OnBnClickedVideoopen(){CStringfilename;CFileDialogdlg(TRUE,NULL,L*.*,OFN_FILEMUSTEXIST,L串流多媒体(*.asf)|*.asf|L音频视频交错格式(*.avi)|*.avi|L即时播音系统(*.rm)|*.rm|L波音音频设备(*.wav)|*.wav|L所有文件(*.*)|*.*||);if(IDOK==dlg.DoModal()){filename=dlg.GetPathName();m_play.put_URL(filename);//播放10}m_media=static_castCWMPMedia(m_play.newMedia(filename));m_progress-SetRange(0,(int)m_media.get_duration());//媒体总长度m_progress-SetPos(0);}“播放”按钮事件处理voidCVideoPlayer::OnBnClickedVideoplay(){m_mediacontrol.play();}“暂停”按钮事件处理voidCVideoPlayer::OnBnClickedVideosuspend(){m_mediacontrol.pause();}“停止”按钮事件处理voidCVideoPlayer::OnBnClickedVideostop(){m_mediacontrol.stop();}“全屏”按钮事件处理voidCVideoPlayer::OnBnClickedfullscreen(){m_play.put_fullScreen(TRUE);}“音量-”按钮事件处理voidCVideoPlayer::OnBnClickedVideol(){m_mediasetting.put_volume(m_mediasetting.get_volume()-10);}“音量+”按钮事件处理voidCVideoPlayer::OnBnClickedVideor(){m_mediasetting.put_volume(m_mediasetting.get_volume()+10);}11“进度条”控件处理voidCVideoPlayer::PlayStateChangeOcx1(longNewState){if(NewState==3)//播放状态时,开启定时器SetTimer(1,1000,NULL);els
本文标题:多媒体编程音频视频实验报告汇总
链接地址:https://www.777doc.com/doc-5867956 .html