配置流

配置文件中唯一需要至少一个流。 其他选项提供对更高级功能的访问,但只要至少一个流,就可以创建 ASF 文件。 在创建复杂配置文件之前,必须了解如何配置流。

出于配置文件的目的,流可以分为两种类型:使用 Windows Media 编解码器压缩的流和不使用任何编解码器处理的任意流。 音频流和视频流是使用 Windows Media 编解码器的类型。 当然,流可以包含使用第三方编解码器压缩的音频或视频,但配置此类流的过程是一种特殊情况。 有关详细信息,请参阅 使用第三方编解码器创建 ASF 文件

以下列表总结了配置流的过程。

  1. 获取流的流配置对象。
    • 如果使用 Windows Media 编解码器之一创建流,则必须使用 IWMCodecInfo3 的方法以编解码器格式获取流配置对象。
    • 如果流是任意类型,请使用 IWMProfile::CreateNewStream 获取空流配置对象。
  2. 配置流以满足需求。
    • 应为所有类型的流分配名称、连接名称和流号。
    • 使用 Windows Media 编解码器的流只能以预定义的方式从编解码器格式更改。 对于音频流,应仅更改两次传递 VBR (VBR) 设置的可变比特率。 视频流需要配置所需的帧属性。
    • 任意流按类型具有不同的配置要求。 所有这些都需要比特率和缓冲区窗口。
  3. 通过调用 IWMProfile::AddStream 将流添加到配置文件。

所有流都是使用流配置对象定义的。 流配置对象的main接口是 IWMStreamConfig,它提供用于设置流的基本设置的方法,例如流编号、比特率等。 IWMStreamConfig 由较新的接口 IWMStreamConfig2IWMStreamConfig3 继承。 与所有编号的接口修订一样,应始终使用 QueryInterface 方法检索最新版本。

流中的大多数设置都是通过 IWMMediaProps 访问的。 这些设置封装在 WM_MEDIA_TYPE 结构中。 对于音频和视频, WM_MEDIA_TYPE 结构指向另一个结构,其中包含特定于媒体类型的进一步信息。 此辅助结构通常是 AUDIO 的 WAVEFORMATEX 和用于视频的 WMVIDEOINFOHEADER 。 此外,视频流具有三级结构 BITMAPINFOHEADER,用于描述单个视频帧的特征。 BITMAPINFOHEADER 是一种通用结构,可在平台 SDK 的图形设备接口 (GDI) 部分找到。

以下部分介绍如何配置流。

部分 说明
所有流通用的配置 介绍所有类型的流通用的基本流配置。
从编解码器获取流配置信息 介绍如何从编解码器获取流配置信息,以确保使用 Windows Media 音频和视频编解码器正确配置流。
配置音频流 介绍如何配置音频流。
配置视频流 介绍如何配置视频流。
配置视频流以寻求性能 介绍如何配置高效搜寻非常重要的视频流。
配置屏幕捕获流 介绍如何为屏幕捕获配置视频流。
配置图像流 介绍如何配置图像流。
使用未压缩的音频和视频流 介绍如何设置未压缩的音频或视频流。
配置任意流类型 介绍如何配置流以使用预定义的任意流类型。
配置 VBR 流 介绍如何将流配置为 (VBR) 使用可变比特率编码。
配置数据单元扩展 介绍如何配置流,以便在写入文件时附加数据单元扩展。
重用流配置 介绍使用现有配置文件中的流配置对象来生成新配置文件的方式。

 

输入、流和输出

使用配置文件