2

我一直在研究gstreamer applemedia 编码器插件并改进了基于 VideoToolbox 的视频编码。运行 gstreamer 管道,例如:

$ gst-launch-1.0 filesrc location=source.avi ! decodebin  ! vtenc_h264 ! h264parse ! qtmux name=mux ! filesink location=sink.mp4

VTCompressionSession在 Mac OS 系统上使用 h264 视频编码时,我期望看到 CPU 使用率非常低。然而,在我测试过的系统上:2009 年中期配备 GeForce 9600M 的 Macbook Pro 和 2011 年中期配备 Radeon HD 6630M 的 Mac mini 编码仍然消耗 80% 到 130% 的 CPU - 这表明它没有硬件加速。

在哪些硬件配置上,或给定哪些压缩参数(例如,哪些kVTCompressionPropertyKey_ProfileLevelVTCompressionSession使用硬件加速编码?

4

2 回答 2

5

根据http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/sys/applemedia/vtenc.c您将 NULL 传递给编码器规范参数的 VTCompressionSessionCreate()。创建一个编码器规范字典,将 kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder 设置为 kCFBooleanTrue。

于 2014-02-01T02:17:00.533 回答
1

上面的管道不会帮助您确定是否实际上是编码过程导致了高 CPU 使用率。流中的时钟没有同步,这意味着解码/编码的整个过程将尽可能快地进行。

由于 decodebin 可能正在使用软件解码器,因此您遇到的高 CPU 使用率很可能是由于解码过程造成的。

我建议将输出与:

gst-launch-1.0 videotestsrc is-live=true ! vtenc_h264 ! qtmux ! filesink location=test.mp4

请特别注意属性“is-live=true”,它指示 videotestsrc 充当实时源,因此以恒定速率推送缓冲区,而不是下游可以消耗它们的速度。

于 2013-10-17T00:51:40.527 回答