使用智能重新压缩对内容进行转码

可以使用Windows媒体格式 SDK 将内容从一个比特率转码到另一位。 通常,这只需解码内容并将其再次编码为所需的比特率。 Windows媒体音频 9 编解码器支持智能重新压缩,使转码能够比正常质量更好的转码。

若要进行智能重新压缩,必须使用Windows媒体音频编解码器对原始音频流进行编码。 支持所有版本的编解码器,但专用音频编解码器 (Windows媒体音频 9 Professional和Windows媒体音频 9 语音) 不是。 如果原始音频使用 Windows Media Audio 9 无丢失编解码器进行编码,则无需使用智能重新压缩,因为原始编码中没有丢失任何信息。

若要使用智能重新压缩,请执行以下步骤。

  1. 使用源文件设置读取器对象以供读取。 有关详细信息,请参阅 读取 ASF 文件
  2. 设置用于转码文件的编写器对象。 设置新文件的文件名。 选择要用于新文件的配置文件。 在编写器对象中设置所选配置文件。 有关详细信息,请参阅 编写 ASF 文件
  3. 通过调用 IWMReader::QueryInterface 获取指向读取器对象的 IWMProfile 接口的指针。
  4. 通过调用 IWMProfile::GetStream 检索要转码的音频流的 IWMStreamConfig 接口。
  5. 通过调用 IWMStreamConfig::QueryInterface 获取流配置对象的 IWMMediaProps 接口。
  6. 通过对 IWMMediaProps::GetMediaType 进行两次调用,检索流的WM_MEDIA_TYPE结构。 获取第一次调用的结构大小,并为缓冲区分配内存以在第二次调用中传递。
  7. 通过调用 IWMWriter::GetInputProps,获取指向编写器中输入的 IWMInputMediaProps 接口的指针。
  8. 通过调用 IWMInputMediaProps::QueryInterface 获取输入媒体属性对象的 IWMPropertyVault 接口。
  9. 使用 IWMPropertyVault::SetProperty 方法设置g_wszOriginalWaveFormat属性。 使用步骤 6 中获取的 波形图X 结构作为属性的值。
  10. 包括对输入媒体属性所做的更改,方法是调用 IWMWriter::SetInputProps 并将其传递给 IWMInputMediaProps 接口。
  11. 开始从原始文件中读取示例,并使用对 IWMWriter::WriteSample 的调用将它们传递给编写器。

高级主题

IWMInputMediaProps 接口

IWMMediaProps 接口

IWMProfile 接口

IWMPropertyVault 接口

IWMStreamConfig 接口