1、多 媒 体 音 频,多媒体音频处理技术不断的发展,并得到广泛应用。例如:视频图像的配音,静态图像的解说,可视电话、电视会议的语音,游戏中的音响效果等等。本章将介绍如何在Windows应用程序中实现音响效果,同时还将说明如何使用多媒体接口MCI来播放各种多媒体文件。在多媒体中,存储声音信息的文件格式主要有:WAV文件、MIDI文件、VOC文件、MP3文件等。我们最常见的是WAV文件和MP3文件两种。因此我们主要介绍WAV文件和MP3文件的播放。,8.1 加载应用程序Wave资源,如果程序中需要播放一些较小的wav文件,可以将wav文件加载为应用程序的资源,这样,磁盘中就不需要保留wav文件了,程
2、序中可以直接使用wav资源文件就可以了。当然,这么做会增加应用程序的大小,但是,对于较小的wav文件,采用这种方式还是合理的。为了播放wav资源,需要使用系统提供的PlaySound函数,该函数不仅可以播放wav资源,还可以播放wav文件。,PlaySound,语法格式如下:BOOL PlaySound(LPCSTR pszSound,HMODULE hmod,DWORD fdwSound);参数说明:pszSound:表示播放声音的字符串,可以是表示资源的字符串,也可以是表示wav文件的字符串,其最大长度为256个字符,包括终止符。hmod:表示包含wav资源的可执行文件句柄。fdwSoun
3、d:表示声音的播放标记,例8_1 向应用程序中加载声音并播放加载的声音,创建一个单文档/视图结构的应用程序,视图基类为CformView,工程名称为“LoadRes”在工作区的资源视图标签页(ResourceView)中鼠标右键单击根节点,在弹出的快捷菜单中选择“Import”菜单项,导入一个“wav”文件 引用Mmsystem.h头文件和Winmm.lib库文件(在CLoadResView.cpp中),在视图窗口中添加一个按钮,处理按钮的单击事件。void CLoadResView:OnDemoWave()PlaySound(MAKEINTRESOURCE(IDR_BUTTONWAVE),A
4、fxGetResourceHandle(),SND_ASYNC|SND_RESOURCE|SND_NODEFAULT);/播放声音资源5)运行程序,单击按钮,将播放声音资源。提示:我们在设计应用程序时,如果资源文件比较大,不建议将资源文件加载到可执行文件中,这样会导致应用程序变得非常庞大。,8.2 播放Wav文件,虽然可以使用PlaySound函数可以播放wav文件,但是该函数有一个缺点,就是音频文件必须完全载入物理内存,如果音频文件较大,则不适合使用PlaySound函数。此时,可以使用mciSendCommand函数来取代PlaySound函数实现wav文件的播放。,mciSendComm
5、and函数,语法如下:MCIERROR mciSendCommand(MCIDEVICEID IDDevice,UINT uMsg,DWORD fdwCommand,DWORD_PTR dwParam);参数说明:IDDevice:表示接收命令消息的MCI设备标识符。uMsg:表示命令消息,,【例8_2】播放wav文件,1)创建一个单文档/视图结构的应用程序,视图基类为CFormView,工程名称为“PlayWave”。2)引用Mmsystem.h头文件和Winmm.lib库文件。#include Mmsystem.h/应用头文件#pragma comment(lib,“Winmm.lib”)
6、/引用库文提示:为了在程序中使用mciSendCommand函数,需要进行步骤(2)操作,即引用Mmsystem.h头文件,链接Winmm.lib库文件。3)定义一个CPlayWave类,用于打开波形设备、播放wav文件、关闭波形设备。,4)向视图类中添加一个CPlayWave成员。CPlayWave wave;5)向视图类中添加一个按钮,处理按钮的单击事件。/定义一个CPlayWave成员void CPlayWaveView:OnBtPlay()wave.Stop();/停止播放 wave.Play(m_hWnd,Windows XP 登录音.wav);/开始播放wav文件,8.3 设计简单
7、音频播放器,【例8_3】如何利用mciSendCommand函数设计一个音频播放器。具体步骤如下:1)创建一个基于对话框的应用程序,工程名称为“AudioMediaPlayer”。2)设计对话框资源如图8_3所示。3)引用Mmsystem.h头文件和Winmm.lib库文件。#include Mmsystem.h/应用头文件#pragma comment(lib,Winmm.lib)/引用库文件,4)定义一个CPlayWave类,具体代码播放wav文件的步骤3。5)处理“添加”按钮的单击事件,添加音频文件到列表中。6)向对话框类中添加CPlayWave类型成员wave。CPlayWave wa
8、ve;7)处理列表框的双击事件,播放当前选择的歌曲。,9.2 使用控件播放AVI文件,avi全称Audio Video Interleaved,即音频视频交错文件,是微软公司开发的一种符合RIFF文件规范的数字音频与视频文件格式。avi文件是最常见的音频视频文件格式之一,下面将介绍如何播放avi文件。播放avi文件最简单的方法是使用微软公司提供的多媒体控件。下面通过一个示例来介绍如何使用多媒体控件播放avi文件。,例9-2 使用多媒体控件播放avi文件,1)创建一个MFC基于对话框的工程,工程名称为“PlayAvi”。2)在对话框中鼠标右键单击,在弹出快捷菜单中选择“Insert ActiveX Control”菜单项,打开“Insert ActiveX Control”窗口,如图9_4所示。3)在“Insert ActiveX Control”窗口中选择“Microsoft Multimedia Control”控件,单击“OK”按钮将其添加到对话框中。4)利用类向导窗口将新添加的控件命名为“m_Avi”。5)向对话框中添加一个按钮,处理按钮的单击事件。,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1