- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++高级编程 多媒体编程 第3章 多媒体编程 本章重点: 多媒体的基本理论; Windows媒体控制接口(MCI); VC++开发环境中的多媒体程序的编制。 主要内容: 1 多媒体概述 2 VC++中声音的处理 3 VC++中图像的处理 4 VC++中的视频处理 3.1 多媒体概述 媒体与多媒体 视觉类媒体 听觉类媒体 W32的多媒体服务 在VC++中开发多媒体应用时应注意的问题 媒体与多媒体 媒体:即承载信息的载体,包括感觉、表示、显示、存储、传输媒体。 与多媒体最为密切相关的是表示媒体,如数值、文本、声音、图形、图像等。 多媒体则是以上多种媒体的综合,多媒体程序的编制则是在应用程序中整合多媒体技术。 3.1.1 视觉媒体 通过视觉传递信息的媒体,都属于此类。 位图图像: 依赖于设备的位图(DDB) 不依赖于设备的位图(DIB):以文件(*.bmp)的形式长久保存 矢量图形: 用一组指令的形式描述图形特征,存储量很少。 动态图像 若干连续的静态图像在时间轴上不断变化的结果 动态影像视频:单帧图像是真实图像 二维或三维动画:是变化的图形。 符号 3.1.2 听觉媒体 通过声音形式以听觉传递信息的媒体均属此类。 波形声音(WAV文件) 在其中,任何声音均可按采样量化并恰当恢复,它包含了所有声音形式 语音 不仅是一种波形,还具有内在的语言特性,可由特殊的方法进行一次抽象,是一种特殊的媒体。 音乐(MIDI文件) 它是符号化的声音,以乐谱作为符号,它是一种十分规范的形式。 3.1.3 Win32的多媒体服务 控制媒体服务的媒体控制接口(MCI) 与MCI设备驱动程序进行通信的,可扩展的基于字符串和基于消息的接口 为播放和记录波形音频、播放乐器数字接口文件(MIDI)以及在播放CD所提供的MCI设备驱动程序 支持多媒体相关服务的低级应用程序编程接口 对用波形和MIDI音频设备播放和记录音频的低级支持 对精确定时器服务的低级支持… VC++开发多媒体时应注意 注意: 1 在Windows.H之前包含MMSYSTEM.H 2 在Project Settings/Link/Object/library modules栏中加入WINMM.LIB库 或在程序中加入: #include MMSystem.h #pragma comment(lib,”winmm.lib”) WINMM库提供了MCI服务和低级多媒体函数。 MCI驱动程序,提供了媒体设备的高级控制。 3.2 VC++声音的处理 计算机中的声音: 音频;MP3文件;波形音频文件;MIDI文件 1 波形声音的特点 1)采样频率越高声音越接近原始声音;2)采样位数越大,波形的动态范围也越大,声音的精确度越高;3)单声道:一个波形;立体声双声道:两个波形;4)通常要进行压缩 2 波形音频文件的播放 利用高级音频函数播放 利用MCI播放 1 利用音频的高级函数播放 适于小于100KB的WAVE文件的播放 播放少数系统定义的声音(如报警声): MessageBeep(报警号) 播放数字音频(*.wav)或音频资源: PlaySound(文件名/资源名,NULL/实例句柄,播放标志组合) 只能播放数字音频: sndPlaySound(文件名,播放标志组合) 例:P60 2 利用MCI播放声音 利用MCI函数向媒体设备发送各种控制命令,能够播放wav文件、MIDI序列、AVI文件等。 命令字符串:mciSendString(…),如: MciError=mciSendString(“open tada.wav type waveaudio”,buf,strlen(buf),NULL) 命令消息:mciSendCommand(…),如: 打开:mciSendCommand(NULL,MCI_OPEN,消息标志,消息参数); 关闭:mciSendCommand(设备号,MCI_CLOSE,NULL,NULL); 播放:mciSendCommand(设备号,MCI_PLAY,MCI_FROM,消息参数); 停止:mciSendCommand(设备号,MCI_STOP,NULL,NULL); 例:P65 3.3 VC++中的图像处理 动画是一幅接一幅显示图画的过程,是若干连续的静态图像在时间轴上不断变化的结果。 VC++中实现动画的一个特别重要的消息是WM_TIMER。 用SetTimer()设定的时间间隔作为消息来源,通过将代码加载在OnTimer()中实现动画效果。 KillTimer()用来停止记时器。 VC++中,可以使用BitBlt()来完成图像处理,反复显示、反复擦除。 例:P74 3.4 VC++中视频处理 MFC的CAimateCtrl类封装了动画控件。但只能处理简单的AVI,也不处理音频
文档评论(0)