播放设备

播放 (MCI_PLAY) 命令开始播放设备。 在没有任何标志的情况下,此命令从当前位置开始播放,直到命令中断或到达媒体或文件的末尾。 播放后,当前位置位于媒体的末尾。 还可以使用 seek (MCI_SEEK) 命令更改当前位置。

大多数支持 play 命令的设备还支持“from” (MCI_FROM) 和“to” (MCI_TO) 标志。 这些标志指示设备应启动和停止播放的位置。 例如,以下命令使用 mciSendString 函数从第一曲目开头播放 CD 音频光盘:

mciSendString("play cdaudio from 0", lpszReturnString, 
    lstrlen(lpszReturnString), NULL);

某些设备类型扩展此命令以利用特定设备的功能。 例如,视频磁盘设备类型的播放命令包括“fast” (MCI_VD_PLAY_FAST) 、“slow” (MCI_VD_PLAY_SLOW) 和“scan” (MCI_VD_PLAY_SCAN) 标志。

注意

分配给位置值的单位取决于设备使用的时间格式。 每个设备都有默认的时间格式,但在发出任何使用位置值的命令之前,应使用 设置 (MCI_SET) 命令来指定时间格式。

 

播放 AVI 文件

Windows 中的视频文件由至少两个交错数据流组成:一个视频 (图片) 流和一个音频流。 可以使用 MCI 命令轻松播放这些音频视频交错 (AVI) 文件。 以下部分讨论如何播放 AVI 文件。

设置 MCIAVI 播放窗口

应用程序可以指定以下选项来定义播放 AVI 文件的播放窗口:

  • 使用 MCIAVI 驱动程序的默认弹出窗口。
  • 指定 MCIAVI 驱动程序可用于创建播放窗口的父窗口和窗口样式。
  • 为 MCIAVI 驱动程序指定用于播放的播放窗口。
  • 在全屏显示器上播放 AVI 文件。

如果应用程序未指定任何窗口选项,MCIAVI 驱动程序会创建一个默认窗口来播放序列。 驱动程序为 打开 (MCI_OPEN) 命令创建此播放窗口,但在应用程序发送显示窗口或播放文件的命令之前,它不会显示窗口。 此默认播放窗口是一个弹出窗口,其中包含调整大小边框、标题栏、粗框、 窗口 菜单和最小化按钮。

应用程序还可以在发出 open 命令时指定父窗口句柄和窗口样式。 在这种情况下,MCIAVI 驱动程序会基于这些规范而不是默认弹出窗口创建一个窗口。 应用程序可以指定可用于 CreateWindow 函数的任何窗口样式。 需要父窗口的样式(例如WS_CHILD)应包含父窗口句柄。

应用程序还可以创建自己的窗口,并使用 窗口 (MCI_WINDOW) 命令 向 MCIAVI 驱动程序提供句柄。 MCIAVI 驱动程序使用此窗口,而不是创建自己的窗口。

当 MCIAVI 驱动程序创建播放窗口或从应用程序获取窗口句柄时,它不会显示窗口,直到应用程序播放序列或发送命令来显示窗口。 应用程序可以使用 window 命令来显示窗口,而无需播放序列。 例如,以下命令使用 mciSendString 显示窗口:

mciSendString("window movie state show", lpszReturnString,
    lstrlen(lpszReturnString), NULL);

在此示例中,“电影”是数字视频设备的别名。

应用程序还可以全屏播放 AVI 文件。 若要全屏播放,请使用“全屏” (MCI_MCIAVI_PLAY_FULLSCREEN) 标志修改 play (MCI_PLAY) 命令。 当应用程序使用此标志时,MCIAVI 驱动程序使用 320 x 240 像素的全屏格式来播放序列。 例如,以下命令使用“movie”作为别名) 播放打开的文件全屏 (:

mciSendString("play movie fullscreen", lpszReturnString,
    lstrlen(lpszReturnString), NULL);

更改 AVI 文件的播放状态

应用程序可以使用 seek (MCI_SEEK) 命令将当前位置移动到 AVI 文件中的开头、结尾或任意位置。 MCIAVI 驱动程序有两种搜寻模式:精确和不精确。 应用程序可以使用 set (MCI_SET ) 命令更改搜寻模式。 使用 “完全查找”时,MCIAVI 驱动程序将精确查找应用程序指定的帧。 如果临时压缩了文件,并且应用程序未指定关键帧,这可能会导致延迟。 使用 设置 “完全关闭”时,MCIAVI 驱动程序将查找临时压缩文件中最近的关键帧。

某些 MCI 命令允许应用程序以其他方式更改 AVI 文件的播放。 例如,默认情况下,AVI 文件以正常速度播放,但应用程序可以通过 设置 命令使用“速度”标志来增加或降低此速度。 对于 AVI 文件,速度值通常为 1000。 因此,若要以一半的典型速度播放电影,应用程序可以使用命令 “电影速度 500”;或者,它可以使用 设置 “电影速度 2000”以其正常速度的两倍播放序列。

setaudio (MCI_SETAUDIO) 命令允许应用程序控制 AVI 文件的音频部分。 应用程序可以在播放过程中将音频静音,或者,对于多个音频流文件,请选择播放的音频流。

MCIAVI 驱动程序有一个对话框,用于控制其某些播放选项。 用户可用的一些选项包括选择面向窗口或全屏播放、选择查找模式和缩放图像。 应用程序可以使用 configure (MCI_CONFIGURE ) 命令让 MCIAVI 显示此对话框。

流处理程序

AVI 文件中的数据被视为一系列流。 AVI 文件通常包含音频和视频流,并且可能还有包含文本或其他一些自定义数据的自定义流。 MCIAVI 驱动程序可以对这些数据流使用不同的处理程序。 有关自定义 AVI 文件的详细信息,请参阅 自定义文件和流处理程序