Почему этот конвейер gstreamer останавливается? - PullRequest
7 голосов
/ 15 июня 2010

Это работает:

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 ...

, а затем останавливается на неопределенное время.

Какой трюк, чтобы получить версию с раскладкой декодера?

Ответы [ 2 ]

3 голосов
/ 16 июня 2010

Ага ... это то, что я хочу:

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'

в видео части конвейера все работает как положено.

0 голосов
/ 16 июня 2010

ваш конвейер кажется правильным.однако gst-launch - это ограниченный инструмент - я бы посоветовал кодировать конвейер на python или ruby ​​для лучшей отладки.

...