我一直在研究通过网络进行实时图像采集(为我的自主无人机项目(。到目前为止,我一直在使用Gstreamer管道(udp协议(在发送者(远程(和接收者(主机(端流式传输视频,它就像一个魅力(几乎是实时的(。
命令如下:
(来源(:http://www.z25.org/static//videostreaming_intro_plab/
寄件人:
gst-launch-1.0 v4l2src ! video/x-raw,width=640,height=480 ! timeoverlay ! tee name="local" ! queue ! autovideosink local. ! queue ! jpegenc ! rtpjpegpay ! udpsink host=127.0.0.1 port= 5000
接收器:
gst-launch-1.0 udpsrc port=5000 ! application/x-rtp, encoding-name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink
现在,在接收器端,我编写了一个 openCV videoCapture 脚本。目标是访问opencv(在主机上(中的视频流。
只是为了确认 gstreamer 是否集成在 opencv3.2.0 中,以下代码行用于使用 gstreamer 管道捕获网络摄像头流(连接到主机本身(,并且它起作用了:
cv::VideoCapture camera0("v4l2src ! videoconvert ! appsink");
问题是,在 gstreamer 管道中使用 UDP 协议访问 openCV(host( 中的流(从远程(不起作用。在线资源建议在gstreamer管道中使用"rtsp"。
因此,如果有人可以帮助我在发送方和接收方(用于 openCV(端使用"rtsp"的 gstreamer 管道命令,这将有很大帮助。
PS:我的想法是只有Gstreamer可以是实时的。任何形式的帮助都将不胜感激,因为我在整个gstreamer事情上仍然是一个菜鸟。谢谢。:)
您可以将其用作 rtsp 和 gstreamer 的参考。
https://www.stev.org/post/raspberrypisimplertspserver