基于imx6ull打造流媒体视频监控:ffmpeg + nginx + rtmp
Posted @菠萝菠萝哒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于imx6ull打造流媒体视频监控:ffmpeg + nginx + rtmp相关的知识,希望对你有一定的参考价值。
0.平台简介
项目 | 描述 |
---|---|
硬件平台 | 100ask_imx6ull_pro开发板 |
Linux内核 | Linux 4.9.88 |
Buildroot版本 | Buildroot 2019.02 |
FFmpeg版本 | 3.4.5 |
nginx版本 | 1.15.7 |
摄像头 | 支持UVC的USB摄像头 |
总体的系统方案如下,是韦老师在【自己做一个物联网视频监控系统】系列视频中分享的一个实例,基本框架如下:
1.基于Buildroot编译相关软件
前提,本文所使用的Linux内核已设置支持UVC设备类驱动,且基于此进行以下操作,使用韦老师所分享的Buildroot进行编译,需要首先进行对imx6ull_pro开发板的相关默认配置进行设置。首先需要在终端进行环境变量的设置。
colin@100ask:~/works/Buildroot_2019.02$ export ARCH=arm
colin@100ask:~/works/Buildroot_2019.02$ export CROSS_COMPILE=arm-linux-gnueabihf-
colin@100ask:~/works/Buildroot_2019.02$ export PATH=$PATH:/home/colin/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/
执行make 100ask_imx6null_defconfig完成基础的配置之后,开始对ffmpeg和nginx的编译配置。
1.1 编译FFmpeg
在Buildroot的根目录下make menuconfig,选择Target packages。
进入Target packages路径之后选择Audio and video applications,在该路径下选择ffmpeg。
之后执行make进行编译时,Buildroot会在dl/ffmpeg目录下自动下载源码进行编译。
1.2 编译Nginx
该视频实时推流demo的视频推流借助第三方插件‣,该插件是基于nginx-rtmp-module的流媒体服务器。具备nginx-rtmp-module的所有功能,增加了HTTP-FLV,GOP缓存和VHOST(一个IP对应多个域名)的功能。插件传送门:https://github.com/winshining/nginx-http-flv-module,gitee传送门:https://gitee.com/winshining/nginx-http-flv-module/。支持的播放器如下:VLC (RTMP & HTTP-FLV) 、OBS (RTMP & HTTP-FLV) 、JW Player (RTMP) 、flv.js (HTTP-FLV)。将该插件下载在Buildroot的dl/nginx目录下后即可开始配置。
1)需要将原本编译的lighttpd模块这项去掉。
2)添加nginx模块:将nginx加入编译并使能相关功能,为了保险起见这里将nginx下的所有功能都添加进去进行编译了。
3)添加第三方插件路径。
$(TOPDIR)/dl/nginx/nginx-http-flv-module
编译完成之后,会在生成output/image目录下生成相关镜像文件,其中emmc.img是我们要烧写在开发板中的添加了ffmepg和nginx软件模块的系统镜像文件。
2. 系统配置
烧录完成,系统运行起来后检查ffmpeg和nginx是否编译安装成功,在终端下输入ffmpeg -v和nginx -v进行检查。
除了基本的开发板的网络环境的设置之外主要的就是Nginx的配置,在运行之前还需要对nginx的配置文件进行修改。
vi /etc/nginx/nginx.conf
主要进行修改的有三点:
- 1)将worker_processes设置为auto;
- 2)新增rtmp配置。
rtmp
server
listen 1935;
chunk_size 4096;
application live
allow publish 127.0.0.1;
allow play all;
live on;
record off;
meta copy;
- 3)新增location /test设置。
location /test
flv_live on;
修改完配置文件,需要重启服务,在系统终端执行以下命令:
/etc/init.d/S50nginx restart
3. 流媒体视频监控测试
3.1 推流
在开发板上执行以下命令进行摄像头数据推流:
ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10 -f flv rtmp://127.0.0.1/live/lin
3.2 拉流
使用VLC播放器,播放器传送门:https://www.videolan.org/。
使用RTMP协议进行拉流,详细的操作步骤如下:1)VLC播放器点击媒体;2)打开网路串流;3)输入你设备的IP相关的推流地址如下图所示。
4. 测试效果
QT软件开发-基于FFMPEG设计视频播放器-支持流媒体地址播放
QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解(一)
https://xiaolong.blog.csdn.net/article/details/126832537
QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解(二)
https://xiaolong.blog.csdn.net/article/details/126833434
QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解(三)
https://xiaolong.blog.csdn.net/article/details/126836582
QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解(四)
https://xiaolong.blog.csdn.net/article/details/126842988
QT软件开发-基于FFMPEG设计视频播放器-支持流媒体地址播放(五)
https://xiaolong.blog.csdn.net/article/details/126915003
QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解-完整例子(六&
以上是关于基于imx6ull打造流媒体视频监控:ffmpeg + nginx + rtmp的主要内容,如果未能解决你的问题,请参考以下文章
QT软件开发-基于FFMPEG设计视频播放器-支持流媒体地址播放
基于ffmpeg下载.ts流媒体分片传输文件自动合并单独完整mp4文件,windows