我是Raspberry Pi的新手,甚至是Raspberry Pi相机的新手。我已经在网上看到了很多有关Raspberry Pi相机的教程,但是还没有找到使我像使用网络摄像头(使用SimpleCV或OpenCV)那样直接从Raspberry Pi相机流式传输的内容。希望有人能指出我正确的方向。

评论

您尝试过mjpg流光吗?我应该发布解决方案吗?

寻找零延迟解决方案的人应该查看raspberrypi.stackexchange.com/a/32521/30681
如果您拥有ssh和mpv:ssh raspberrypi raspivid -o--t 0 -fps 25 -w 640 -h 360 | mpv---speed 2 -fps 25(“-speed 2”使其不会滞后)。

#1 楼

Diego提出的解决方案很好,除了它的速度很慢并且视频延迟很大,因为那里的vlc重新流了raspvid的流。从2013年12月12日开始,有正式的v4l2驱动程序可用:http://www.ics.com/blog/raspberry-pi-camera-module#.VJFhbyvF-b8
这使上述重新流式处理过时。只需加载模块并使用它:在此处阅读更多信息:https://web.archive.org/web/20151012014829/http://www.videolan.org:80/doc/streaming-howto/en/ch03.html

评论


在此答案中,建议将:demux = 264添加到cvlc,因为流是RAW h264,并且需要设置解复用器:cvlc v4l2:/// dev / video0 --v4l2-width 1920 --v4l2-height 1080- -v4l2-chroma h264 --sout'#standard {access = http,mux = ts,dst = 0.0.0.0:12345}':demux = 264。例如,这使得在VLC for Android中观看流成为可能。

– Jaime M.
15年5月7日在20:01



在提供的链接中,现在应该使用./bootstrap.sh而不是autoreconf -vfi。

– JuJoDi
2015年6月1日下午16:35

有没有一种方法可以让我既传输视频又将其保存到RPi SD卡上?

–或温伯格
2015年1月1日于13:03

videolan.org/doc/streaming-howto/en/ch03.html链接已消失。

–卡尔
16年7月2日在1:55

我认为可能值得一提/确认此方法在无头环境中不起作用。我遇到错误,其中一个谈论X11

–尼克
17年1月11日在19:52

#2 楼

您可以选择多个选项。在我的工作中,我们使用VLC将Raspberry Pi Camera捕获的视频从服务器机房流传输到办公室。这样做的一个缺点是延迟大约5秒钟,而我还没有找到解决方案。以下是我们的设置:



已安装并更新了raspbian并确保您的相机已启用(通过运行sudo raspi-config并选择“启用相机”来启用它)

sudo apt-get update
sudo apt-get upgrade



安装vlc

sudo apt-get install vlc



创建脚本以启动流包含以下内容,或运行命令(如果只运行命令,您将无法做任何其他事情)。



sudo nano myscript.sh
raspivid -o - -t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264



如果要自动启动流,则必须将脚本添加到crontab。为了使这项工作有效,我必须制作另一个由cron运行的脚本(OBS!VLC不能以sudo运行,因此请确保您位于正确的cron中)。 sudo nano myscript2.sh

sudo chmod +x myscript.sh


然后:

#!/bin/bash
/path/to/myscript.sh



要观看视频流,请打开VLC与用于流式传输的rapiberry pi位于同一网络上的计算机。按Media->打开Networkstream,然后将以下内容粘贴到该字段中:不想让您延迟使用MJPEG。您可以在此处阅读更多有关此内容的信息。

观看有关Raspberry Pi相机模块的Wiki。希望您能找到想要的。

评论


知道为什么我会在Windows的VLC上获得以下内容吗?您的输入无法打开:VLC无法打开MRL'rtsp://192.168.1.78:8554'。检查日志以获取详细信息。 Pi方面似乎还可以-没有错误,并且似乎对连接的客户端有反应?

– Monojohnny
2015年3月7日在22:54



@monojohnny是树莓派流吗?通过插入屏幕来检查视频是否正常运行。如果视频正常运行,您应该在屏幕上看到流已插入树莓派。

–迭戈
15年4月23日在12:25

@monojohnny感谢您的迭戈写作...在第一次尝试时效果很好! monojohnny ...您必须在结尾加上“ /”,否则vlc会抱怨。试试这个:rtsp://192.168.1.78:8554 /

– Sujay Phadke
16年11月5日在6:04

感谢@Diego,这对我来说非常有效,但是如何退出我的信息流?

– Denoteone
17年1月14日在16:27

我在Windows上遇到了同样的问题,但无法从pi流式传输视频。给定我在连接到pi的屏幕上看到来自pi摄像机的视频流,但是没有通过Windows 10 pc上安装的VLC看到。

– Mostafa
17年5月30日在23:01

#3 楼

我尝试了一些选择。但是,我使用该项目发现了最好的结果:
eLinux社区的Rpi-Cam-Web-Interface

流几乎具有零延迟。 :)

评论


人们在寻找零延迟,请务必进行检查。对@ user2998302的支持。我不敢相信,一年来没有对此的赞誉(致谢)。

– igaurav
16年11月7日在16:57

尽管这是一种快速简便的设置,但该软件远未优化,因此尽管其低延迟(没有零延迟),但界面非常闲谈,并使用了一些额外的CPU周期。如果您不运行其他任何设备,这不是问题,但是如果您正在运行,尤其是在Pi 1上,则可能是问题。

–尼克
17年1月11日在20:46

这太棒了!

– Hamza Ouaghad
17年4月9日在16:29

我测试过的迄今为止最快的网络视频流传输(也是通过vlc传输的本机v4l2驱动程序),延迟几乎为零。互联网上有关此问题的所有资源都无法比该应用程序更好地抱怨优化。

–Gabber
17年6月18日在19:10



哇,我必须承认这一点!

– L.Trabacchin
18年1月20日在22:08

#4 楼

我发现的最简单的方法是使用树莓派pi相机从无头树莓派pi上获取实时视频。 br />
在PI上:

raspivid -t 0 -l -o tcp://0.0.0.0:3333


在计算机上,可以通过VLC流式传输:

vlc tcp/h264://192.168.66.154:3333


(假设192.168.66.154是PI的IP地址)

评论


欢迎来到Raspberry Pi!我们通常不建议将您的答案从一个问题逐字复制到另一个问题-一旦达到15个代表,您就可以将与“重复”相同的问题标记为“重复”,因此答案只能复制一个。不过,感谢您分享您对问题的回答!

–Aurora0001
17年8月25日在10:18

@Per Hansen不为我工作...除了分配端口外,可能还需要做其他事情。

–阿米雷(Amit Ray)
17-10-30在17:39

这很棒!无头使用RPi3B +和Raspbian 9.4(拉伸)。

– dparkar
18年7月13日在5:51

#5 楼

我在树莓派论坛上发布了一个可能的解决方案,该解决方案使用基于live555的轻型RTSP服务器,该服务器配有支持H264捕获的V4L2驱动程序:使用以下命令访问RTSP流:

sudo modprobe -v bcm2835-v4l2
git clone https://github.com/mpromonet/v4l2rtspserver.git
cd v4l2rtspserver
cmake .
make install
v4l2rtspserver -H <height> -W <width> -F <fps>


评论


时间差呢?

– kuhajeyan
16年6月28日在17:43

cmake抱怨“找不到ALSA(缺少:ALSA_LIBRARY ALSA_INCLUDE_DIR)”,直到我为项目添加了更多软件包为止。解决方案就在其中:“ sudo apt-get install libopus-dev libexpat1-dev libasound2-dev libudev-dev libavahi-client-dev”(我想在这里声音可能就足够了)。

–月球仙人掌
16 Sep 15'7:06



哦,而且效果很好(轻量级解决方案),谢谢。时滞是不错的,大约2秒钟,与其他解决方案相比效果不错。

–月球仙人掌
16/09/15'7:14

我同意带有RPi2B的@MoonCactus,我能够以大约2秒钟的延迟流式传输1920x1080 @ 30图像,我注意到我的(有线局域网)网络流量达到了约20Mbps,但这在大多数情况下都不是问题我想是家庭网络。

– SlySven
4月3日13:59



#6 楼

UV4L(也)支持标准HTML5视频和音频流,无需进行配置。其他选项也是可能的,例如通过http。

更新的MJPEG:

UV4L现在还支持通过Web到Jitsi Meet Rooms的实时音频和视频广播。无需特殊配置。只需填写您的姓名,房间并单击“开始”即可。

第二次更新:

UV4L现在也支持H264硬件编码的视频,包括全fps,高清和全高清未来。

评论


唯一的事情是,您只能获得基本流,几乎所有内容都不了解。可悲的是,没有太多用处。您需要一些发射WebRTC的东西(如果您拥有Pi2或更高版本,则可以使用UV4L。如果需要(由于功率/大小限制)零来执行此操作,您的SOL。

–斯瓦尔塔夫
16-10-29在13:02

#7 楼



使用mjpeg_streamer


motion需要编译,但是github上的指令很简单。

编译后,可以通过从项目目录启动mjpg_streamer或直接运行(在项目目录中)来运行它:



 mjpeg_streamer 


其中start.sh是TCP端口。如果未指定,则默认使用端口./mjpg_streamer -i "./input_uvc.so -rot 180" -o "./output_http.so -w ./www -p 8090" 8090脚本包含一些带有附加选项的用法示例。

使用8080


Motion包含一个systemd服务,该服务使启动,停止或重启时自动启动变得容易。

要在IP网络摄像头模式下使用它,应在start.sh中设置以下设置:

 motion  

接下来,在/etc/motion/motion.conf中设置:

 daemon on
stream_localhost off
output_pictures off
ffmpeg_output_movies off
stream_maxrate 24
framerate 24
width 640
height 480
 


到使服务在启动时自动启动:

 /etc/default/motion 


使用start_motion_daemon=yes 进行相应的操作。 />
默认流端口为systemctl enable motion 。端口设置在systemctl start/stop/restart motion中的8081下。

#8 楼

我不知道您是否正在寻找监视软件,但是我已经成功安装并运行了软件运动检测器motion。您应该看看官方指南。

评论


运动仅适用于USB相机

–geneorama
15年2月21日在20:44

@geneorama motion使用不限于USB摄像头的video4linux接口,bcm2835-v4l2模块可通过此接口访问摄像头板。

– mpromonet
15年4月13日在6:42

#9 楼

我已经能够在Raspberry Pi 2上使用uv4l WebRTC流式传输视频。这非常容易。只需按照本教程进行即可。希望对您有所帮助。

评论


请在此处包括本教程的相关部分,以防止链接腐烂。

– Bex
15年7月12日在19:09

仅适用于Pi2及更高版本。不适用于1A / 1A + /零。由于人们似乎能够做到,所以不能完全确定他为什么不能这样做,但是嘿...

–斯瓦尔塔夫
16-10-29在13:00

#10 楼

我在Windows 7上获取视频流时遇到了麻烦。有很多Linux解决方案,直到现在我都无法在Windows上复制它们。最终我得到了一个非常快速的解决方案:


获取Windows版本的netcat:http://joncraton.org/files/nc111nt.zip,将其解压缩并添加到路径中
获取新版本的mpc-hc,该文件可以从stdin中读取:https://mpc-hc.org/downloads/ install并将其路径也添加到path(我的是64位,但希望是32位也可以)

在树莓派上:

raspivid -t 0 -w 1024 -h 768 -fps 20 -b 1000000 -o - | nc your.receiver.ip.address 5001


在Windows机器上:

nc -l -p 5001 | mpc-hc64 -


因此,我认为,没有任何东西可以重新打包或重新打包,重新混合或如此。来自raspvid的二进制流被馈送到mpc并显示。我的覆盆子通过wifi进行操作,因此起初我得到了一个合理的延迟,将延迟缩短了半分钟,减少了0.2-0.3秒。

,我无法在其中使用vlc就像nc -l -p 5001 | vlc -只是打开vlc窗口而没有任何视频一样。

#11 楼

我将Nginx与RTMP支持一起用于流媒体传输到世界,并与avconv一起用于处理摄像机输入。可以在Github上找到代码。

评论


好人,您愿意分享任何视频时滞的经验吗?

– kuhajeyan
16年6月28日在17:55

是的,大约有5秒的延迟。

– TTT
16年7月25日在10:07

#12 楼

我已经按照README.md上的说明从pi上的https://github.com/BreeeZe/rpos安装了ONVIF解决方案。唯一的区别是我已经安装了node v8.4.0。这使我可以在同一网络上连接的NVR中查看摄像机的输出。此外,可以使用地址rtsp://192.168.1.3:8554/h264通过VLC播放器网络流直接播放摄像机

#13 楼

虽然彼得·汉森(Peter Hansen)的代码很可能在LAN上可以正常工作,但出于完整性考虑:
TCP是关于实时的数据完整性。在实时流中,为了及时显示,一些数据丢失可能是可以接受的。在这种情况下,UDP可能更好。
我还没有测试该代码。现代路由器甚至可以做到100美元的型号。

#14 楼

一会儿也遇到了类似的问题:

https://www.npmjs.com/package/ws-avc-player

其他建议的解决方案,但我认为如果优先考虑通过Web的低延迟是很好的方法。

评论


我没有编写解码器本身,它是一个单独的项目github.com/mbebenita/Broadway。然而,它的优化令人惊讶地得到了很好的优化,正如我在回答中所说,它可以轻松处理dp上的480p。我选择Brodway的原因是因为rpi上没有vp8 / 9硬件编码器,因此h264实际上是唯一不错的选择。但是,如果要在浏览器中使用本机h264解码器,则可以忘记低延迟。

–MatijaG
18-3-7在10:52



听起来太不可思议了,我必须尝试一下。

–kwasmich
18-3-7的11:02

任何反馈将非常欢迎:)

–MatijaG
18 Mar 7 '18 at 11:03

只是现在我有一些业余时间。我无法使示例与raspivid相机供稿一起运行。另一方面,使用ffmpeg时,我每秒只能得到十分之一的帧。我使用了干净的Raspbian和Pi Zero。你对我有什么提示吗?

–kwasmich
18年4月18日在19:45

是的,使用ffmpeg会因为缺乏硬件加速而一事无成。尝试使用以下示例运行示例:node example / index.js raspivid如果遇到问题,请尝试仅运行node example / index.js并单独运行/ opt / vc / bin / raspivid -pf基线-ih -t 0 -w 640 -h 480 -hf -fps 15 -g 30 -o-| nc localhost 5000,看看是否从raspivid得到任何错误

–MatijaG
18年5月24日在8:20