使用Media Foudation进行WMV编码:指定“B帧数”

时间:2012-10-16 17:31:20

标签: windows wmv ms-media-foundation

我使用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,视频和音频属性
  • 配置在上一步中创建的IMFA属性,例如通过设置视频比特率:pVideoOverrides-> SetUINT32(MF_MT_AVG_BITRATE,m_iVideoBitrateBPS);
  • 通过调用IMFReadWriteClassFactory :: CreateInstanceFromURL来创建接收器编写器
  • 对于每个帧,在接收器编写器上调用WriteSample
  • 致电MFShutdown

我是否应该在IMFAttribute上设置b-frame属性,同时我还设置了视频比特率?

1 个答案:

答案 0 :(得分:1)

该属性适用于Windows Media Video 9 Encoder。也就是说,您需要在拓扑上找到它并在那里调整属性。其他拓扑元素(例如多路复用器)可能会接受其他属性,但这个属性没有效果。

MSDN为您提供了Configuring a WMV Encoder中的st4ep说明以及

所在的步骤
  

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

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