Потоковая передача веб-камеры с использованием gstreamer через UDP
Вот что я пытаюсь:
gst-launch -v udpsrc port=1234 ! fakesink dump=1
Я тестирую с помощью
gst-launch -v audiotestsrc ! udpsink host=127.0.0.1 port=1234
И все работает отлично, я вижу пакеты, прибывающие из audiotestsrc
Теперь давайте протестировать источник веб-камеры:
gst-launch -v v4l2src device=/dev/video0 ! queue ! videoscale method=1 ! "video/x-raw-yuv,width=320,height=240" ! queue ! videorate ! "video/x-raw-yuv,framerate=(fraction)15/1" ! queue ! udpsink host=127.0.0.1 port=1234
И ничего не происходит, пакет не появляется в дампе.
Вот logdump каких подробных показов на сервере.
Кто-нибудь знает об этом?
Ответы
Ответ 1
Попробуйте (возможно, вам придется установить gstreamer-уродливые плагины для этого)
Потоковая передача UDP с веб-камеры (поток по сети)
gst-launch v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=640,height=480' ! x264enc pass=qual quantizer=20 tune=zerolatency ! rtph264pay ! udpsink host=127.0.0.1 port=1234
UDP-потоковая передача, полученная с веб-камеры (получение по сети)
gst-launch udpsrc port=1234 ! "application/x-rtp, payload=127" ! rtph264depay ! ffdec_h264 ! xvimagesink sync=false
Обновление
Чтобы определить полезную нагрузку в потоковом конце, просто используйте подробный вариант с gst-launch -v ...
Ответ 2
Возможно, пакеты слишком велики для udp? Они ограничены до 64K. Попробуйте изменить размер кадров на действительно небольшой размер, чтобы проверить, является ли это причиной. Если это так, вас могут заинтересовать некоторые компрессионные и разгрузочные/разгрузочные устройства (gst-inspect | grep pay
).