【问题标题】:Raspberry Pi MJPG-Streamer low latency树莓派 MJPG-Streamer 低延迟
【发布时间】:2014-01-22 04:17:47
【问题描述】:

我已经构建了一个树莓派机器人。现在我想从 Raspberry Pi 板载摄像头流式传输视频。我遵循了本教程: http://blog.miguelgrinberg.com/post/how-to-build-and-run-mjpg-streamer-on-the-raspberry-pi/page/2

所以我终于让它工作了,但现在我想获得尽可能低的延迟。低延迟很重要,因为控制具有这种延迟的机器人是不可能的。

有什么建议吗? 祝你有美好的一天!

【问题讨论】:

    标签: stream raspberry-pi latency


    【解决方案1】:

    你应该在https://raspberrypi.stackexchange.com/上问这个

    现在可以找到的所有有效解决方案都使用 raspivid。它直接将视频编码为 H.264/MPEG,这在捕获每一帧时效率更高。

    到目前为止,最适合我的是 - 首先是你的树莓派

    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
    
    • 在您的 PC/查看设备上

    gst-launch-1.0 -v tcpclientsrc host=&lt;IP-OF-PI&gt; port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false

    来源:http://pi.gbaman.info/?p=150

    【讨论】:

      【解决方案2】:

      我想我从实验中发现,相机板完成了大部分处理,完全减轻了 raspi 的负担。您可以通过在 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 桌面的以太网连接完成的,两者都连接到一个通用的以太网集线器。

      我做了以下观察:

      • 这些设置给了我一个相当低的延迟 (
      • 增加缓存大小(在客户端)只会导致更大的延迟,因为客户端会在开始之前缓冲更多的流
      • 将缓存大小减小到某个下限以下(我是 512)会导致播放器错误:“无法在线性流中向后搜索!”
      • 指定小于默认 1920x1080 的尺寸会导致较小尺寸的延迟更长,尤其是当它们小于 640x480 时
      • 指定非默认比特率会导致更长的延迟
      • 我不确定默认比特率是多少
      • 对于任何导致延迟的场景,似乎延迟会随着时间的推移逐渐减少,而我尝试的大多数配置似乎在一分钟左右后几乎没有延迟

      不幸的是,除了运行哪些命令以使其运行之外,该板上似乎提供的技术信息很少。在 cmets 中提供更多输入或对此答案进行编辑将不胜感激。

      【讨论】:

      • 我已经尝试过了,这似乎是最好的解决方案,尽管通过 wifi 延迟会稍高一些。我也尝试改变设置,但给定的设置对我来说是最佳的。我还发现一段时间后延迟减少了。但有一件事,raspivid 命令行应该是 /opt/vc/bin/raspivid -t 999999 -w 1920 -h 1080 -o -
      【解决方案3】:

      我意识到这是一篇旧帖子,但我最近需要做一些类似的事情,所以我创建了一个节点 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
      

      开源,我相信它会帮助其他人。

      【讨论】:

      • 感谢您的努力。这很慢www。就像在几秒钟内。根本不接受实时使用。事实上,虽然我只玩了大约 10 分钟,但除了概念证明之外的任何东西都是不能接受的!
      猜你喜欢
      • 2014-08-25
      • 2013-05-20
      • 2018-05-02
      • 2017-11-30
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2018-12-05
      相关资源
      最近更新 更多