2016-09-21 32 views
0

媒体基金会的H264编码器性能不佳媒体基金会的H264编码器性能不佳

我正在写记录实时PC的屏幕和媒体基金会H264编解码器编码它的应用程序。 编码会消耗大量CPU资源。在停止录制视频(或通过简单地停止向视频和音频帧馈送编码器来暂停视频)之后,CPU负载长时间保持非常高(5-10秒或更长时间)。在此期间,应用程序将等待至IMFSinkWriter :: Finalize方法完成。

我的PC配置:

  • 英特尔i5-2410M的2.3 GHz的4芯
  • 8 GB RAM

编解码器的配置:

  • 25帧
  • 1364 x 768分辨率
  • 基本规范
  • 1.2兆比特的比特率

这是MF H264编解码器性能的限制或者是由于我的代码中的bug /错误配置?

+0

Didi你试试这个源代码我提供:http://stackoverflow.com/questions/33753912/directx-screen-capture-and-output-as-video/33946441#33946441对于十个视频分钟,Finalize是非常快。 – mofo77

回答

0

对于具有长内部队列的管线来说,预期的行为是保持对视频进行编码,直到队列为空。由于 - 看起来 - 软件编码器正在使用,它很慢,您的屏幕捕获源产生足够的数据,以填补队列如此之紧,以至于需要额外的时间来排序。

您的解决方案是控制/降低数据速率,或者使用速度更快,硬件辅助,编码器。但媒体基金会可以自动利用硬件编码器,所以我想这不适合你。您可以使用MediaFoundationVideoEncoderTransforms tool来检查硬件编码器的可用性。