我已经建立了一个覆盆子pi机器人。现在我想从Raspberry Pi车载摄像头流式传输视频。我按照本教程:http://blog.miguelgrinberg.com/post/how-to-build-and-run-mjpg-streamer-on-the-raspberry-pi/page/2
所以我终于让它工作了,但现在我希望尽可能地降低延迟。具有低延迟是很重要的,因为控制具有这种滞后的机器人是不可能的。
有什么建议?祝你今天愉快!
你应该在https://raspberrypi.stackexchange.com/问这个
现在可以找到所有有效的解决方案使用raspivid。它直接将视频编码为H.264 / MPEG,其捕获每一帧的效率更高。
到目前为止对我来说最好的一个是 - 首先是你的覆盆子pi
raspivid -t 999999 -w 1080 -h 720 -fps 25 -hf -b 2000000 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=<IP-OF-PI> port=5000
gst-launch-1.0 -v tcpclientsrc host=<IP-OF-PI> port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false
我想我已经从实验中发现,相机板完成大部分处理工作,从而减轻了覆盖物的负担。你可以通过在pi捕获和流上运行top
来看到这一点。
首先,我在Linux客户端上运行以下命令:
nc -l -p 5001 | mplayer -fps 31 -cache 512 -
然后我在raspi上运行以下命令:
/opt/vc/bin/raspivid -t 999999 -o -w 1920 -h 1080 - | nc 192.168.1.__ 5001
这是通过从raspi到linux桌面的以太网连接完成的,这两个连接都连接到一个公共以太网集线器。
我做了以下观察:
不幸的是,除了要运行的命令之外,电路板上似乎只有很少的技术信息可用。在评论或对此答案的编辑中的任何更多输入将不胜感激。
我意识到这是一个旧帖子,但我最近需要做类似的事情所以我创建了一个节点Raspberry Pi MJpeg Server你可以通过压缩质量和超时(每秒帧数)。
启动服务器:
node raspberry-pi-mjpeg-server.js -p 8080 -w 1280 -l 1024 -q 65 -t 100
选项:
-p, --port port number (default 8080)
-w, --width image width (default 640)
-l, --height image height (default 480)
-q, --quality jpeg image quality from 0 to 100 (default 85)
-t, --timeout timeout in milliseconds between frames (default 500)
-h, --help display this help
-v, --version show version
开源,因为我相信它会帮助别人。
我找到了一个流程,其延迟时间低于0.5秒,并流入浏览器或Python脚本,将帧转换为OpenCV对象,以便在显示之前进行进一步处理。对我来说就像一个魅力。更多信息:
http://petrkout.com/low-latency-0-4-s-video-streaming-from-raspberry-pi-mjpeg-streamer-opencv/