Gstreamer - Android上的硬件加速视频解码

时间:2017-01-20 08:46:19

标签: android video gstreamer h.264 hardware-acceleration

我在Android手机上通过RTP / UDP接收视频,但我发现CPU使用率非常高,一个核心的近100%用于解码视频。在高端设备上,视频播放几乎是平滑的,但在中低端设备上,我每秒只能获得1帧。它是H.264视频流,分辨率为480x360,速度为30 fps。

这是我的管道:

udpsrc port=5004 caps=application/x-rtp,payload=96,clock-rate=90000,encoding-name=H264
    ! rtpjitterbuffer drop-on-latency=true max-dropout-time=500
    ! rtph264depay
    ! video/x-h264,width=480,height=360,framerate=30/1,profile=baseline,stream-format=avc,alignment=au
    ! h264parse
    ! decodebin
    ! videoconvert
    ! autovideosink

据我所知,这里的问题是通过使用decodebin,CPU负责解码视频,这是不好的。

所以现在我试图找到该元素的替代品,以便使用硬件加速解码视频。我发现我可以使用像amcviddec-XXXX这样的元素,我必须参考硬件解码器。可用元素列表应位于设备的/etc/media_codecs.xml文件中,但我无法确定哪个元素以及如何将有效解码器插入到我的管道中。这些是该文件的内容:http://pastebin.com/9KxHDpE3

我尝试了amcviddec-omxgoogleh264decoderamcviddec-omxmarvellvideohwcoda7542decoder之类的内容,但我总是收到此错误:GStreamer encountered a general supporting library error。至少管道形成良好,所有元素似乎都被Gstreamer所理解。

错误日志:http://pastebin.com/raw/H5FDiqTQ

0 个答案:

没有答案