简介:
手头有一个树莓派3B+ 和一块CSI摄像头,想要实现一个推拉流直播的效果。
所需材料:开发板(我用的是树莓派3B+)、CIS摄像头、云服务器(用来搭建SRS服务器)
具体实现思路:
使用树莓派+CSI摄像头来做画面采集,然后使用FFmpeg推流到SRS云服务器上,然后用户可以拉取SRS服务器上的视频流。
具体步骤:
1.树莓派系统烧录
我之前用树莓派官方的烧录工具进行烧录,由于树莓派官方提供的镜像较新,存在的问题较多(可能是我比较菜吧)。比如对CSI摄像头的支持、以及不在支持raspistill和raspivid。所以我决定重新烧老一点的系统(我把我的树莓派镜像放到了下面)。
我的镜像是这个:2023-05-03-raspios-bullseye-armhf-full.img
镜像网盘地址:
链接:https://pan.baidu.com/s/1IgC4h5TGfSpd26QaNNqGKw?pwd=gk8a
提取码:gk8a
推荐一个比较好的烧录工具
烧录工具网盘地址:
链接:https://pan.baidu.com/s/11bK0YVrZMx5EwDTbU-hIHA?pwd=81ik
提取码:81ik
2.树莓派安装FFmpeg
树莓派是自带ffmpeg的,我们可以使用命令查看ffmpeg的版本:
ffmpeg -version
3.搭建SRS流媒体服务器
搭建SRS流媒体服务器需要用到云服务器,只有将SRS流媒体服务器搭建在云服务器上,才能让所有人都能拉取到你的视频流。如果你没有云服务器也没事,可以在开发板上搭建SRS流媒体的局域网服务器,在同一个局域网内的所有用户的是可以拉取到视频流的。如果开发板做了内网穿透,那么同样所有人都可以拉取视频流。
3.1 SRS流媒体服务器的搭建
搭建流媒体服务器查看我的另一篇文章:
http://t.csdnimg.cn/UJ3IV
4.使用FFmpeg推流到SRS服务器
4.1 查看video device0设备
ls -al /dev
你video0就是我们的CSI摄像头
如果没有可以重新插一下摄像头,如果还是没有说明没有添加摄像头的驱动程序.ko文件和对应的raspiberry B3+的硬件使能
sudo vim /etc/modules
然后添加这段话到最后一段
bcm2835-v4l2
修改Raspberry的启动配置使能项:
sudo raspi-config
4.2 测试摄像头
然后重启,在查看是否存在video0
参考教程:
树莓派摄像头使用教程 (spotpear.cn)
没问题的话就测试一下这个摄像头,看看能不能进行拍照截图
raspistill -o test.jpg
4.3 FFmpeg推流
ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -b:v 2M -f flv rtmp://your_streaming_server_address
最后来看一下效果,我推流的是我自己电脑的画面
拉流画面
我使用手机上的软件MX播放器进行拉流,这个软件在软件商店有可以直接下载
根据下面的提示拉流