ремультиплексирование потока с помощью gstreamer останавливается в PREROLLING

Я пытаюсь повторно мультиплексировать фильм QuickTime (видео/jpeg, аудио/mpeg) с помощью gstreamer.

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), выполняется ремультиплексирование (но без звука)

дать немного больше контекста:

у меня есть quicktime, где есть серьезная задержка во времени между аудио и видео. теперь я хочу сдвинуть звуковую дорожку на несколько миллисекунд, но без слишком большого перекодирования. что-то вроде следующего:

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.

есть идеи, как я могу заставить свой конвейер играть?


person umläute    schedule 19.10.2012    source источник


Ответы (1)


наконец, я узнал, что причиной моего зависания конвейера является проблема согласования заглавных букв. указание ограничений для каждого потока, который, как ожидается, выйдет из демультиплексора, заставляет его работать:

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
person umläute    schedule 22.10.2012