10.1 音 频 控 制 本节讲述 Windows 下各种不同的音频控制方式,包括利用 Windows 系统提供的多媒体组件播放音频文件,调用 Message
Beep() 函数进行声音提示,以及使用 Windows API 函数进行比较底层的音频控制。
Windows 系统提供了各种各样的组件,封装了许多复杂功能的实现。 使用合适的组件,可以减轻程序员的负担。 多媒体处理就是 Windows 下一个比较复杂的过程,涉及许多设备的控制以及音视频的解码等诸多复杂的操作。
然而, Windows 内置的 Windows Media Player 组件可以极大的简化普通程序播放音视频文件的编程复杂度。
本节将通过例 10-1 详细讲解 Windows Media Player 组件的创建步骤和使用方法。
【例 10-1 】 用 Windows Media Player 组件播放音频文件,如图 10-1 所示。
2 . Windows Media Player 组件的使用 创建好 Windows Media Player 组件后就可以为通过组件提供的方法对音视频文件和设备进行操作。 现在结合例 10-1 要求实现的功能的代码对
Windows Media Player 组件的各种基本方法进行介绍。
10.1.2 MessageBeep() 函数 MessageBeep() 函数是 Windows 提供的高级音频函数之一,主要用来播放系统报警声音。 系统报警声音是由用户在控制面板中的“声音和音频设备 属性”对话框(见图 10-
6 )中定义的,或者在注册表中指定。
uType 取值 取 值 说 明-1 从扬声器中发出蜂鸣声MB_ICONASTERISK 播放由 SystemAsterisk 定义的声音MB_ICONEXCLAMA
TION 播放由 SystemExclamation 定义的声音MB_ICONHAND 播放由 SystemHand 定义的声音MB_ICONQUESTION 播放由 SystemQuestion 定义的声音MB_OK 播放由 SystemDefault 定义的声音
表 10-1 uType 告警级取值说明
10.1.3 API 函数 Windows Media Player 组件和 Mes
sageBeep() 函数都能播放音频文件,但是前者是组件,不能提供较为底层的功能,而后者只能播放有限的几种音频文件,功能有限。
1 . PlaySound() 函数 PlaySound() 函数用于播放波形文件( WAV 文件),其原型如下。 BOOL PlaySound( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound );
( 1 ) mciSendCommand()函数 ( 2 )打开操作 ( 3 )播放操作 ( 4 )停止操作 ( 5 )停止操作 ( 6 )查询播放状态 ( 7)暂停播放 ( 8)恢复播放 ( 9)设置播放指针
10.2 视 频 控 制 本节讲述多媒体操作的另一个重要组成部分—视频控制。 Windows 系统提供了丰富的视频控制函数、接口和组件,一方面程序可以使用系统中带有的视频播放组件进行视频控制,另一方面程序可以调用 API 自行设计视频播放功能。
10.2.1 视频播放器 本节阐述如何使用 Windows 系统中的视频播放组件进行视频的播放和控制。 组件技术是 Windows 提供的一个关键技术,依靠此技术可以将其他程序提供的功能轻松地嵌入用户自行开发的程序中。
Windows 系统下有丰富的视频播放软件,例如,常用的 Windows Media Player 媒体播放器和 Real Player 播放器等。
这些播放器都提供了相应的组件方便用户在程序中嵌入此类播放器。
10.1.1 节中详细介绍了如何在程序中嵌入 Windows Media Player 媒体播放器提供的 Windows Media Player 组件用于播放音频文件。 该组件不仅支持音频文件,还支持视频文件。
本节同样以 Windows Media Player 组件为例介绍如何在程序中嵌入视频播放器,简化视频播放的编程复杂度。 对于其他播放组件(如 Real Player 提供的组件),读者可以参考相应软件提供的开发文档实现对此类组件的嵌入和操作。
MCIWnd窗口类是 VFW ( Video For Windows )提供的视频播放窗口类。
VFW 是微软公司为开发 Windows平台下的视频应用程序提供的软件工具包,提供了一系列应用程序编程接口( API ),用户可以通过它们很方便地实现视频捕获、视频编辑及视频播放等通用功能,还可利用回调函数开发更复杂的视频应用程序。
MCIWnd 是一个控制多媒体设备(如MIDI、数字视频、 VCR 以及 CD 音频设备等)的窗口类。
该类为视频播放创建一个播放窗口,播放窗口用于显示视频图像,而所有的视频操作命令都通过向窗口发送对应的消息完成。
Visual C++也为这些操作的消息的发送提供了以 MCIWnd 开头的宏,可以在程序中调用这类宏实现打开、播放、停止、暂停以及控制音量等多种视频操作。 下面将通过实例详细阐述使用 MCIWnd窗口类的步骤和控制命令的参考。 【例 10-3 】 视频播放器 VideoPlayer 。