媒体基础中的编码概述

本主题概述 Microsoft Media Foundation 中提供的文件编码 API。

术语

编码 是一个涵盖多个不同过程的通用术语:

  1. 将音频或视频流编码为压缩格式。 例如,将视频流编码为 H.264 视频。
  2. 多路复用 (“复用”) 一个或多个流到单个字节流中。 通常,首先对传入流进行编码。 此步骤可能涉及对编码的流进行数据包处理。
  3. 将多路复用字节流写入文件,例如 MP4 或高级系统格式 (ASF) 文件。 或者,可以通过网络发送多路复用流。

下图显示了这三个过程:

显示编码和多路复用过程的示意图

此过程的变体包括转码和重排:

  • 转码 是指解码现有文件、重新编码流,以及重新多路复用编码的流。 可以进行转码以将文件从一种编码类型转换为另一种编码类型;例如,将 H.264 视频转换为 Windows Media 视频 (WMV) 。 还可以更改编码的比特率;视频帧大小;帧速率;或其他格式参数。
  • 用或 重新复 用是指对文件进行多路复用,并重新多路复用流,无需解码/编码步骤。 这可能是为了更改音频/视频数据包的多路复用方式、删除流或合并来自两个不同源文件的流。
  • 转码 是转码的一种特殊情况,即在不更改压缩类型的情况下更改比特率。 例如,可以将高比特率文件转换为较低的比特率。 可能使用转译的典型方案是在将媒体内容从电脑同步到便携式设备时。 如果便携式设备不支持高比特率,则文件可能会在复制到便携式设备之前进行转译。

以下框图显示了转码过程。

显示转码过程的示意图

以下框图显示了重新安装过程。

显示重新安装过程的示意图

本文档有时会使用术语 “编码 ”来包括转码和重新编码。 当区分它们很重要时,文档会记下区别。

另请参阅: 媒体基础:基本概念

媒体基础编码体系结构

在媒体基础体系结构的最低层,以下类型的组件用于编码:

  • 对于转码, 媒体源 用于解复源文件。
  • 对于编码过程, 媒体基础转换 用于解码和编码流。
  • 对于多路复用过程, 媒体接收器 用于多路复用流并将多路复用流写入文件或网络。

下图显示了转码方案中这些组件之间的数据流:

显示转码中使用的组件的示意图

大多数应用程序不会直接使用这些组件。 相反,应用程序将使用管理这些较低级别的组件的更高级别的 API。 媒体基础提供两个更高级别的 API 进行编码:

媒体会话

媒体会话提供端到端管道,用于将数据从媒体源通过编解码器移动,最后移到媒体接收器。 应用程序控制媒体会话,并从媒体会话接收状态事件。

源读取器接收器编写器

源读取器包装媒体源和解码器(可选)。 它为应用程序提供编码或解码的示例。 接收器编写器包装媒体接收器和编码器(可选)。 应用程序将示例传递给接收器编写器。

下图显示了媒体会话:

显示媒体会话如何执行转码的示意图

转码 API (蓝色阴影框) 是 Windows 7 中引入的一组 API,可更轻松地配置媒体会话进行编码。

下图显示了源读取器和接收器编写器:

显示使用源读取器和接收器编写器转码的示意图

编码和文件创作

媒体基础编程:基本概念