GStreamer: трансформирование vorbis (сквозной) и транскодирование через парсебин
Кто-нибудь может помочь мне понять, как я могу работать с vorbis в Gstreamer через элемент parsebin? В примерах ниже я использую файл matroska с одним видео (h264) и одним аудио (vorbis) потоками.
Например, следующий случай работает (используется auto**** раковина без vorbisparse):
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb pb. ! queue ! avdec_h264 ! videoconvert ! autovideosink pb. ! queue ! vorbisdec ! audioconvert ! autoaudiosink
но в этом случае все зависает (используется авто **** мойка с vorbisparse)
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb pb. ! queue ! avdec_h264 ! videoconvert ! autovideosink pb. ! queue ! vorbisparse ! vorbisdec ! audioconvert ! autoaudiosink
работал (использовал отдельные файловые ссылки с vorbisparse):
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb pb. ! queue ! matroskamux ! filesink location=d:/v.mkv pb. ! queue ! vorbisparse ! matroskamux ! filesink location=d:/a.mkv
зависает (используются отдельные файловые ссылки без vorbisparse):
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb pb. ! queue ! matroskamux ! filesink location=d:/v.mkv pb. ! queue ! matroskamux ! filesink location=d:/a.mkv
работал (использовал multiqueue, отдельные filesinks и vorbisparse):
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb ! multiqueue name=mq pb. ! mq. mq.src_0 ! matroskamux name=mux ! filesink location="d:/v.mkv" mq.src_1 ! vorbisparse ! matroskamux ! filesink location="d:/a.mkv"
зависает (используется multiqueue, single filesink и vorbisparse):
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb ! multiqueue name=mq pb. ! mq. mq.src_0 ! matroskamux name=mux ! filesink location="d:/va.mkv" mq.src_1 ! vorbisparse ! mux.
PS Моя главная цель - использовать этот элемент parsebin и получить возможность транскодировать или транслировать потоки по мере необходимости. Например:
- video => transmux, audio => transmux
- video => transmux, audio => transcode
- video => transcode, audio => transmux
- видео => перекодировать, аудио => перекодировать
Буду благодарен за разъяснения и помощь