为什么这个gstreamer管道失速?

这工作:

gst-launch-0.10 
videotestsrc ! ffmpegcolorspace ! 'video/x-raw-yuv' ! mux. 
audiotestsrc ! audioconvert ! 'audio/x-raw-int,rate=44100,channels=1' ! mux. 
avimux name=mux ! filesink location=gst.avi

我可以让它运行一段时间,杀死它,然后totem gst.avi显示一个很好的测试卡的音调。

但是,试图做一些更有用的事情

gst-launch-0.10 
filesrc location=MVI_2034.AVI ! decodebin name=dec 
dec. ! ffmpegcolorspace ! 'video/x-raw-yuv' ! mux. 
dec. ! audioconvert ! 'audio/x-raw-int,rate=44100,channels=1' ! mux. 
avimux name=mux ! filesink location=gst.avi

它只是显示

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...

然后无限期地停顿。

使用decodebin滚动版本有什么诀窍?


啊哈......这就是我想要的:

gst-launch-0.10 
filesrc location=MVI_2034.AVI ! decodebin name=dec 
dec. ! queue ! ffmpegcolorspace ! 'video/x-raw-yuv' ! queue ! mux. 
dec. ! queue ! audioconvert ! 'audio/x-raw-int,channels=1' ! audioresample ! 'audio/x-raw-int,rate=44100' ! queue ! mux. 
avimux name=mux ! filesink location=gst.avi

队列元素(包括前导和尾随)似乎确实是至关重要的。

进一步的实验添加诸如videoflip或

videorate ! 'video/x-raw-yuv,framerate=25/1'

到管道的视频部分都按预期工作。


你的管道似乎是正确的。 然而,gst-launch是一个有限的工具 - 我会建议使用python或ruby来编写管道,以便更好地进行调试。

链接地址: http://www.djcxy.com/p/1165.html

上一篇: Why does this gstreamer pipeline stall?

下一篇: Profiling help required