gstreamer кодирует аудио и видео в файл avi

Я пытаюсь использовать gstreamer для кодирования видео и аудио h264 в один файл .avi. Я могу кодировать аудио или видео, используя это для видео:

gst-launch-1.0 appsrc name=appsrc ! deinterlace name=deinterlace ! mfxh264enc name=mfxh264enc ! avimux name=mux ! filesink name=filesink  location=test.avi

и это для аудио:

gst-launch-1.0 alsasrc ! queue ! audioconvert ! vorbisenc ! oggmux ! filesink location=audioTestQueue.mp3

Я пытаюсь объединить их в соответствии с этот пример с этим каналом:

gst-launch-1.0 appsrc name=appsrc ! deinterlace name=deinterlace ! mfxh264enc name=mfxh264enc ! queue name=queue1 ! mux. alsasrc name=alsasrc ! audioconvert name=audioconvert ! vorbisenc name=vorbisenc ! queue name=queue2 ! mux. avimux name=mux ! filesink name=filesink  location=test.avi

это возвращает сообщение об ошибке: «не удалось связать очередь 2 с мультиплексором».

Я знаю, что в примере используется lame для кодирования, но я предпочитаю не использовать его, поскольку он находится в исходном коде Ugly Plug-ins, когда gstremer documentation сказать: "Обратите внимание, что MP3 не является бесплатным форматом, следует учитывать вопросы лицензирования и патентов. См. Ogg / Vorbis для бесплатной (и часто более качественной) альтернативы ».

Что я делаю неправильно?

РЕДАКТИРОВАТЬ:
кажется, что при настройке звука на audiotestsrc и отключении кодирования звука gstreamer создает файл .avi, и я могу воспроизвести его в VLC:

gst-launch-1.0 appsrc name=appsrc1 ! deinterlace name=deinterlace1 ! mfxh264enc name=mfxh264enc1 ! queue name=queue11 ! mux. audiotestsrc name=alsasrc1 ! audioconvert name=audioconvert1 ! queue name=queue31 ! mux. avimux name=mux ! filesink name=filesink1 location=test.avi

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

gst-launch-1.0 appsrc name=appsrc1 ! deinterlace name=deinterlace1 ! mfxh264enc name=mfxh264enc1 ! queue name=queue11 ! mux. alsasrc name=alsasrc1 ! audioconvert name=audioconvert1 ! queue name=queue31 ! mux. avimux name=mux ! filesink name=filesink1 location=/home/user/Downloads/HDTest1.avi

person Avner Gidron    schedule 21.08.2017    source источник


Ответы (1)


Покопавшись в документации Gstreamer, я обнаружил следующее: http://trac.gateworks.com/wiki/Yocto/gstreamer/audio#Encoding, где перечислены все доступные кодировщики.

Проверка avimux снова увидел, что он может принимать данные в формате audio/x-alaw. с этим фактом я могу использовать alawenc, принадлежащий gst-plugins-good вместо lamemp3enc.

поэтому моя последняя труба такова:

gst-launch-1.0 alsasrc name=pulsesrc1 ! audioconvert name=audioconvert1 ! alawenc name=alawenc1 ! queue name=aud1 ! mux. appsrc name=appsrc1 ! deinterlace name=deinterlace1 ! mfxh264enc name=mfxh264enc1 ! mux. avimux name=mux ! filesink name=filesink1 location=HDTest1.avi
person Avner Gidron    schedule 28.08.2017