Я работаю над приложением, в котором использую 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 приведенных выше примера работают, но не последний?