Как демультиплексировать аудио и видео из rtspsrc, а затем сохранить в файл с помощью matroska mux?

Я работаю над приложением, в котором использую rtspsrc для передачи аудио и видео с одной сетевой камеры на другую. Однако я не могу смотреть поток с камеры и, следовательно, не могу убедиться, что поток работает должным образом. Чтобы убедиться, что поток правильный, я хочу записать его на SD-карту, а затем воспроизвести файл на компьютере. Проблема в том, что я хочу, чтобы камера выполняла как можно больше синтаксического анализа, декодирования и загрузки, поскольку это является целью приложения.

Таким образом, я должен разделить аудио- и видеопотоки с помощью демультиплексора и выполнить синтаксический анализ, декодирование и т. д., а затем мультиплексировать их обратно в файл матроски.

Видеодекодер опущен, так как он еще не реализован для этой камеры.

Демультиплексор для живого воспроизведения (работает)

gst-launch-0.10 -v rtspsrc location="rtsp://host:[email protected]/XXX/XXXX?resolution=1280x720&audio=1&audiocodec=g711&audiosamplerate=8000&audiobitrate=64000" latency=0 name=d d. ! rtppcmudepay ! mulawdec ! audioresample ! audioconvert ! autoaudiosink d. ! rtph264depay ! ffdec_h264 ! queue ! ffmpegcolorspace ! autovideosink

Несколько rtspsrc для matroska (работает)

gst-launch-1.0 -v rtspsrc location="rtsp://host:[email protected]/XXX/XXXX?audio=1&audiocodec=g711&audiosamplerate=8000&audiobitrate=64000" latency=0 ! rtppcmudepay ! mulawdec ! audioresample ! audioconvert ! queue ! matroskamux name=mux ! filesink location=/var/spool/storage/SD_DISK/testmovie.mkv rtspsrc location="rtsp://root:[email protected]/axis-media/media.amp?resolution=1280x720" latency=0 ! rtph264depay ! h264parse ! mux.

Одиночный rtspsrc для matroska (сбой)

gst-launch-1.0 -v rtspsrc location="rtsp://host:[email protected]/XXX/XXXX?resolution=1280x720&audio=1&audiocodec=g711&audiosamplerate=8000&audiobitrate=64000" latency=0 name=d d. ! queue ! rtppcmudepay ! mulawdec ! audioresample ! audioconvert ! queue ! matroskamux name=mux d. ! queue ! rtph264depay  ! h264parse ! queue ! mux. ! filesink location=/var/spool/storage/SD_DISK/testmoviesinglertsp.mkv

Последний пример завершается с ошибкой

WARNING: erroneous pipeline: link without source element

Я неправильно понял использование matroska mux и почему 2 приведенных выше примера работают, но не последний?


person GurgL    schedule 03.10.2014    source источник


Ответы (1)


Проблема здесь:

queue ! mux. ! filesink

Вам нужно сделать

queue ! mux. mux. ! filesink

мультиплекс означает, что gst-launch должен автоматически выбирать пэд из мультиплексора. и свяжите его. Вы также можете указать имя вручную, например, mux.src. Таким образом, синтаксически вам не хватает другого элемента/площадки для ссылки на другой элемент.

person thiagoss    schedule 04.10.2014