Windows Media Format SDK 概述

[与此页面关联的功能 Windows Media Format 11 SDK 是一项旧功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用源读取器和接收器编写器,而不是 Windows Media 格式 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

Windows Media Format SDK 包含用于在 ASF 文件生存期的三个时间点执行任务的对象:创建、编辑和播放。 某些应用程序(尤其是用于视频编辑的应用程序)将使用 Windows Media Format SDK 的广泛功能来读取 ASF 文件的内容、更改该内容并将结果写入新文件。 但是,最简单的方法是在文件创建、编辑和播放的三个阶段中考虑此 SDK。

使用 Windows Media 格式 SDK 创建 ASF 文件

使用 Windows Media Format SDK 编写 ASF 文件的过程在高级别上相当简单。 文件创建由编写器对象管理。 通过指定要使用的配置文件对象,可以告诉编写器对象要创建哪种类型的文件。 每个配置文件对象都包含 ASF 文件的设置。 此 SDK 包含一些配置文件,许多对象提供配置文件编辑支持。 设置要使用的编写器对象的配置文件后,可以开始将示例传递给编写器进行处理。 在大多数情况下,示例是未压缩的音频或视频片段,但样本可以是任何类型的数据。

在内部,编写器执行三个主要任务。 首先,如果要压缩示例所属的流,则编写器将与编解码器的编码部分通信, (压缩器/解压缩器) 压缩示例。 样本采用配置文件指定的格式后,编写器会将样本分解为适当大小的数据包,以便通过网络进行流式传输。 最后,将多路复用或交错来自各种流的数据,以便在 ASF 文件的数据部分中,所有流中具有相似呈现时间的样本彼此接近。

编写器对象实际上不会写入文件本身。 它与一个或多个称为接收器的对象通信,这些对象将数据从编写器传递到其目标。 对于本地文件,文件接收器管理将数据写入文件。 还可以配置网络接收器,以跨网络传送 ASF 数据。 通常使用多个接收器。 例如,应用程序可以通过网络流式传输文件,并将副本同时另存为本地磁盘上的文件。 通过使用推送接收器,可以将内容从写入应用程序广播到运行Windows Media 服务的一个或多个服务器,然后将内容分发给用户。

使用 Windows Media Format SDK 进行 ASF 文件编辑 (元数据编辑)

编辑 ASF 文件的数据部分的内容涉及重写文件。 Windows Media Format SDK 不提供任何就地操作数据节的对象。 对于简单的编辑,例如串联两个文件或从一个文件中剪切内容,可以读取示例而不解压缩它们,然后使用相同的标头信息将它们写入新文件。 更复杂的编辑涉及对用于新文件的配置文件进行更改。

Windows Media Format SDK 支持在不重写文件的情况下编辑标头部分。 ASF 文件的标头包含许多不同类型的数据。 最常编辑的是元数据属性,这些属性是描述内容的各个方面和参与制作内容的人员的名称/值对。 你可以使用 Windows Media Format SDK 的元数据编辑器对象来编辑元数据。 此对象将打开一个 ASF 文件,使你能够更改标头的某些内容,将更改写入文件,并关闭该文件。 元数据编辑非常简单,只需调用简单的方法即可检索和设置值。

使用 Windows Media 格式 SDK 读取 ASF 文件

Windows Media Format SDK 提供两个不同的对象用于读取 ASF 文件:读取器对象和同步读取器对象。 读取器对象在所有版本的 SDK 中都可用,而同步读取器对象需要 Windows Media Format 9 系列 SDK 或更高版本。 两者之间的主要区别在于,读取器对象通过将事件触发到回调方法将示例传递给应用程序,而同步读取器提供单个示例以响应方法调用。

若要使用 reader 对象,必须实现多个回调方法来响应来自读取器对象的状态和示例消息。 将读取器配置为根据需要传递内容,启动读取器并等待示例消息。 从 ASF 文件检索示例的过程基本上与写入过程相反。 读取器对象与解码任何压缩流所需的编解码器通信,并将未压缩的数据传送到应用程序。 还可以将读取器对象配置为以压缩状态提供示例,以便可以在新文件中包含以前编码的流。

同步读取器对象的工作方式与读取器对象大致相同。 但是,必须单独从同步读取器请求每个样本,而不是配置回调。 使用同步读取器只需要一个线程,而使用读取器需要多个线程。 在某些情况下,同步读取器对象比读取器对象具有多种优势,主要适用于需要快速访问文件的不同部分并在文件之间复制数据的内容编辑应用程序。 同步读取器对象更易于使用,并且可以轻松查找数据节中的特定位置。 但是,同步读取器不支持通过网络读取文件,也不支持数字版权管理。

Windows Media Format SDK 的其他操作

除了上述三个main功能区域外,Windows Media 格式 SDK 还具有用于执行与 ASF 文件相关的其他操作的对象。 配置文件管理器对象用于创建和访问配置文件以及保存它们。 索引器对象在允许在视频文件中查找的 ASF 文件中创建索引对象。 最后,读者对象和作者对象支持数字版权管理,以保护内容创建者的知识权利。

注意 ASF 文件结构和此 SDK 通常旨在生成包含音频和视频的数字媒体文件,本文档是在编写时考虑到这一点的。 但是,ASF 文件结构也适用于其他类型的内容。 你可能会发现许多与音频和视频无关的 ASF 文件应用程序。

关于 Windows Media Format SDK