使用gstreamer重新多路复用流在PREROLLING中停止

时间:2012-10-19 22:00:02

标签: gstreamer multiplexing

我正在尝试使用gstreamer重新复制一部快速电影(video / jpeg,audio / mpeg)。

gst-launch filesrc location="${INFILE}" \
 ! qtdemux name=demux \
 ! queue \
 ! qtmux name=mux \
 ! filesink location="${OUTFILE}" \
 demux.audio_00 \
 ! queue \
 ! mux.audio_0

不幸的是,这个管道没有启动(它开始PREROLLING然后等待)。 如果我省略音频流(或为音频流指定一个不存在的接收器(例如mux.audio.0),则重新多路复用完成(但没有音频)

给出一点背景:

我有一个快速时间,音频和视频之间存在严重的时间差。 现在我想将音轨移动几毫秒,但没有做太多的重新编码。 如下所示:

gst-launch filesrc location="${INFILE}" \
 ! qtdemux name=demux \
 ! videorate force-fps=25 \
 ! qtmux name=mux \
 ! filesink location="${OUTFILE}" \
 demux.audio_00 \
 ! queue \
 ! mad \
 ! audioconvert \
 ! ladspa-delay-n Delay-Time=322 \
 ! audioconvert \
 ! lame bitrate=224 \
 ! mux.

任何想法如何让我的管道播放?

1 个答案:

答案 0 :(得分:0)

最后我发现我的停止管道的原因是一个大写协商问题。 为预期从解复用器中出来的每个流指定上限使其工作:

gst-launch filesrc location="${INFILE}" \
 ! qtdemux name=demux \
 ! queue \
 !  video/jpeg \
 ! qtmux name=mux \
 ! filesink location="${OUTFILE}" \
 demux.audio_00 \
 ! queue \
 !  audio/mpeg \
 ! mux.audio_0