gstreamer splitmuxsink создает пустые файлы

#gstreamer #gstreamer-1.0

#gstreamer #gstreamer-1.0

Вопрос:

Я новичок в gstreamer и пытаюсь создать конвейер, который сохраняет сетевой поток в серию файлов.

Я использую: (рабочий стол ubunbtu 20.04.3)

 gst-launch-1.0 -v tcpclientsrc host=hcam1 port=5050 !   jpegdec ! videoconvert ! videoscale !   video/x-raw,width=480,height=420 ! x264enc !   splitmuxsink location="/home/paul/hcam1.d.mkv" max-size-time=3000000000 muxer=matroskamux  

Похоже, что это выполняется без ошибок, но записывает один пустой файл в hcam1.00.mkv.

Если я использую:

 gst-launch-1.0 tcpclientsrc host=hcam1 port=5050 !   jpegdec ! videoconvert ! videoscale !   video/x-raw,width=480,height=420 ! autovideosink  

тогда поток отображается правильно. В конечном счете, эти 2 выхода будут объединены с тройником.

Я отправляю поток с: (raspberry pi яблочко без головы)

 gst-launch-1.0 -v v4l2src device=/dev/video0 num-buffers=-1 !   video/x-raw,width=1280,height=960, framerate=12/1 !   videoconvert ! jpegenc !   tcpserversink host=192.168.22.231 port=5050  

Если я заменю узлы tcpclientsrc и jpegdec на videotestsrc, то это будет работать правильно (я получу последовательность файлов), поэтому, как я понимаю, в потоке данных есть какая-то ошибка формата или что-то в этом роде.

Любая помощь была бы очень признательна.

У меня это полностью работало с использованием rtsp-сервера, но задержка составляет 2 секунды, загрузка процессора на pi в 8 раз выше, и запускать поток удаленно неудобно.

Дополнительная информация:
Вот фрагмент подробного вывода, когда он выходит из строя:

 ...  /GstPipeline:pipeline0/GstSplitMuxSink:splitmuxsink0/GstMatroskaMux:matroskamux0.GstMatroskamuxPad:video_0: caps = NULL /GstPipeline:pipeline0/GstSplitMuxSink:splitmuxsink0/GstFileSink:sink: location = /home/paul/hcam1.00.mkv Pipeline is PREROLLED ... /GstPipeline:pipeline0/GstSplitMuxSink:splitmuxsink0/GstMatroskaMux:matroskamux0.GstMatroskamuxPad:video_0: caps = video/x-h264, codec_data=(buffer)01640016ffe1002167640016acd941e0dfe7ffc001c0019b810102a0000003002ee6b28001e2c5b2c001000568ebecb22c, stream-format=(string)avc, alignment=(string)au, level=(string)2.2, profile=(string)high, width=(int)480, height=(int)420, pixel-aspect-ratio=(fraction)7/6, framerate=(fraction)0/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:0:0, chroma-site=(string)mpeg2, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono Setting pipeline to PLAYING ... New clock: GstSystemClock /GstPipeline:pipeline0/GstSplitMuxSink:splitmuxsink0/GstQueue:queue0: max-size-buffers = 6 /GstPipeline:pipeline0/GstSplitMuxSink:splitmuxsink0/GstQueue:queue0: max-size-buffers = 7 /GstPipeline:pipeline0/GstSplitMuxSink:splitmuxsink0/GstQueue:queue0: max-size-buffers = 8   ... etc ...   

Спасибо,
Пол