第13章多媒体编程《C++高级编程》13.1多媒体概述媒体:承载信息的载体,包括感觉、表示、显示、存储、传输媒体。详见附带文件1。多媒体:多种媒体的组合。多媒体计算机技术中的媒体指表示媒体,如文字、图形、声音或图像等。13.1.1视觉类媒体视觉类媒体静态图像动态图像位图图像矢量图形视频动画符号13.1.1视觉类媒体⒈位图图象:我们将所观察到的图像按行列进行数字化,将图像的每一点都数字化为一个值,所有的这些值就组成了位图图像。位图图像是所有视觉表示方法的基础。位图图像又称为光栅图像或点阵图像。在计算机中,位图图像用像素点进行描述。有序排列的像素点表达了自然景物的形象、亮度和色彩,而像素点又是由二进制进行描述的。13.1.1视觉类媒体位图图像适于表现逼真照片或要求精细细节的图像,因此位图图像的字节数比较大。放大位图图像的尺寸时,要增加像素个数,会使图像变模糊,而缩小尺寸时,要减少像素来使图像变小,原图会损失细节。13.1.1视觉类媒体13.1.1视觉类媒体⒉矢量图形:图形是图像的抽象,它反映了图像上的关键特征,例如点、线、面等。图形的表示不直接描述图像的每一点,而是描述产生这些点的过程和方法,即用矢量来表示。图形是计算机在平面坐标系和空间坐标系中,通过对运算表达式进行矢量运算和对坐标数据进行描述而形成的运算结果。由于图形具有方向和长度,又被称作“矢量图”。13.1.1视觉类媒体13.1.1视觉类媒体⒊动态图像:动态图像可分为两种类型。当人工绘制的图形或计算机产生的图形以动态形式表现出来时,称为“动画”;当图像是实时获取的自然景物时,称为“视频”。动态图像的产生是由于人眼睛的视觉滞留效应,当多幅图像连续放映时,就看到了所谓的动态图像(标准25-30帧/秒)。⒋符号:13.1.1视觉类媒体符号中也包括文字和文本。由于符号是我们人类创造出来表示某种含义的,所以它与使用者的知识水平有关,是比图形更高一级的抽象。必须具有特定的知识,才能解释特定的符号,才能解释特定的文本(例如语言),符号的表示是用特定值来表示的。13.1.2听觉类媒体⒈波形声音:波形文件包含所有声音形式。因为任何声音均可按采样量化,并恰当恢复。关于采样量化的补充说明:文件类型以后缀.wav表示。音频的采样量化采样频率越高,数字化音频的质量也就越高。量化位数越大,对音频信号的采样精度就越高。13.1.2听觉类媒体⒉语音:语音也可以表示为波形声音,但波形声音表示不出语言、语音学的内涵。语音是对讲话声音的一次抽象。⒊音乐:符号化的声音,以乐谱作为符号。(MusicalInstrumentDigitalInterface)13.1.2听觉类媒体MIDI:乐器数字接口是在1983年由MIDI制造者协会(MMA)提出的,作为一个控制电子乐器的标准化串行通信协议。该协议允许电子合成器互相通信,而不考虑制造厂家是谁。MIDI数据不是音频信号,它相当于乐谱,其中包含乐谱的所有演奏信息,如音调、乐器、节奏等,MIDI数据需要经过声音合成器(相当于乐器)的解释后才能产生声音。因此,MIDI文件非常小,便于网络传输。但最终听到的声音的质量会受到本地发声元件的影响。13.1.2听觉类媒体13.1.3Win32的多媒体服务⒈常用的Windows多媒体服务:P55⒉Windows的多媒体服务结构:由三个软件模块所组成:WINMM库,它提供了MCI服务和低级多媒体函数。多媒体设备驱动程序,它提供了低级WINMM函数与多媒体设备。MCI驱动程序,它提供了媒体设备的高级控制。⒊包含文件:P5613.1.3Win32的多媒体服务VC++中用以下方式进行调用:#includeWINDOWS.H#includeMmsystem.h#pragmacomment(lib,“winmm.lib”)//项目设置关于MCI:P5613.2VC++开发工具中声音的处理计算机中声音的种类:音频CDMP3文件波形音频文件MIDI文件以下主要介绍波形音频文件的播放。13.2.1波形声音的特点⒈频率:⒉信息量:采样的频率等于波形被等分的份数,标准的采样频率主要有:44.1kHz,22.05kHz,11.025kHz。频率越高声音越真实。采样位数:8位或16位。位数越高采样精度越高。13.2.1波形声音的特点声音的记录产生一个波形(单声道)或是两个波形(双声道)。波形文件的数据量是十分巨大的,如不经压缩,采样频率仅为11.025kHz时,数据量为0.66MB/min,因而在实际运用中常常要经过压缩以减少数据量。⒊声道数:⒋数据量:13.2.2波形音频文件的播放利用低级的以wave为前缀的WIN32API函数,应用它可以获得丰富的功能,但必须编写较复杂的程序代码。利用高级音频函数,使用简单,但功能有限。利用Windows的媒体控制接口MCI较好。播放波形音频文件可以使用以下三种方法之一:MessageBeep函数PlaySound函数sndPlaySound函数13.2.2波形音频文件的播放1.利用高级音频函数播放波形音频文件Windows提供了三个特殊的播放声音的高级音频函数:13.2.2波形音频文件的播放(1)MessageBeep:一般用来播放系统报警声音。应用有限,只能用来播放少数系统定义的声音。其原型声明和参数定义:P57PlaySound函数原型:BOOLPlaySound(LPCSTRpszSound,HMODULEHmod,DWORDfdwSound);13.2.2波形音频文件的播放(2)PlaySound函数:播放wave格式的声音。13.2.2波形音频文件的播放(3)sndPlaySound函数:功能与PlaySound类似。其原型声明和参数定义:P59下面通过一个程序实例来演示这3个函数的功能:fdwSound标志参数。(见P58页)pszSound声音文件名或内存中声音数据的指针等。Hmod应用程序的实例句柄,如果不用必须是NULL。13.2.2波形音频文件的播放这三个函数可以满足播放波形声音的一般需要,但它们播放的WAVE文件(波形声音文件)的大小一般不能超过100KB,如果要播放较大的WAVE文件,则应该使用MCI服务。13.2.2波形音频文件的播放2.利用MCI播放声音应用程序通过向MCI发送命令来控制媒体设备。利用MCI函数,可以把命令发送到任何设备,每个设备的有效命令取决于设备本身的能力。运用MCI函数能够播放wav文件,MIDI序列以及视频(AVI)文件等。13.2.2波形音频文件的播放(1)命令字符串•多媒体API函数mciSendString,该函数的声明:P61•MCI设备类型及设备名:P61表3-2•常用MCI命令:P62表3-3•MCI设备分类:简单设备和复合设备P6313.2.2波形音频文件的播放(2)命令消息•命令消息发送函数mciSendCommand,原型声明:P64•该函数用到的数据结构的说明:P6413.2.2波形音频文件的播放波形文件播放过程:(P65)13.程序实例13.3VC++开发工具中图像的处理⒈移动图像最普通的方法:擦除并重画⒉Windows图像移动的实现:BitBlt函数⒊WM_TIMER消息驱动:⑴SetTimer函数:设定定时器,产生消息⑵SetTimer函数:停止正在运行的定时器⑶OnTimer函数:由WM_TIMER消息激活⒋简单动画程序:P7413.4VC++开发工具中视频的处理⒈动画控件播放动画⑴CAnimateCtrl类及其成员函数:Create、Open、Play、Seek、Stop、Close⑵在资源中包含AVI文件:P78⑶动画控件的使用:⑷动画控件的局限性:①被播放AVI文件应满足的条件②动画颜色简单⒉MCI命令消息播放动画⑴实现方法:P78⑵应用举例:P79⒊其它方法播放动画⑴利用AVI系列的API函数:需编写大量代码⑵利用vfw.h中定义的MCIWnd类:13.4VC++开发工具中视频的处理