Когда я выполняю потоковую передачу через udp и autovideosink на стороне клиента (в этом примере и отправитель, и получатель находятся на одном хосте), все работает нормально, но когда я пытаюсь передать его в файл и захватить один кадр, все мои попытки терпят неудачу. Файл создан, но он пустой.
Вот источник:
gst-launch-1.0 -v v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480,framerate=30/1 ! jpegenc ! rtpjpegpay ! udpsink host=127.0.0.0 port=5000 -e -v
Один из нерабочих клиентов:
$ gst-launch-1.0 udpsrc port=5000 num-buffers=1 ! application/x-rtp,encoding-name=JPEG! rtpjpegdepay ! jpegdec ! jpegenc ! filesink location=test.jpeg -e
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:00.112594509
Setting pipeline to NULL ...
Freeing pipeline ...
Как мне это захватить?





Вы используете параметры моментального снимка jpegenc и удаляете num-buffers=1 из udpsrc https://gstreamer.freedesktop.org/documentation/jpeg/jpegenc.html?gi-language=c
Что-то подобное работает для вас?
gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=JPEG ! rtpjpegdepay ! jpegdec ! jpegenc snapshot=TRUE ! filesink location=test.jpeg