Я пытаюсь использовать 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