我已经建立了一个覆盆子pi机器人。现在我想从Raspberry Pi车载摄像头流式传输视频。我按照本教程: http://blog.miguelgrinberg.com/post/how-to-build-and-run-mjpg-streamer-on-the-raspberry-pi/page/2
所以我终于让它工作了,但现在我希望尽可能地降低延迟。低延迟非常重要,因此无法控制机器人这样的延迟。
有什么建议吗? 祝你有愉快的一天!
答案 0 :(得分:3)
我认为我从实验中发现,相机板完成了大部分处理工作,从根本上减轻了覆盖物的负担。您可以通过在捕获和流式传输时在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桌面的以太网连接完成的,这两个连接都连接到一个公共以太网集线器。
我做了以下观察:
令人遗憾的是,除了要运行的命令之外,电路板上几乎没有可用的技术信息。评论中的任何更多输入或对此答案的编辑将不胜感激。
答案 1 :(得分: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
答案 2 :(得分:0)
我找到了一个流程,其延迟时间低于0.5秒,并流入浏览器或Python脚本,将帧转换为OpenCV对象,以便在显示之前进行进一步处理。对我来说就像一个魅力。更多信息:
http://petrkout.com/low-latency-0-4-s-video-streaming-from-raspberry-pi-mjpeg-streamer-opencv/
答案 3 :(得分:0)
我意识到这是一篇旧帖子,但我最近需要做类似的事情,所以我创建了一个节点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
开源,因为我确信它会帮助他人。