gstreamer丢帧:ARM处理器

问题描述 投票:0回答:2

我使用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的新手,想知道我是否可以采取措施来缓解这个问题。

gstreamer
2个回答
1
投票

箱是许多元素组合成一种元素类型结构(即具有适当数量的汇和源)。 playbin是一个带有“autovideosink”元素的标准bin,可以自动检测视频接收器。首先,我建议你升级到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


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

© www.soinside.com 2019 - 2024. All rights reserved.