多媒体编程音频视频实验报告(共15页)_第1页
多媒体编程音频视频实验报告(共15页)_第2页
多媒体编程音频视频实验报告(共15页)_第3页
多媒体编程音频视频实验报告(共15页)_第4页
多媒体编程音频视频实验报告(共15页)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上南京工程学院实 验 报 告课程名称 多媒体编程基础 实验项目名称 音频和视频 实验学生班级 多媒体132 实验学生姓名 滕超 学号 同组学生姓名 无 实验时间 2016 年 5 月 26 日 实验地点 信息楼A213 实验5 音频/视频处理一、实验目的:1理解Windows系统中音频、视频处理的方法。2理解MCI接口的概念。3了解音视频处理技巧,以及实际应用方法4掌握实现音频播放器和视频播放器的常用方法。 二、实验环境及开发工具:PC机、Windows 8.1操作系统、Visual C+ 2013三、实验要求及内容:1)理解第9章教材例题及上课所讲的参考例程。2)运用

2、学过的知识,在理解例题的基础上自己编写一个多媒体播放器应用程序,包括:一个音频(MP3、wma)播放器和一个视频播放器处理(avi、wmv、asf)程序,要求具有以下功能: 可以播放本机中的音视频媒体文件文件; 音频播放参照课堂提供的例子, 必须创建一个播放类来实现 视频播放可以直接使用WMP控件,适当添加针对文件的操作功能。音频设计流程图:音频界面设计如下:使用CPlayWave类/*PlayWave.h*/#pragma once#include mmsystem.hclass CPlayWave/定义保护保护成员protected:MCIDEVICEID m_DeviceID; /记录波

3、形设备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.hCPlayWave:CPlayWave(void)m_DeviceI

4、D = 0; /初始化设备IDm_ElementID = 0; /初始化元素IDInitDevice(); /调用InitDevice方法初始化设CPlayWave:CPlayWave(void)if (m_ElementID) /判断波形元素是否为0Stop(); /停止波形元素if (m_DeviceID) /判断波形设备是否为0TeminalDevice(); /停止波形设备DWORD CPlayWave:InitDevice(void)DWORD dwResult = 0; /定义一个整型变量if (m_DeviceID = 0) /如果设备ID为0MCI_OPEN_PARMS mci

5、InitParms; /定义打开参数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;return dwResult;DWORD CPlayWave:TeminalDevice(void)DWORD

6、 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)MCI_OPEN_PARMS mciOpenParms; /定义打开参数memset(&mciOpenParms, 0, sizeof(MCI_OPEN_PARMS); /初

7、始化参数mciOpenParms.lpstrElementName = pFileName; /设置文件名DWORD dwResult = 0; /定义整型变量dwResult = mciSendCommand(m_DeviceID, MCI_OPEN, MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpenParms); /打开波形元素if (!dwResult)m_ElementID = mciOpenParms.wDeviceID; /获取波形元素IDMCI_PLAY_PARMS mciPlayParms; /定义播放参数mciPlayParms.dwCallb

8、ack = (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/关闭波形元素dwResult = mciSendCommand(m_ElementID, MCI_CLOSE, NULL, NULL);m_Ele

9、mentID = 0; /设置波形元素ID为0return dwResult;DWORD CPlayWave:Pause()mciSendCommand(m_ElementID, MCI_PAUSE, 0, NULL);return 0;DWORD CPlayWave:Resume()mciSendCommand(m_ElementID, MCI_RESUME, 0, NULL);return 0;/*+*/“添加”按钮的事件处理void CMusicDlg:OnBnClickedAddlist()/ TODO: 在此添加控件通知处理程序代码/m_List.ResetContent(); /清

10、空列表CFileDialog flDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT| OFN_ALLOWMULTISELECT, L音频文件|*.wav;*.mp3;*.wma|, this); /定义一个问价打开对话框if (flDlg.DoModal() = IDOK) /判断用户是否按OK按钮 POSITION pos = flDlg.GetStartPosition(); /获取文件名列表的首位置while (pos != NULL) /利用循环遍历文件名列表 m_List.AddString(flDlg.GetN

11、extPathName(pos); /将文件名添加的列表框控件中“播放”按钮添加事件处理void CMusicDlg:OnLbnDblclkList1()/ TODO: 在此添加控件通知处理程序代码int selIndex = m_List.GetCurSel(); /获取当前选择的列表项索引 if (selIndex != LB_ERR) /判断是否有项目被选中/定义一个字符串对象CString str;/根据索引获取当前项目的字符串m_List.GetText(selIndex, str);/停止播放wave.Stop();wave.TeminalDevice();/开始播放歌曲wave.

12、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.TeminalDevice();/开始播放歌曲wave.Play(m_hWnd, str)

13、;“暂停”和“继续”事件处理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 m_play;CWMPControls m_mediacontrol; /控制按钮关联 CWMPSettings m_mediasetting

14、; /设置按钮关联 CWMPMedia m_media; /媒体 CProgressCtrl *m_progress; /进度条 “打开”按钮事件处理void CVideoPlayer:OnBnClickedVideoopen()CString filename;CFileDialog dlg(TRUE, NULL, L*.*, OFN_FILEMUSTEXIST,L串流多媒体(*.asf) | *.asf |L音频视频交错格式(*.avi) | *.avi |L即时播音系统(*.rm) | *.rm |L波音音频设备(*.wav) | *.wav |L所有文件(*.*) | *.* |);i

15、f (IDOK = dlg.DoModal()filename = dlg.GetPathName();m_play.put_URL(filename); / 播放m_media = static_cast(m_play.newMedia(filename);m_progress-SetRange(0, (int)m_media.get_duration(); /媒体总长度 m_progress-SetPos(0);“播放”按钮事件处理void CVideoPlayer:OnBnClickedVideoplay()m_mediacontrol.play();“暂停”按钮事件处理void CVi

16、deoPlayer:OnBnClickedVideosuspend()m_mediacontrol.pause();“停止”按钮事件处理void CVideoPlayer:OnBnClickedVideostop()m_mediacontrol.stop();“全屏”按钮事件处理void CVideoPlayer:OnBnClickedfullscreen()m_play.put_fullScreen(TRUE);“音量-”按钮事件处理void CVideoPlayer:OnBnClickedVideol()m_mediasetting.put_volume(m_mediasetting.ge

17、t_volume() - 10);“音量+”按钮事件处理void CVideoPlayer:OnBnClickedVideor()m_mediasetting.put_volume(m_mediasetting.get_volume() + 10);“进度条”控件处理void CVideoPlayer:PlayStateChangeOcx1(long NewState)if (NewState = 3) /播放状态时, 开启定时器 SetTimer(1, 1000, NULL);else if (NewState = 1) /停止时, 关闭定时器, 进度条回0 KillTimer(1);els

18、eKillTimer(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_mediacontrol.fastReverse();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论