家庭监控系统实现(三) -- 树莓派nginx部署及rtmp服务器搭建

转载请注明出处:https://blog.csdn.net/mymottoissh/article/details/83216835

本篇主要记录一下本地实时视频流的推送。

关于这部分功能,最初的想法是在树莓派端建立UDP服务器,将由摄像头采集到的视频流广播出去,但是Android端没有找到播放UDP裸流的方式。VLC播放器可以设置UDP服务器地址进行播放,但是效果如何没有验证,具体效果如何有时间可以试一把。

关于Android端播放实时视频的方式,还有人通过ImageView来做。每隔一段时间,socket发送一帧图片。Android每次接收到图片,更新ImageView,来实现实时视频显示。

但是上述方法都不是正宗的实时视频流推送方法。其实反观我们要实现的功能就是视频的点播和直播功能。关于视频流的推送,我转了一篇介绍性的文章。介绍了几种常用流媒体协议。我们上一节的历史文件点播功能使用了HTTP协议实现。本节的实时推送采用rtmp协议。这篇文章也重点记录树莓派rtmp服务器搭建的流程。

网上的rtmp服务器搭建都与nginx配合使用,因为在nginx的配置文件中可以很方便地对rtmp进行配置。本篇也不免俗地套路了一把,记录一下服务器环境的搭建流程。结合上篇的HTTP服务器,nginx也将对其进行代理。

nginx安装及rtmp模块的配置

首先下载nginx安装包和rtmp模块包。nginx我是从官网手动下载的。

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

将两个包分别进行解压。进入到nginx目录,首先执行./configure进行安装配置。配置了安装位置和rtmp模块的添加

./configure --prefix=/usr/local/server/nginx --add-module=/home/pi/src/nginx-rtmp-module-master

然后 make && make install进行安装。

安装完成后在server模块进行代理设置。这部分主要是代理上一节的HTTP服务器用于提供文件列表、文件内容、开启rtmp服务器功能。

upstream backend {
    server 192.168.0.104:8080;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

然后对rtmp模块进行配置。文件末尾添加

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        application live {
            live on;
            record off;
        }
    }
}

到此为止,如果同时启动的HTTP服务和nginx,通过直接访问IP地址就能映射到上一节设计的接口上交互数据了。rtmp模块虽然已经配置好,但是还没有获取视频流的手段。因此,我们仍需要将摄像头的视频流发送到rtmp服务器上才能推送给客户端。这里使用GStreamer。

sudo apt-get install libav-tools
sudo apt-get install gstreamer1.0-tools

安装完成后执行下面指令就能实现视频流的抓取了

gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw, width=640, height=480, framerate=30/1' ! queue ! videoconvert ! omxh264enc ! h264parse ! flvmux ! rtmpsink location='rtmp://树莓派的IP地址/live live=1'

上述视频文件和实时视频的视频流经过了VLC测试可以正常播放,下一篇将实现在Android播放视频的客户端。

关于/dev/video0的问题

由于这里显式地绑定了设备号,而对于有的小伙伴/dev下没有该设备节点的情况。是由开发嵌入式驱动时,经常会将设备驱动编译成一个.ko文件,然后在系统上进行挂载。同时在/dev下建立一个设备节点与之对应。这样我们的对设备的操作就可以转化为对节点的操作。但是树莓派的摄像头模块是放在/boot下以固件形式进行加载的。所以对于这种情况,需要在/etc/modules文件中加上bcm2835-v4l2一行,注意L小写。这样重启设备就可以找到设备节点了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值