鸣谢:徐立伟的博客
情景介绍:目前,我已经打开了两个坦克。一个是用来饲养锦鲤的沼泽过滤器,另一个是用来饲养海龟的泥浆池。由于平时几乎没有时间观察,他决定现场直播龟罐。他碰巧手里拿着一个闲置的覆盆子馅饼3B,所以他搜索了一下互联网,买了一台CSI摄像机来启动直播计划。
现场直播效果如下:
直播效果如下:
项目所需配件
树莓派3/4代均可
树莓派摄像头(选用CSI接口的摄像头,淘宝15-25RMB, 如果晚上也想看到,就买个带夜视功能的(记得加红外灯,否则一塌糊涂),40元左右)
系统配置及环境搭建
系统:官方原版系统(桌面版)
系统安装完毕后需要开启CSI摄像头模块、系统SSH功能以及VNC服务。
开启SSH功能以后就可以无屏操作树莓派了,开启VNC服务可以无屏进行直播操作。
最简单的开启SSH功能的方法,树莓派断电取出SD卡,插在电脑上,在boot分区根目录建立一个SSH(无后缀)的文件。
之后开机执行
命令,进入树莓派的系统配置页面
选择第三项Interface Options进入
选择P1 Camera,一路选择“是”“确定”,开启树莓派摄像头模块
软件:ffmpeg(用于合成视频并推流)
执行
现在仍然有部分教程说要编译安装,以前ffmpeg这个软件因为没在官方的ppa中,所以需要编译安装,但那都是多年前的事情了。建议大家直接apt安装。
VNC(用于树莓派进行局域网内无屏操作)
执行
开启树莓派的VNC服务,用于树莓派异常停机后的重新开启推流服务。每次断电重启后都需要手动执行一次该命令。
代码执行完毕后会显示树莓派VNC服务的端口号,后面会用到。
VNC客户端需要自行下载,无需配置,将树莓派的IP地址加端口号输入即可连接。
以上步骤执行完毕以后,系统就算配置完成了,接下来就可以安装树莓派及摄像头模组了。
树莓派的网络连接建议使用有线连接,无线网络也可以使用,但是不间断的上传可能会造成无线路由器亚历山大,导致全家断网,所以慎重使用无线网络。
1080P30fps的推流对于上传带宽的消耗在500-600KB/s。(注意B的大小写,相关转换关系这里就不再赘述了)
相关命令
进入使用VNC登录树莓派系统桌面,点击打开终端,输入如下命令:
raspivid -o - -t 0 -vf -hf -fps 30 -b 6000000
这个命令是用raspivid从摄像头流中以每秒30帧读取数据,然后通过管道符将视频数据传送给ffmpeg, ffmpeg将视频和音频编码后发送到rtmp服务器。这里需要注意的是rtmp的地址及直播码需要手动获取添加。
获取rtmp地址及直播码,使用过直播的应该都知道,此步骤需要在网页端进行。
代码中绿色的路径表示背景音乐的位置,树莓派中是没有这个文件的,需要自己去增加,找到一个你喜欢的mp3格式的背景音乐,将文件名修改为“*.mp3”,放到上述目录即可,*可以是任意名称。这里需要注意一下music这个文件夹的字母大小写,需要保持一致。
注意:如果你的摄像头画面存在翻转,可以在raspivid命令后加上”-rot 180″命令对画面进行180度翻转。