版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、南京工程学院实验报告课 程名称多媒体编程基础实验项目名称音频和视频实验学生班级多媒体132实验学生姓名滕超学号 202130229同组学生姓名无实验时间 2016 年5月26日实验地点 信息楼A213i实验 5 音频/视频处理一、实验目的:1 理解Windows 系统中音频、视频处理的方法。2理解MCI 接口的概念。3了解音视频处理技巧,以及实际应用方法4掌握实现音频播放器和视频播放器的常用方法。二、实验环境及开发工具:PC 机、 Windows 8.1 操作系统、Visual C+ 2013三、实验要求及内容:1) 理解第 9 章教材例题及上课所讲的参考例程。2) 运用学过的知识,在理解例题
2、的基础上自己编写一个多媒体播放器应用程序,包括:一个音频(MP3、wma)播放器和一个视频播放器处理(avi、wmv、asf)程序,要求具有以下功能:? 可以播放本机中的音视频媒体文件文件;? 音频播放参照课堂提供的例子, 必须创建一个播放类来实现? 视频播放可以直接使用WMP 控件, 适当添加针对文件的操作功11音频设计流程图:力口音频界面设计如下:使用CPlayWave类/*PlayWave.h*/#pragma once#include "mmsystem.h" class CPlayWave I/定义保护保护成员 protected:MCIDEVICEID m_De
3、viceID;/记录波形设备IDMCIDEVICEID m_ElementID;/记录波形元素IDpublic:CPlayWave(void);CPlayWave(void);DWORD InitDevice(void);DWORD TeminalDevice(void);DWORD Play(HWND hWnd, LPCWSTR pFileName);DWORD Stop(void);DWORD Pause();DWORD Resume();/*PlayWave.cpp*/#include "StdAfx.h"#include "PlayWave.h初始化设备I
4、D初始化元素ID调用InitDevice 方法初CPlayWave二CPlayWave(void) m_DeviceID = 0;/m_ElementID = 0;/InitDevice();/始化设CPlayWave:CPlayWave(void) if (m_ElementID)Stop();if (m_DeviceID) TeminalDevice();/判断波形元素是否为0 停止波形元素判断波形设备是否为0 停止波形设备定义一个整型变量如果设备ID为0DWORD CPlayWave:InitDevice(void) DWORD dwResult = 0;/if (m_DeviceID
5、= 0)/MCI_OPEN_PARMS mcilnitParms; /定义打开参数mcilnitParms.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 = mcilnitParms.wDevicelD;return dwResult;DWORD CPlayWav
6、e:TeminalDevice(void)DWORD dwResult = 0;/定义一个整型变量if (m DeviceID)/判断设备ID是否为0/关闭波形设备dwResult = mciSendCommand(m_DeviceID, MCI_CLOSE, NULL, NULL);一一m DeviceID = 0;/将波形设备ID设置为0return dwResult; DWORD CPlayWave:Play(HWND hWnd, LPCWSTR pFileName) IMCI_OPEN_PARMS mciOpenParms;/定义打开参数memset(&mciOpenParms
7、, 0, sizeof(MCI_OPEN_PARMS); 初始化参数 mciOpenParms.lpstrElementName = pFileName; /设置文件名DWORD dwResult = 0;/定义整型变量dwResult = mciSendCommand(m_DeviceID, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciOpenParms);/1开波形元素if (!dwResult)_m_ElementID = mciOpenParms.wDevicelD; / 获取波形元素 IDMCI_PLAY_PARMS mciP
8、layParms; / 定义播放参数 mciPlayParms.dwCallback = (DWORD)hWnd; /设置播放参数dwResult = mciSendCommand(m_ElementID, MCI_PLAY,MCI NOTIFY,(DWORD)(LPVOID)&mciPlayParms); / 播放 wav文件return dwResult; DWORD CPlayWave:Stop(void) DWORD dwResult = 0;/定义一个整型变里/判断波形元素if (m_ElementID)ID是否无0/关闭波形元素/设置波形元素IDdwResult = mci
9、SendCommand(m_ElementID, MCI_CLOSE, NULL, NULL);m_ElementID = 0;为0 return dwResult;DWORD CPlayWave二Pause() mciSendCommand(m_ElementID, MCI_PAUSE, 0, NULL); return 0;DWORD CPlayWave:Resume() ImciSendCommand(m_ElementID, MCI_RESUME, 0, NULL);return 0;/*+*/ “添加”按钮的事件处理void CMusicDlg:OnBnClickedAddlist(
10、)/ TODO:在此添加控件通知处理程序代码/m_List.ResetContent();/清空列表CFileDialog flDlg(TRUE, NULL, NULL, OFN HIDEREADONLY | OFN_OVERWRITEPROMPT| OFN_ALLOWMULTISELECTt频文件 |*wav;*mp3;*wma|", this);/定义一个问价打开对话框if (flDlg.DoModal() = IDOK) /判断用户是否按 OK®钮POSITION pos = flDlg.GetStartPosition(); /获取文件名列表的首位置while (p
11、os != NULL)/利用循环遍历文件名列表m_List.AddString(flDlg.GetNextPathName(pos); /将文件名添加的列表框控件中“播放”按钮添加事件处理void CMusicDlg:OnLbnDblclkList1()/ TODO:在此添加控件通知处理程序代码int selIndex = m_List.GetCurSel(); / 项索引if (selIndex != LB_ERR)/定义一个字符串对象CString str;根据索引获取当前项目的字符用m_List.GetText(selIndex, str);/停止播放wave.Stop();wave.T
12、eminalDevice();/开始播放歌曲wave.Play(m_hWnd, str);.双击列表框播放音乐void CMusicDlg:OnLbnDblclkList1()/ TODO:在此添加控件通知处理程序代码int selIndex = m_List.GetCurSel(); / 项索引if (selIndex != LB_ERR)/获取当前选择的列表判断是否有项目被选中获取当前选择的列表判断是否有项目被选中/定义一个字符串对象CString str;根据索引获取当前项目的字符申m_List.GetText(selIndex, str);/小止播放wave.Stop();wave.T
13、eminalDevice();/开始播放歌曲wave.Play(m_hWnd, str);.“暂停”和“继续”事件处理void CMusicDlg二OnBnClickedBstopPlay() wave.Pause();is_stop = !is_stop;GetDlgItem(IDC_BSTOP_PLAY)->SetWindowText(L'继续) if (is_stop).wave.Resume();GetDlgItem(IDC_BSTOP_PLAY)->SetWindowText(L”暂停) 视频播放器设计流程图:初颁描放器祝膝般放器定义变量:CWMPPlayer4
14、m_play;CWMPControls m_mediacontrol; /控制按钮关联CWMPSettings m_mediasetting; /设置按钮关联CWMPMedia m_media; / 媒体CProgressCtrl *m_progress; / 进度条“打开”按钮事件处理void CVideoPlayer二OnBnClickedVideoopen() CString filename;CFileDialog dlg(TRUE, NULL, L"*", OFN_FILEMUSTEXIST,L"串流多媒体(*asf) | *asf |"L&q
15、uot;音频视频交错格式(*avi) | *.avi |"L"即时播音系统(*rm) | *.rm |"L"波音音频设备(*wav) | *.wav |"L"所有文件(*) | * |");if (IDOK = dlg.DoModal()/播放filename = dlg.GetPathName(); m_play.put_URL(filename);m_media = static_cast<CWMPMedia>(m_play.newMedia(filename);m progress->SetRange
16、(0, (int)m media.get duration(); /媒体总长度m_progress->SetPos(0); .“播放”按钮事件处理void CVideoPlayer:OnBnClickedVideoplay() m_mediacontrol.play();.“暂停”按钮事件处理void CVideoPlayer二OnBnClickedVideosuspend() m_mediacontrol.pause();.“停止”按钮事件处理void CVideoPlayer:OnBnClickedVideostop() m_mediacontrol.stop();.“全屏”按钮事件
17、处理void CVideoPlayer二OnBnClickedfullscreen() m_play.put_fullScreen(TRUE); 一 一“音量-”按钮事件处理void CVideoPlayer:OnBnClickedVideol() m_mediasetting.put_volume(m_mediasetting.get_volume() - 10); “音量+”按钮事件处理void CVideoPlayer:OnBnClickedVideor() m_mediasetting.put_volume(m_mediasetting.get_volume() + 10); 一一一一
18、“进度条”控件处理void CVideoPlayer二PlayStateChangeOcx1(long NewState) if (NewState = 3)/播放状态时,开启定时器SetTimer(1, 1000, NULL);else if (NewState = 1)/停止时,关闭定时器,进度条回KillTimer(1);elseKillTimer(1);void CVideoPlayer:OnTimer(UINT PTR nIDEvent)if (nIDEvent != 1)return;m_progress->SetPos(m_progress->GetPos() + 1); CDialogEx:OnTimer(nIDEvent);“快进”按钮事件处理void CVideoPlayer二OnBnClickedBtnfront() m mediacontrol.fastForward(); /“快退”按钮事件处理void CVideoPlayer二OnBnClickedBtnback() m mediacon
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网上银行规范制度
- 机关公文签批制度规范
- 修订了相关制度规范
- 宴会布场制度规范
- 陶泥坊管理制度规范
- 规范营运车辆管理制度
- 书屋规范管理制度
- 物流客服部规范制度
- 边检新警夜班制度规范
- 餐厅出菜制度规范标准
- 鹿邑县2025年事业单位引进高层次人才备考题库及答案详解(新)
- 2025云南昆明巫家坝城市发展建设有限公司社会招聘14人笔试历年难易错考点试卷带答案解析
- 医院科室文化建设与礼仪
- 2025年大学(直播电商实训)管理实操试题及答案
- 医院重症医学科主任谈重症医学治疗
- 云南省2025年普通高中学业水平合格性考试地理试题
- 2025贵州磷化(集团)有限责任公司12月招聘笔试参考题库及答案解析
- 基础土方回填施工工艺方案
- 征信修复合同范本
- 2025年苏州工业园区领军创业投资有限公司招聘备考题库及一套答案详解
- 天一大联考海南省2026届数学高二上期末统考试题含解析
评论
0/150
提交评论