无论是树莓派官方摄像头模块还是其他兼容的USB摄像头,连接好摄像头之后,运行命令去启用摄像头:
编辑系统模块文件。
sudonano/etc/modules在这个文件的最后添加一行
bcm2835-v4l2保存。建议配置好之后重启一下树莓派。然后测试摄像头是否正常工作。
raspistill-t2000-o1.jpg执行上面的指令之后,会你用摄像头拍照,并将照片保存在当前目录下,名为1.jpg。
如果一切正常,恭喜!可以开始下面的步骤了!
如果你的树莓派使用有线网络的话可以忽略这一步。笔者用的树莓派是ZeroW版本,没有有线网口,所以必须手动配置无线网络。
sudonano/etc/network/interfaces将配置修改为:
autoloifaceloinetloopbackallow-hotplugwlan0autowlan0ifacewlan0inetdhcpwpa-ssid"WIFISSID"wpa-psk"WIFIPASSWORD"WIFISSID和WIFIPASSWORD分别替换为你的WIFI的SSID和密码。
比较漫长的等待之后,编译安装结束。这时可以测试nginx是否安装好。
nginx-v正常的話,會顯示nginx的版本。
配置nginx。
/etc/nginx/nginx.conf在末尾添加如下配置:
rtmp{server{listen1935;chunk_size4096;applicationlive{liveon;recordoff;}}}重启nginx服务。
sudoservicenginxstart没有错误提示就表示成功了。到这里nginx和RTMP模块都准备好了。
sudoapt-getupdatesudoapt-getinstalllibav-tools#安装GStreamersudoapt-getinstallgstreamer1.0-tools#安装GStreamer扩展组件sudoapt-getinstalllibgstreamer1.0-0libgstreamer1.0-0-dbglibgstreamer1.0-devliborc-0.4-0liborc-0.4-0-dbgliborc-0.4-devliborc-0.4-docgir1.2-gst-plugins-base-1.0gir1.2-gstreamer-1.0gstreamer1.0-alsagstreamer1.0-docgstreamer1.0-omxgstreamer1.0-plugins-badgstreamer1.0-plugins-bad-dbggstreamer1.0-plugins-bad-docgstreamer1.0-plugins-basegstreamer1.0-plugins-base-appsgstreamer1.0-plugins-base-dbggstreamer1.0-plugins-base-docgstreamer1.0-plugins-goodgstreamer1.0-plugins-good-dbggstreamer1.0-plugins-good-docgstreamer1.0-plugins-uglygstreamer1.0-plugins-ugly-dbggstreamer1.0-plugins-ugly-docgstreamer1.0-pulseaudiogstreamer1.0-toolsgstreamer1.0-xlibgstreamer-plugins-bad1.0-0libgstreamer-plugins-bad1.0-devlibgstreamer-plugins-base1.0-0libgstreamer-plugins-base1.0-dev这里安装了avconv和GStreamer两套视频采集组件。avconv的使用方式是:
avconv-fvideo4linux2-r24-i/dev/video0-fflvrtmp://localhost:1935/liveavconv采用软编码实现,因此CPU消耗比较高,推荐用GStreamer,GStreamer的采集使用如下命令:
gst-launch-1.0-vv4l2srcdevice=/dev/video0!'video/x-raw,width=1024,height=768,framerate=30/1'!queue!videoconvert!omxh264enc!h264parse!flvmux!rtmpsinklocation='rtmp://树莓派的IP地址/livelive=1'如果希望在后台运行这两个命令可以在命令后面添加&,例如:
gst-launch-1.0-vv4l2srcdevice=/dev/video0!'video/x-raw,width=1024,height=768,framerate=30/1'!queue!videoconvert!omxh264enc!h264parse!flvmux!rtmpsinklocation='rtmp://树莓派的IP地址/livelive=1'&device=/dev/video0这个参数可以省去,除非在有多个摄像头的时候,希望指定视频采集自某个指定的摄像头才需要这个参数。采集的视频怎么播放呢?请看下面介绍。
3、推送至斗鱼直播平台观看你可能注意到了GStreamer这个命令中有location这个参数。这个参数是设定采集到的视频流推向哪里,通过设定这个参数可以将视频流推向任何支持RTMP协议的服务器。
gst-launch-1.0-vv4l2srcdevice=/dev/video0!'video/x-raw,width=1024,height=768,framerate=30/1'!queue!videoconvert!omxh264enc!h264parse!flvmux!rtmpsinklocation='rtmp://树莓派的IP地址/livelive=1'斗鱼平台同样采用了RTMP协议传输直播视频,以斗鱼平台为例来说明一下推流到斗鱼的方法。
首先获取斗鱼的RTMP推流地址。开启了直播室之后可以获得推流码。注意,斗鱼的推流码是有时限的,取到推流码需要尽快使用以免过期。
gst-launch-1.0-vv4l2srcdevice=/dev/video0!'video/x-raw,width=1024,height=768,framerate=30/1'!queue!videoconvert!omxh264enc!h264parse!flvmux!rtmpsinklocation='rtmp://send1.douyu.com/live/1372rSOMdcBJ8UHDwsSecret=96d2k4ecdf267d17b8e8c38b6a4a6efd&wsTime=59f92e2e&wsSeek=offlive=1'