我有一个场景,我想通过一个wifi网络向多个显示设备发送一个网络摄像头提要。我试过使用UDP组播,但无线网络似乎被数据包淹没了,视频非常不稳定,或者根本无法工作。就像我可以看到第一帧的视频,然后可能是几个后来的帧,然后它就完全停止了。
目前,我有三个Raspberry Pi (RPi)配置如下:
这就是我一直试图设置的,但并不完全正确。我不知道我是否做错了什么,或者gstreamer的多播协议中是否有bug。
基于组播的带摄像头的‣主机
$ sudo route add 224.1.1.1 wlan1
$ gst-launch-1.0 -v v4l2src device=/dev/video0 \
! 'video/x-raw,width=800,height=480,framerate=24/1' \
! clockoverlay 'time-format=%D %H:%M:%S' \
! jpegenc ! rtpjpegpay \
! udpsink host=224.1.1.1 port=5000 auto-multicast=true使用多播显示的‣客户端
$ gst-launch-1.0 udpsrc address=224.1.1.1 port=5000 \
auto-multicast=true \
! application/x-rtp, 'encoding-name=JPEG' \
! rtpjpegdepay ! jpegdec ! autovideosink非常感谢您的任何评论或建议!
注意:使用单播,工作正常,但我只能有一个远程连接,我必须事先知道它的IP地址,我不知道,因为它由DHCP控制。
单播带摄像头的‣主机
$ gst-launch-1.0 -v v4l2src device=/dev/video0 \
! 'video/x-raw,width=800,height=480,' framerate=24/1 \
! clockoverlay 'time-format=%D %H:%M:%S' \
! jpegenc ! rtpjpegpay \
! udpsink host=192.168.44.11 port=5000使用单播显示的‣客户端
$ gst-launch-1.0 udpsrc port=5000 \
! application/x-rtp, 'encoding-name=JPEG' \
! rtpjpegdepay ! jpegdec ! autovideosink发布于 2022-01-31 20:36:15
Wifi对多播来说很奇怪。它可以在2.5GHZ的带宽和20%的带宽,在5 5GHz。所以使用单播会更好。
您只需使用tee复制流并将其发送到每个目标(假设它们的IP地址以11、12、13结尾):
gst-launch-1.0 -v v4l2src device=/dev/video0 \
! 'video/x-raw,width=800,height=480,' framerate=24/1 \
! clockoverlay 'time-format=%D %H:%M:%S' \
! jpegenc ! rtpjpegpay \
! tee name=stream \
stream. ! queue ! udpsink auto-multicast=0 host=192.168.44.11 port=5000 \
stream. ! queue ! udpsink auto-multicast=0 host=192.168.44.12 port=5000 \
stream. ! queue ! udpsink auto-multicast=0 host=192.168.44.13 port=5000我建议在接收端添加rtpjitterbuffer:
gst-launch-1.0 udpsrc port=5002 auto-multicast=0 ! application/x-rtp,encoding-name=JPEG ! rtpjitterbuffer latency=500 ! rtpjpegdepay ! jpegdec ! autovideosinkhttps://stackoverflow.com/questions/70918929
复制相似问题