文档章节

树莓派直播

枫TI
 枫TI
发布于 2017/06/09 23:04
字数 1277
阅读 171
收藏 5

树莓派实现直播分两种方式

1.通过USB摄像头

2.通过CSI(树莓派摄像头)

今天我们实现通过CSI来实现直播功能,但是也介绍USB摄像头实现直播的方案。

mjpg-streamer

支持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

 

用树莓派官方摄像头做丝滑般流畅的监控!

raspistill

支持CSI(树莓派摄像头)

网页刷新照片方式,很low很low的方式,类似于播放幻灯片

["raspistill", "-t", "0.1/1/5", "-w", "300", "-h", "500" ]

说明:

红色标注参数,只能是正整数,否则出现不可控,导致进程raspistill一直占用相机拍照。导致其它程序无法使用相机。

-t, --timeout : 拍照和关闭时的延时指定,未指定时默认是5s

参考文章:raspberryPi摄像头命令行软件raspistill帮助文档

nginx-rtmp-module

支持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"

vlc

支持CSI (树莓派官方摄像头)

基于树莓派的专用摄像头实时监控

 

Motion

支持USB摄像头

参考文章:树莓派摄像头实时监控

参考文章:打造树莓派HTML5实时监控

参考文章:树莓派使用USB摄像头和motion实现监控

 

 

 

© 著作权归作者所有

共有 人打赏支持
枫TI
粉丝 13
博文 84
码字总数 42755
作品 2
东城
私信 提问
预告:基于树莓派如何开发机器人 | 硬创公开课

此前我们收到读者反馈,想听一节关于如何用树莓派开发机器人。树莓派为学习计算机编程教育设计的一种微型电脑,其系统基于Linux, 只有信用卡大小但视频、音频等功能通通皆有,可谓是“麻雀虽...

金红
2017/02/16
0
0
树莓派笔记02—树莓派硬件环境准备

在开始玩转树莓派之前,我们需要了解下树莓派的硬件配置以及所需要的配件。跟电脑PC机类似,树莓派也需要必要的输入输出设备才能工作。 1. 树莓派3B+ 2018年3月14日,树莓派基金会正式发布新...

TonyCode
08/03
0
0
10 个最值得关注的树莓派博客

如果你正在计划你的下一个树莓派项目,那么这些博客或许有帮助。 网上有很多很棒的树莓派爱好者网站、教程、代码仓库、YouTube 频道和其他资源。以下是我最喜欢的十大树莓派博客,排名不分先...

作者: Ben Nuttall
11/02
0
0
raspberrypi的相关网址

一、NOOBS安装 NOOBS使用说明书 http://www.shumeipai.net/thread-20009-1-1.html NOOBS自定义多系统启动 https://www.jianshu.com/p/afbcd17b785d NOOBS安装自定义系统 https://blog.csdn.......

mbzhong
昨天
0
0
子豪兄教你在树莓派上安装OpenCV

子豪兄教你在树莓派上安装OpenCV 本文介绍了如何在树莓派上安装分别运行在Python2和Python3的OpenCV。 运行在Python2上的OpenCV安装非常简单,几行命令即可搞定。运行在Python3上的OpenCV安装...

同济子豪兄
10/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据解析之XPath & lxml库

XPath 定义 即XML路径语言(XML Path Language),是一种用来确定XML文档中某部分位置的语言,它基于XML的树状结构,提供在数据结构树中寻找节点的能力,也适用于HTML文档中; 开发工具 Chrome...

村雨1943
19分钟前
1
0
day148-2018-11-15-英语流利阅读-待学习

赴美生子恐结束?特朗普中期选举憋大招 毛西 2018-11-15 1.今日导读 在 2013 年,一部《北京遇上西雅图》让赴美生子这个曾经神秘的话题吸引了很多关注。每年,数以万计的父母远赴美国,并在那...

飞鱼说编程
49分钟前
27
0
OSChina 周四乱弹 —— 每次我穿短裙的时候

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享DM DOKURO的单曲《Reality Check Through The Skull》: 差点以为手机卡了 《Reality Check Through The Skull》- DM DOKURO...

小小编辑
58分钟前
374
10
Windows 10 设置 Java 环境变量

首先你需要在我的电脑中打开,找到环境变量属性。 找到环境变量属性 找到环境变量属性后单击将会看到下面的设置界面。 在这个界面中设置高级系统设置。 环境变量 在弹出的界面中选择设置环境...

honeymose
今天
3
0
用any-loader封装jQuery的XHR —— 随便写着玩系列

哎,都说没人用JQuery啦,叫你别写这个。 其实我也是好高骛远使用过npm上某个和某个很出名的XHR库,嗯,认识我的人都知道我喜欢喷JQ,以前天天喷,见面第一句,你还用JQ,赶紧丢了吧。但我也...

曾建凯
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部