这篇文章主要为大家展示了“树莓派如何实现直播”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“树莓派如何实现直播”这篇文章吧。
1.通过USB摄像头
2.通过CSI(树莓派摄像头)
今天我们实现通过CSI来实现直播功能,但是也介绍USB摄像头实现直播的方案。
支持CSI(树莓派官方摄像头)
开源项目github:mjpg-streamer
效果图
基础知识:cmake和make区别
实现过程
1.下载mjpg-streamer
wget https://github.com/jacksonliam/mjpg-streamer/archive/master.zip
2.Building & Installation
sudo install cmake libjpeg8-dev
3.解压master.zip
unzip master.zip
解压后目录
drwxr-xr-x 3 pi pi 4096 Apr 12 05:24 mjpg-streamer-master/
4.编译及安装mjpg_steamer
cmake 指向CMakeLists.txt所在的目录,例如cmake .. 表示CMakeLists.txt在当前目录的上一级目录。cmake生成很多编译的中间文件以及makefile文件,所以一般新建一个新的_build,专门用来编译
cd mjpg-streamer-experimental mkdir _build cd _build cmake .. make sudo make install
make根据生成makefile文件,编译程序
说明:
make就是make all,编译用的--仅编译,具体编译了那些文件要看你的Makefile;
make install,编译并安装(比如安装到/usr/bin目录下,然后可以直接使用。因为/usr/bin只有管理员才能向里面添加文件,所以通常要加sudo)
5./etc/default/tmpfs:
# mount /tmp as a tmpfs. Defaults to no; set to yes to enable (/tmp
# will be part of the root filesystem if disabled). /tmp may also be
# configured to be a separate mount in /etc/fstab.
RAMTMP=yes
6.Reboot
7.raspistill -tl 500 -t 999999 -vf -w 960 -h 720 -o /tmp/mjpg/test.jpg -n -q 50&
8.mjpg_streamer -i 'input_file.so -f /tmp/mjpg -r'
9.启动mjpg_streamer
pi@xxxxxx:~/mjpg-streamer-experimental$ mjpg_streamer MJPG Streamer Version.: 2.0 o: www-folder-path......: disabled o: HTTP TCP port........: 8080 o: HTTP Listen Address..: (null) o: username:password....: disabled o: commands.............: enabled bind: Address already in use
修改端口号:默认是8080端口,由于没找到配置文件,也是很无奈!(这是我一开始理解的,把mjpg_stream当作一个简单服务器了,实际上mjpg_stream是一款命令行程序,可通过mjpg_stream命令 - p操作修改端口号)
通过源码修改端口号,重新编辑安装
编辑器Visual Studio Code
/mjpg_streamer-experimental/output_http/output_http.c
int output_init(output_parameter *param, int id) { int i; int port; char *credentials, *www_folder, *hostname = NULL; char nocommands; DBG("output #%02d\n", param->id); port = htons(8099); credentials = NULL; www_folder = NULL; nocommands = 0; param->argv[0] = OUTPUT_PLUGIN_NAME; /* show all parameters for DBG purposes */ for(i = 0; i < param->argc; i++) { DBG("argv[%d]=%s\n", i, param->argv[i]); } }
10.http://<raspberrypi>:8099/
11.命令行启动服务
cd到~/mjpg-streamer-master/mjpg-streamer-experimental
pi@xxxxxx:~/mjpg-streamer-master/mjpg-streamer-experimental$ mjpg_streamer -i "input_raspicam.so" -o "output_http.so -w ./www" MJPG Streamer Version.: 2.0 i: fps.............: 30 i: resolution........: 640 x 480 i: camera parameters..............: Sharpness 0, Contrast 0, Brightness 50 Saturation 0, ISO 0, Video Stabilisation No, Exposure compensation 0 Exposure Mode 'auto', AWB Mode 'auto', Image Effect 'none' Metering Mode 'average', Colour Effect Enabled No with U = 128, V = 128 Rotation 0, hflip No, vflip No ROI x 0.000000, y 0.000000, w 1.000000 h 1.000000 o: www-folder-path......: ./www/ o: HTTP TCP port........: 8099 o: HTTP Listen Address..: (null) o: username:password....: disabled o: commands.............: enabled i: Starting Camera Encoder Buffer Size 81920
启动脚本方式
vi live.sh
脚本内容
cd ~/mjpg-streamer-master/mjpg-streamer-experimental mjpg_streamer -i "input_raspicam.so" -o "output_http.so -w ./www"
执行脚本
sh live.sh
12.视频很卡顿的情况
原因在于mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c
static int fps = 5;//每秒5帧
修改为fps = 30;//每秒30帧
static int fps = 30; static int width = 640; static int height = 480; static int quality = 85; static int usestills = 0; static int wantPreview = 0; static int wantTimestamp = 0; static RASPICAM_CAMERA_PARAMETERS c_params;
13.重新编译安装
查看步骤4编译及安装mjpg_steamer
14.更加流畅
/etc/default/tmpfs:
# mount /tmp as a tmpfs. Defaults to no; set to yes to enable (/tmp
# will be part of the root filesystem if disabled). /tmp may also be
# configured to be a separate mount in /etc/fstab.
RAMTMP=yes
Reboot.
raspistill -tl 500 -t 999999 -vf -w 960 -h 720 -o /tmp/mjpg/test.jpg -n -q 50&
mjpg_streamer -i 'input_file.so -f /tmp/mjpg -r'
http://<raspberrypi>:8080/?action=stream
aptitude——详细查看已安装或可用的软件包。
sudo aptitude
用树莓派官方摄像头做丝滑般流畅的监控!
支持CSI(树莓派摄像头)
网页刷新照片方式,很low很low的方式,类似于播放幻灯片
["raspistill", "-t", "0.1/1/5", "-w", "300", "-h", "500" ]
说明:
红色标注参数,只能是正整数,否则出现不可控,导致进程raspistill一直占用相机拍照。导致其它程序无法使用相机。
-t, --timeout : 拍照和关闭时的延时指定,未指定时默认是5s
支持USB摄像头,不支持CSI(树莓派官方摄像头)
nginx-rtmp-module
情况一:已安装Nginx,重新把rtmp-module编译Nginx
参考文章:如何升级Nginx到最新稳定版
参考文章:已安装nginx动态添加模块
参考文章:nginx 1.9.5 ./configure: error: invalid option "–with-http_spdy_module"
情况二:直接把rtmp-module与Nginx编译,安装Nginx
遇到的问题:
install FFmpeg
sudo apt-get install ffmpeg
树莓派操作系统没有ffmpeg程序
解决方案<<树莓派摄像头实时监控>>该文章中的提示:
"你还需要 libav-tools,它是一个 ffmpeg 分支。数月之前,Debian用libav-tools取代了了ffmpeg"
以上是“树莓派如何实现直播”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。