0

我正在使用 Media Foundation SDK 将视频编码为 WMV。我看到可以使用属性设置 B 帧的数量,但我不知道如何/在哪里设置它。

该属性称为 MFPKEY_NUMBFRAMES 并在此处进行了描述:http: //msdn.microsoft.com/en-us/library/windows/desktop/ff819354%28v=vs.85%29.aspx

我们的代码大致做了以下事情:

  • 调用 MFStartup
  • 调用一次 MFCreateAttributes,这样我们就可以设置 muxer、video 和 audio 属性
  • 配置上一步创建的 IMFAttributes,例如通过设置视频比特率: pVideoOverrides->SetUINT32(MF_MT_AVG_BITRATE, m_iVideoBitrateBPS);
  • 通过调用 IMFReadWriteClassFactory::CreateInstanceFromURL 创建接收器编写器
  • 对于每一帧,在接收器写入器上调用 WriteSample
  • 呼叫 MFShutdown

我是否应该在我还设置视频比特率的 IMFAttribute 上设置 b-frames 属性?

4

1 回答 1

1

该属性适用于Windows Media Video 9 编码器。也就是说,您需要在拓扑中定位它并在那里调整属性。其他拓扑元素(例如多路复用器)可能会接受其他属性,但这一属性在那里没有影响。

MSDN 在配置 WMV 编码器中为您提供 st4ep 说明,并在其中说明

要指定目标比特率,请设置MF_MT_AVG_BITRATE媒体类型的属性。

您还可以更改其他编码器属性。还有一步一步的详细教程:1-Pass Windows Media Encoding,它显示了整个过程的步骤。

于 2012-10-24T18:19:08.603 回答