2014-10-03 1 views
4

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

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

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

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

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 

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

Single 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 и почему работают два вышеприведенных примера, но не последнее?

ответ

1

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

queue ! mux. ! filesink 

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

queue ! mux. mux. ! filesink 

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

Смежные вопросы