IMFMediaSink,如何设置编码器属性?

时间:2015-01-24 16:46:57

标签: c++ encoding h.264 ms-media-foundation

我实现了一个IMFMediaSink接口,它通过本机h264编解码器编码一个特定的源(我们谈论的是Windows 8 Modern(Metro)接口)。我想更改h264编解码器的默认选项,该怎么做?

我在线搜索,我有点明白ICodecAPI界面与我想做的事情有关,但是如何使用呢?有没有人有一些示例代码可以试着去了解该怎么做?

我知道我可以将MF_SINK_WRITER_ENCODER_CONFIG用于清算器,但遗憾的是我没有使用该类。

2 个答案:

答案 0 :(得分:3)

也许是这样的:

尝试从IMFStreamSink获取h264流上的IMFMediaSinkGetStremSinkCountGetStreamSinkByIndex可以为您提供帮助。

然后在GetMediaTypeHandler对象上调用IMFMediaSink。 在GetCurrentMediaType上致电IMFMediaTypeHandler。 现在你应该有一个指向IMFMediaType的指针,它是从IMFAttributes派生的。您应该可以在这里配置您的变压器。

答案 1 :(得分:2)

  

嘿   我确实收到了我们建筑师的回复。他总结说,目前的重要性是设计"。团队意识到了限制,但我不确定他们是否能够考虑改变设计。   我希望这有帮助,   詹姆斯

https://social.msdn.microsoft.com/Forums/windowsapps/en-US/74f02476-05aa-4520-8ee6-1b794321173e/how-to-access-icodec-property?forum=winappswithhtml5

我自己找到了解决方案。它不存在从WinRT Metro访问ICodecAPI的方法。这是设计的,微软认为不会很快改变它。很遗憾...... :(