为什么这个gstreamer管道失速?

时间:2010-06-14 23:57:22

标签: command-line video audio video-processing 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滚动版本的诀窍是什么?

2 个答案:

答案 0 :(得分:3)

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

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

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

进一步加入像视频片或

这样的实验
videorate ! 'video/x-raw-yuv,framerate=25/1'

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

答案 1 :(得分:0)

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