播放mpegts文件的Gstreamer管道工作在版本0.10但不是1.0

时间:2013-08-06 12:18:42

标签: gstreamer pipeline mpeg mpeg2-ts gst-launch

我在0.10中有一个正在运行的gst-launch管道:

gst-launch-0.10 \
     filesrc location=c:/prog4.mpg \
     ! tsdemux name=dem \
     ! queue \
     ! ac3parse \
     ! a52dec \
     ! audioconvert \
     ! audioresample \
     ! autoaudiosink \
     dem. \
     ! queue \
     ! mpegvideoparse \
     ! mpeg2dec \
     ! autovideosink

但版本1.0中的相同管道会出现错误:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstTSDemux:dem: Internal data stream error.
Additional debug info:
mpegtsbase.c(1639): mpegts_base_loop (): /GstPipeline:pipeline0/GstTSDemux:dem:
stream stopped, reason not-negotiated
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

我也试过使用playbin,奇怪的是,它给出了同样的错误。我该如何解决这个问题?

编辑:好的,所以我发现它是导致问题的视频部分。如果我隔离音频和视频部分,音频工作正常!这就是造成麻烦的一点:

gst-launch-1.0 filesrc location=/home/rubndsouza/prog4.mpg \
! tsdemux ! queue ! mpegvideoparse ! mpeg2dec ! autovideosink

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

我认为这是在较新版本的gstreamer中修复的。 在我的1.2.3版本中,我至少无法重现这一点。