《多媒体编程技术.ppt》由会员分享,可在线阅读,更多相关《多媒体编程技术.ppt(56页珍藏版)》请在三一办公上搜索。
1、1,多媒体编程技术,计算机教学实验中心,软件开发技术基础,2,6.1多媒体基础,1.声音机械振动或气流扰动引起周围弹性媒质发生波动,产生声波,再经过人类听觉器官的感知,便是声音。,3,声音要素,声音的三个要素是音调、响度和音色。它们与声波的频率、声压和频谱结构对应,4,音频的数字化,计算机处理声音的第一步是将声音数字化,数字化就是将连续信号变成离散信号。首先在时间上离散,取有限个时间点,称为采样。然后在幅度上离散,取有限个幅度值,称为量化。再经过编码,将模拟信号变成数字信号。,5,数字音频的性能指标,采样频率Nyquist定理3个常用的采样频率分别为11.025kHz、22.05kHz和44.
2、1kHz。分别对应AM广播、FM广播和CD高保真音质声音。,6,不同质量的声音的性能指标,7,数字音频的性能指标,样本精度:表示每个声音样本的二进制位数。也叫采样精度或量化位数。它反映度量声音波形幅度的精度。例如,每个声音样本用16位表示,则量化样本值在065535的整数范围内,它的精度是输入信号的1/65536。数据传输率用每秒钟传输的数据位数表示:数据传输率(bits)=采样频率(Hz)量化位数(bit)声道数,8,音频文件,WAVE文件是一种通用的音频数据文件,文件扩展名为“WAV”,Windows系统和一般的音频卡都支持这种格式文件的生成、编辑和播放。CD激光唱盘中包含的就是WAVE格
3、式的波形数据,只是扩展名没写成“.WAV”。WAVE文件由三部分组成:文件头(WAVE,结构,大小)数字化参数(Hz,bit,Channel,Coding)波形数据(Data),9,MP3文件是采用MP3算法压缩生成的数字音频数据文件,以“.MP3”为文件后缀。将音频信息用10:1甚至12:1的压缩率,变成容量较小的数据文件。Real Audio是Real networks推出的一种音乐压缩格式,它的压缩比可达到96:1,支持流式播放,在网上比较流行。(ra,rm),10,2.数字图像,图像是客观景物通过视觉器官在人类头脑中的感知。f(x,y)fR(x,y),fG(x,y),fB(x,y),图
4、像的数字化:采样量化/整量,11,图像的分辨率,图像的属性之一是包含图像的像素数目(Pixel dimensions),它是指位图图像的宽度和高度方向上含有的像素数目。图像分辨率(Image resolution)指数字化图像的大小,以水平和垂直像素点数表示。(图像尺寸)(屏幕分辨率、显示分辨率、打印分辨率、扫描分辨率),12,图像的深度,图像深度(Image Depth)也称图像的位深,是指描述图像中每个像素的数据所占的二进制位数。图像的每一个像素对应的数据通常可以是1位(bit)或多位,用于存放该像素的颜色、亮度等信息,数据位数越多,可以表达的颜色数目就越多。真彩色图像是指当R、G、B分量
5、各用8位来表示一个像素的颜色值,此时可生成的颜色数是16777216种。,13,矢量图和位图,矢量图主要用于工程图、白描图、卡通漫画等,这些图形可以分解为单个的线条、文字、圆、矩形、多边形等单个的图形元素。再用一个代数式来表达每个被分解出来的元素。位图图像,亦称为点阵图像,是由称作像素的单个点组成的。这些点可以进行不同的排列和染色以构成图样。当放大位图时,可以看见赖以构成整个图像的无数单个方块。,14,灰度图和彩色图,图像可以分为灰度图(grayscale image)和彩色图(color image)。灰度图按照灰度等级的数目来划分。只有黑白两种颜色的图像称为单色图像如果灰度图每个像素的像素
6、值用一个字节表示,灰度值级数就等于256级,每个像素可以是0255之间的任何一个值。彩色图像可以按照颜色的数目来划分,如256色图表示该图像中颜色的总数目不超过256种。,15,颜色,自然界中的任何一种颜色都可以由R、G、B这3种颜色值之和来确定:颜色R(红色的百分比)G(绿色的百分比)B(蓝色的百分比)真彩色图像用3个字节表示一个像素,记录该像素的颜色,分别表示红色分量的百分比,绿色分量的百分比和蓝色分量的百分比,16,图像的文件格式,BMP(Bitmap-File)图像文件是Windows采用的图像文件格式 GIF(Graphics Interchange Format)文件最多只支持8位
7、(256色)。GIF文件内部分成许多存储块,用来存储多幅图像或者是决定图像表现行为的控制块,用以实现动画和交互式应用。JPEG是一个适用范围很广的静态图像数据压缩标准,17,JPEG:联合摄影专家组,JPEG 图片以 24 位颜色存储单个图像。JPEG 是与平台无关的格式,支持最高级别的压缩压缩比率可以高达 100:1。(JPEG 格式可在 10:1 到 20:1 的比率下轻松地压缩文件,而图片质量不会下降。)JPEG 压缩可以很好地处理写实摄影作品。对于颜色较少、对比级别强烈、实心边框或纯色区域大的较简单的作品,JPEG 压缩无法提供理想的结果。有时,压缩比率会低到 5:1,严重损失了图片完
8、整性。,18,JPEG图像,优点:摄影作品或写实作品支持高级压缩。利用可变的压缩比可以控制文件大小。支持交错(对于渐近式 JPEG 文件)。JPEG 广泛支持 Internet 标准。缺点:有损耗压缩会使原始图片数据质量下降。当您编辑和重新保存 JPEG 文件时,JPEG 会混合原始图片数据的质量下降。这种下降是累积性的。JPEG 不适用于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片。,19,TIFF:标记图像文件格式,TIFF 以任何颜色深度存储单个图像。被认为是印刷行业中受到支持最广的图形文件格式。TIFF 格式是可扩展的格式。程序员可以修改原始规范以添加功能或满足
9、特定的需要。修改规范可能会导致不同类型的 TIFF 图片之间不兼容。优点:TIFF 是广泛支持的格式,尤其是在 Macintosh 计算机和基于 Windows 的计算机之间。支持可选压缩。可扩展格式支持许多可选功能。缺点:TIFF 不受 Web 浏览器支持。可扩展性会导致许多不同类型的 TIFF 图片。并不是所有 TIFF 文件都与所有支持基本 TIFF 标准的程序兼容。,20,6.2音频的播放与处理,1.使用MCI播放音频Windows MCI(Media Control Interface)是Windows提供的控制多媒体设备的高层、通用的命令接口。它提供一组与设备无关的函数和命令,可有
10、效地控制多媒体设备。Windows采用两种MCI接口与MCI设备通信:一是使用命令消息接口函数,直接控制MCI设备;二是使用命令字符串接口函数,基于文本接口或命令脚本来控制MCI设备。,21,命令消息接口使用消息控制MCI设备。标志的位向量以及数据结构的指针是带着消息发送的,这些标志和信息数据结构允许应用程序把信息发送到设备,并接收返回的数据。MCI把设备消息和信息直接发送到设备。命令字符串接口使用文本命令控制MCI设备。文本串中包含执行一个命令所需的所有信息.不同之处在于它们的基本命令结构及其将消息发送到设备的原理不同。,22,(1)命令字符串接口函数mciSendString,MCIERR
11、OR mciSendString(LPCTSTR lpszCommand,LPTSTR lpszReturnString,UINT cchReturn,HANDLE hwndCallback)各参数含义如下:lpszCommand 指向以0结尾的MCI命令字符串。如:/打开01.wave波形文件 open c:music01.wave/播放mysound设备,从位置1000到2000 play mysound from 1000 to 2000 notify,23,lpszReturnString 指向一个接受返回信息的缓冲区。如果不需要返回信息,可将该参数置为NULL。cchReturn 返
12、回信息缓冲区的大小,以字节计算。hwndCallback 如果在命令参数中使用了notify,该参数指定回调的窗口句柄,否则为NULL。如果调用成功,该函数将返回0。,mciSendString,,24,【例6-1】使用命令字符串接口函数播放MP3文件。,#include#include#include#pragma comment(lib,winmm)/编译时链接int main()char szReturn256;MCIERROR errorCode=mciSendString(play j:musiconlytoyou.mp3,szReturn,sizeof(szReturn),NULL
13、);int i=0;for(;)coutNow Playing.ti+t secondendl;Sleep(1000);return 0;,25,(2)MCI命令消息接口函数mciSendCommand,MCIERROR mciSendCommand(MCIDEVICEID IDDevice,UINT uMsg,DWORD fdwCommand,DWORD_PTR dwParam);参数含义如下:IDDevice 接受命令消息的MCI设备的ID号。该参数不和MCI_OPEN命令消息一起使用。uMsg 命令消息。fdwCommand 命令消息的标志位。dwParam 指向包含命令消息参数结构的指
14、针。,26,【例6-2】使用命令消息接口函数播放wav文件。,#include#include#include#pragma comment(lib,winmm)/编译时链接int main()MCI_OPEN_PARMS openParms;openParms.lpstrDeviceType=waveaudio;openParms.lpstrElementName=j:musicrose.wav;MCIERROR errorCode=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_OPEN_TYPE,(DWORD)(LPMCI_OPEN_P
15、ARMS),27,MCI_OPEN的消息参数结构,typedef struct DWORD_PTR dwCallback;/低字节为MCI_NOTIFY标志存放了指定的窗口句柄 MCIDEVICEID wDeviceID;/返回给调用程序的ID号 LPCSTR lpstrDeviceType;/要打开的设备名 LPCSTR lpstrElementName;/附加的设备元素名(通常为文件名)LPCSTR lpstrAlias;/可选的设备别名 MCI_OPEN_PARMS;MCI_OPEN通过设备名打开一个设备。如果调用成功,为该设备分配的设备号会填入到wDeviceID字段中供以后的命令使用
16、,28,MCI_PLAY 消息参数结构,typedef struct DWORD_PTR dwCallback;DWORD dwFrom;/开始播放的位置 DWORD dwTo;/播放结束的位置 MCI_PLAY_PARMS;,29,MCI消息1,MCI_BREAKMCI_CAPTUREMCI_CLOSEMCI_CONFIGUREMCI_COPYMCI_CUEMCI_CUTMCI_DELETEMCI_ESCAPEMCI_FREEZE,MCI_GETDEVCAPSMCI_INDEXMCI_INFOMCI_LISTMCI_LOADMCI_MARKMCI_MONITORMCI_OPENMCI_PAS
17、TEMCI_PAUSEMCI_PLAY,30,MCI消息2,MCI_PUTMCI_QUALITYMCI_REALIZEMCI_RECORDMCI_RESERVEMCI_RESTOREMCI_RESUMEMCI_SAVEMCI_SEEKMCI_SETMCI_SETAUDIOMCI_SETTIMECODE,MCI_SETTUNERMCI_SETVIDEOMCI_SIGNALMCI_SPINMCI_STATUSMCI_STEPMCI_STOPMCI_SYSINFOMCI_UNDOMCI_UNFREEZEMCI_UPDATEMCI_WHEREMCI_WINDOW,31,(3)WAVE文件结构,声音的处
18、理最终是对声音数据的处理。声音数据以某种格式存放在计算机存储器中。RIFF(Resource Interchange File Format资源互换文件格式)是Microsoft公司定义的一种用于管理Windows环境中多媒体数据的文件格式。波形音频Wave、MDI和数字视频Avi文件都采用这种格式存储。,32,常见的WAVE语音文件主要有两种,单声道(11.025KHz采样率、8Bit的采样值)采样数据为8位的短整数(short int 00H-FFH)双声道(44.1KHz采样率、16Bit的采样值)每次采样数据为一个16位的整数(int)WAVE文件数据块包含以脉冲编码调制(PCM)格式
19、表示的样本,33,RIFF文件基本构成是称为“块”(Chunk)的单元,每个块有“ID”、“数据大小”及“数据”3部分所组成ID为4个字符所组成的代码,如RIFF,LIST等,指定块的标志ID;数据大小用来指定块的数据域大小,占用4个字节;数据用来描述具体的声音信号,它可以由若干个子块构成,一般情况下块与块是平行的,不能相互嵌套,34,WAVE文件的格式类型为“WAVE”。RIFF块包含两个子块:这两个子块的ID分别是“fmt”和“data”,其中fmt子块由结构WAVEFORMATEX所组成,其子块的大小就是sizeof(WAVEFORMATEX),数据组成就是WAVEFORMATEX结构中
20、的数据,35,WAVE文件结构,36,6.3 图像处理,1.WindowsGDI(图形设备接口)在Windows程序中,应用程序(包括Windows本身)的输出并不直接面向物理的设备,而是针对一个称之为设备环境(Device Context)的逻辑设备进行操作。设备环境包含了关于当前选定用于一种设备的画笔、画刷、字体和位图等信息,设备环境与实际设备之间的信息传送由Windows直接管理。MFC提供了用于若干不同类型的设备环境的类,应用程序在将任何东西画到设备中去之前,必须明确索取一个设备环境。,37,在MFC应用中绘图,在MFC应用程序中,所有的绘制调用均通过相应的设备环境对象实现。在MFC类
21、库中,用CDC类封装设备环境对象,并提供了在窗口的客户程序区域上画图的方法。所有图形的输出都可以使用CDC类提供方法来进行-对颜色进行操作、坐标映射和转换,对多边形和区域进行操作,绘制各种形状,绘制文本,处理字体等。,38,MFC中的绘图工具对象,MFC定义了若干种对应于Windows绘图工具的图形对象,包括画笔、画刷、字体、位图等。这些Windows绘图工具封装在MFC图形对象类中,并且都是由CGdiObject基类派生而来。这些图形对象类分别是:CPen、CBrush等。,39,画笔是用来画线的工具,是CPen类的对象。/声明画笔对象,并创建宽度为3的红色实线笔 CPen penRed(P
22、S_SOLID,3,RGB(255,0,0);/使用新的画笔,保存原来的画笔以便恢复 Cpen*pOldPen=pDC-SelectObject(,画笔CPen,40,线型,Value Meaning PS_SOLID The pen is solid.PS_DASH The pen is dashed.PS_DOT The pen is dotted.PS_DASHDOT The pen has alternating dashes and dots.PS_DASHDOTDOT The pen has dashes and double dots.PS_NULL The pen is inv
23、isible.PS_INSIDEFRAME,41,CDC:SelectObject()方法选定放入当前设备环境的新对象,并返回一个指向被替换对象的指针,因此,语句pOldPen=pDC-SelectObject(保存了原来的画笔。保存并恢复原来画笔的原因是,每个图形设备接口对象要占用一个HDC句柄,而可用的句柄数量是有限的,在使用完后要及时释放。,42,CBrush,/蓝色画刷CBrush brushBlue(RGB(0,255,0);/透明画刷brushBlue.CreateStockObject(NULL_BRUSH);/选择画刷pDC-SelectObject(,43,画线,画线工作需经
24、两步完成:首先确定线的起始端位置,这可通过调用成员函数MoveTo完成,其原型为:CPoint MoveTo(int x,int y);MoveTo将绘图位置移至指定坐标处,并返回移动前的绘图位置。确定了线的起点后,即可使用成员函数LineTo画线:BOOL LineTo(int x,int y);,44,绘制矩形、椭圆,绘制矩形的成员函数为:BOOL Rectangle(int x1,int y1,int x2,int y2);绘制椭圆成员函数的原型为:BOOL Ellipse(int x1,int y1,int x2,int y2);其参数为需要绘制的矩形的左上角坐标(x1,y1)和右下角
25、坐标(x2,y2)。,45,【例6-4】在窗口中随机的画了一些直线和其它几何形状。,思路:建立MFC框架程序,在OnDraw中写出相应的绘图代码即可。,46,2.显示位图,载入位图资源:BOOL LoadBitmap(LPCTSTR ResourceName);读位图信息:int GetBitmap(BITMAP*pBitMap);建立一合适的内存设备环境:CDC MemDC;MemDC.CreateCompatibleDC(NULL);并将位图选入该设备环境:MemDC.SelectObject(,47,显示位图,用CDC类的BitBlt()成员函数从内存设备环境中将位图复制到指定设备(如窗
26、口或打印机)。BOOL BitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORD dwRop);其中参数x,y为目标区左上角坐标,nWidth和nHeight分别为目标区的宽度和高度(逻辑坐标),pSrcDC为内存设备指针,xSrc和ySrc为原图中欲显示块左上角坐标,dwRop为复制方式,常用值为SRCCOPY,即按原样复制。,48,【例6-5】显示一张位图文件(.BMP)。(1)创建MFC AppWizard(exe)工程(2)在ResourceView视图中选择 Insert-Rescours
27、e在弹出的对话框中选择Bitmap,单击Import,导入一幅位图,ID号为IDB_BITMAP1,49,Insert-Resource,50,ID号设置,51,void CExamples06_05View:OnDraw(CDC*pDC)CExamples06_05Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);/TODO:add draw code for native data here CBitmap m_Bitmap;int m_nHeight;int m_nWidth;m_Bitmap.LoadBitmap(IDB_BITMAP1);BITMAP
28、 BM;m_Bitmap.GetBitmap(,52,BITMAP Structure,typedef struct tagBITMAP/*bm*/int bmType;int bmWidth;int bmHeight;int bmWidthBytes;BYTE bmPlanes;BYTE bmBitsPixel;LPVOID bmBits;BITMAP;,53,BMP位图的结构,BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成.BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成(BITMAPFILEHEADER)位图信息图头,用于说明位图的尺寸等信息 信息头之后是颜色表
29、用于说明位图中的颜色(24位位图没有颜色表),它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色,54,数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上(倒放的),55,位图信息头的数据结构,typedef struct tagBITMAPINFOHEADERDWORD biSize;/本结构所占用字节数LONG biWidth;/位图的宽度,以像素为单位LONG biHeight;/位图的高度,以像素为单位WORD biPlanes;/目标设备的级别,必须为1WORD biBitCount/每个像素所需的位数,DWORD biCompression;/位图压缩类型,必须是0(不压缩)、/1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一DWORD biSizeImage;/位图的大小,以字节为单位LONG biXPelsPerMeter;/位图水平分辨率,每米像素数LONG biYPelsPerMeter;/位图垂直分辨率,每米像素数DWORD biClrUsed;/位图实际使用的颜色表中的颜色数DWORD biClrImportant;/位图显示过程中重要的颜色数 BITMAPINFOHEADER;,56,作业,p294一、1,2,3,4,6,9,10二、1,2,3,4,5三、1,2,3,4,
链接地址:https://www.31ppt.com/p-6109369.html