【问题标题】:WMV encoding using Media Foudation: specifying "Number of B Frames"使用 Media Foudation 的 WMV 编码:指定“B 帧数”
【发布时间】:2012-10-16 17:31:19
【问题描述】:

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

该属性称为 MFPKEY_NUMBFRAMES,如下所述: http://msdn.microsoft.com/en-us/library/windows/desktop/ff819354%28v=vs.85%29.aspx

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

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

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

【问题讨论】:

    标签: windows wmv ms-media-foundation


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢...我不直接构建任何拓扑,我只有一个 IMFSinkWriter 和一些 IMFAttributes。如何访问 WMV9 编码器?
    • 此外,教程链接也无法构建(请参阅该网页底部的 cmets),并且只能从源文件转换。我需要能够输入未压缩的视频和音频样本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多