Picam的哪种流传输解决方案具有最小的滞后?


9

这篇文章展示了如何使用VLC进行流式传输。它的工作原理很好,很简单,但是又给了我第二次的延迟。这篇文章使用GStreamer,并且有0.3秒的延迟;我想要更少。

是否可以使用Raspberry Pi图形芯片来加快编码速度?


还不可能。0.3ms的延迟非常好,并且由于缺少V2L,您不会变得更好(截至目前)。也许会有帮助
Piotr Kula 2014年

@ppumkin我认为OP表示延迟为0.3秒,而不是毫秒。另外,您是说V4L吗?
syb0rg 2014年

是3ms我在想。Video4Linux驱动程序?还是叫别的东西。你懂。本机驱动程序。
Piotr Kula 2014年

@ppumkin啊,那么你会错的。 V4L2驱动程序包含在NOOBS v1.3.3中
syb0rg 2014年

Answers:


9

使用Ubuntu 14.10和Gstreamer,我在1280 x 720 @ 60Hz时达到100到116 ms的延迟。

向@Antonvh坦克,后者使我处于正确的位置。我在这里重现该解决方案,以供以后参考。

要从Pi流:

raspivid -t 0 -b 2000000  -fps 60 -w 1280 -h 720 -o - \
  | gst-launch-1.0 -e -vvv fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 \ 
  ! udpsink host=10.42.0.1 port=5001

要使用gst-0.10在计算机上接收它并将其发送到虚拟v4l2设备(实际上,您需要v4l2loopback):

gst-launch -v udpsrc port=5001 ! application/x-rtp, payload=96 ! rtph264depay \ 
! ffdec_h264 ! ffmpegcolorspace ! v4l2sink device=/dev/video1

然后,您可以/dev/video1使用任何支持v4l2捕获的软件打开设备。

对于gst-1.0解决方案(v4l2loopback在gst-1.0中不起作用),我让您看到Antonvh博客文章


4

我实现了200毫秒的延迟!诀窍:从Pi发送的帧少于在远程读取的帧,这可以确保缓冲区保持空着。

这是我拍摄的RPi拍摄秒表的照片。它显示了时差。

这是我使用的食谱。首先在笔记本电脑(Mac)上执行以下操作:

nc -l 5001 | mplayer -fps 24 -cache 1024 -

然后在RPI上开始流式传输:

raspivid -t 999999 -w 1280 -h 720 -fps 20 -o - | nc 192.168.178.22 5001

确保:

  • 首先安装mplayer。只有Homebrew方法对我有用。常规下载已损坏。
  • 将上面的IP号码更改为笔记本电脑的号码。

这是一个聪明的把戏!我想知道它是否也适用于新的UV4L驱动程序
Piotr Kula

该解决方案的问题在于,它从播放方面引入了很多卡顿现象。我想知道您是否找到了解决方案。
9a3eedi

1

我使用以下视频食谱:http : //archpi.dabase.com/#sending-and-receiving-pi-camera-video-over-the-network

您是否尝试过https://github.com/thaytan/gst-rpicamsrc?应该稍微简化一下。Tbh,我一定不会尝试。

0.3s的滞后相当不错。


1
感谢您的链接!我认为我现在的延迟小于0.3秒,我仍然必须记录解决方案并进行精确测量。即将发布。如果我的测量值证明该值大于0.3,则可以尝试其他方法。
Antonvh 2014年

@Antonvh研究/测量情况如何?这个答案能给您带来更好的结果吗?
RPiAwesomeness
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.