gstreamer丢帧:ARM处理器

时间:2016-01-15 11:49:17

标签: gstreamer

我使用gstreamer在我的NVIDIA Tegra jetson TK1开发板上运行9秒视频:

 gst-launch-0.10 playbin uri=file:///home/ubuntu/widescreen.avi

我注意到这会丢弃很多帧,而gstreamer会打印这些消息:

WARNING: from element /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink/GstXvImageSink:videosink-actual-sink-xvimage: A lot of buffers are being dropped.

Additional debug info:
gstbasesink.c(2875): gst_base_sink_is_too_late (): /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink/GstXvImageSink:videosink-actual-sink-xvimage:

 There may be a timestamping problem, or this computer is too slow.

我在执行此操作时运行top,确实gstreamer占用了95%的CPU。 现在,当我通过默认媒体播放器播放此视频时,它播放完全正常且没有任何延迟。我想知道是否有人知道gstreamer无法正常播放的原因。我是gstreamer的新手,想知道我是否可以采取措施来缓解这种情况。

2 个答案:

答案 0 :(得分:1)

箱子是许多元素组合成一个元素类型结构(即具有适当数量的汇和源)。 playbin是一个标准的bin,带有" autovideosink"自动检测视频接收器的元素。 首先,我建议你升级到gstreamer-1.0,其中修复了许多错误。 其次问题似乎是你的xvimagesink,因此通过明确定义尝试使用ximagesink,你的autovideosink默认选择xvimagesink。 试试这个管道: - (用于硬件解码)

gst-launch-1.0 filesrc location="location of h264 video/file.avi" ! avidemux ! h264parse ! omxh264dec ! videoconvert ! ximagesink

或者对于cpu解码使用avdec_h264而不是omxh264dec

答案 1 :(得分:0)

如果媒体文件是H.264,则默认媒体播放器可能使用视频硬件解码,这允许以较少的CPU资源进行解码。尝试创建明确使用此处讨论的omx H.264解码元素的gstreamer管道(http://elinux.org/Jetson/H264_Codec)。

例如。 gst-launch-0.10 filesrc location=/home/ubuntu/widescreen.avi ! avidemux ! h264parse ! nv_omx_h264dec ! autovideosink