媒体基础中的编码概述
本主题概述 Microsoft Media Foundation 中提供的文件编码 API。
术语
编码 是一个涵盖多个不同过程的一般术语:
- 将音频或视频流编码为压缩格式。 例如,将视频流编码为 H.264 视频。
- 多路复用 (“复用”) 一个或多个字节流。 通常,传入流首先进行编码。 此步骤可能涉及对编码的流进行数据包化。
- 将多路复用字节流写入文件,例如 MP4 或高级系统格式 (ASF) 文件。 或者,可以通过网络发送多路复用流。
下图显示了这三个过程:
此过程的变体包括转码和重新使用:
- 转码 意味着解码现有文件、重新编码流和重新复用编码流。 可以执行转码,将文件从一种编码类型转换为另一种编码类型;例如,将 H.264 视频转换为Windows媒体视频 (WMV) 。 还可以执行此操作来更改编码的比特率;视频帧大小;帧速率;或其他格式参数。
- Remultiplexing 或 remuxing 意味着取消复用文件并重新复用流,无需解码/编码步骤。 为此,可以更改音频/视频数据包的复用方式、删除流或合并来自两个不同的源文件的流。
- 转码 是一种特殊情况,其中比特率会更改而不更改压缩类型。 例如,可以将高比特率文件转换为较低的比特率。 一种典型方案,其中可能使用转译是在将媒体内容从电脑同步到便携式设备时使用。 如果便携式设备不支持高比特率,则文件可能会在将文件复制到便携式设备之前进行转译。
以下块图显示了转码过程。
以下块图显示了重新使用过程。
本文档有时使用术语 编码 来包括转码和重新编码。 当必须区分它们时,文档将记下差异。
另请参阅: 媒体基础:基本概念。
Media Foundation 编码体系结构
在 Media Foundation 体系结构的最低层,以下类型的组件用于编码:
下图显示了转码方案中这些组件之间的数据流:
大多数应用程序不会直接使用这些组件。 相反,应用程序将使用管理这些较低级别的组件的更高级别的 API。 Media Foundation 提供两个用于编码的更高级别的 API:
-
媒体会话提供端到端管道,用于通过编解码器将数据从媒体源移动,最后移到媒体接收器。 应用程序控制媒体会话并从媒体会话接收状态事件。
-
源读取器会包装媒体源和解码器(可选)。 它提供应用程序的编码或解码示例。 接收器编写器包装媒体接收器和编码器(可选)。 应用程序将示例传递给接收器编写器。
下图显示了媒体会话:
转码 API (蓝色着色框) 是 Windows 7 中引入的一组 API,使媒体会话更易于配置编码。
下图显示了源读取器和接收器编写器:
相关主题