i.MX6ULL - 远程视频监控配置(nginx-rtmp流媒体服务器、ffmpeg推流)
目录
- i.MX6ULL - 远程视频监控配置(nginx-rtmp流媒体服务器、ffmpeg推流)
- 1、前言
- 2、buildroot文件系统构建
- 2.1 勾选alsa-utils(选做:如果你需要推音频就勾选上)
- 2.2 勾选ffmpeg
- 2.3 勾选mjpg-streamer(选做)
- 2.4 勾选nginx
- 3、编译测试
- 4、后记
1、前言
~~~~~~~~ 该远程视频监控实现主要是参考了正点原子和韦东山老师的教程,再加上我自己的偷懒融合而成。(<_>:其实是我自己的目的是为了快速实现,用以验证方案,后续有一个项目需要用到。。。)
~~~~~~~~ 正点原子的视频监控项目是手动移植ffmpeg、nginx、alsa-utils(处理音频的软件)到开发板上,我自己尝试移植了一下,虽移植成功,但步骤比较繁琐且不一定会遇到什么问题要去解决,所以也没法写一个固定步骤的文档教程。
~~~~~~~~ 后来看到韦东山老师的教程,发现用buildroot构建文件系统的时候,buildroot的工具包内ffmpeg和nginx都包含了,那么索性直接用buildroot文件系统就得了,不需要自己手动移植了。
2、buildroot文件系统构建
基本构建:参考正点原子《I.MX6U嵌入式linux驱动开发指南》Buildroot根文件系统构建这一章节,当然,我自己也手把手做了一遍并写了一个博客,见此:https://blog.csdn.net/qq153471503/article/details/127017247
基于此基本文件系统,我们开始添加ffmpeg、nginx、alsa-utils的编译。
2.1 勾选alsa-utils(选做:如果你需要推音频就勾选上)
Target packages > Audio and video applications > alsa-utils
全部勾选。
如下图所示:
Target packages > Libraries > Audio/Sound > alsa-lib
全部勾选,如下图:
2.2 勾选ffmpeg
Target packages > Audio and video applications > ffmpeg
全部勾选,如下图所示:
2.3 勾选mjpg-streamer(选做)
Target packages > Networking applications
勾选: mjpg-streamer
如下图所示:
2.4 勾选nginx
Target packages > Networking applications > nginx
全部勾选,如下图所示:
由于nginx本身是没有rtmp功能的,是依靠第三方模块支持的,所以需要将模块一同编译进nginx。
additional modules
就是用于指定第三方模块的目录。
填上:/opt/yijie/buildroot-2022.02.5/dl/nginx/nginx-http-flv-module
这是我下载的nginx-http-flv-module。
建议是放到buildroot-2022.02.5/dl/nginx/
目录下,如果没有nginx目录则创建。
可以在buildroot-2022.02.5/dl/nginx/
目录下使用git直接下载:
git clone https://github.com/winshining/nginx-http-flv-module.git
说明:nginx-http-flv-module是基于nginx-rtmp-module的二次开发,比nginx-rtmp-module支持的功能更多了,详细介绍可见:https://github.com/winshining/nginx-http-flv-module
3、编译测试
以上配置完之后就可以编译了,启动测试见:https://blog.csdn.net/qq153471503/article/details/127017247。
启动后,开发板打印:
可以看到自动打印 start nginx,默认开机启动。
修改buildroot文件系统中nginx默认配置文件:/etc/nginx/nginx.conf
在该文件末尾加入:
rtmp {
server {
listen 1935;
chunk_size 4096;#上传flv文件块儿的大小
application live {
live on;#开启live的应用
allow publish 127.0.0.1;
allow play all;
}
}
}
保存退出后,重启nginx:
/etc/init.d/S50nginx restart
此时,推流的地址就是:rtmp://127.0.0.1:1935/live/xxxxx
其中,xxxxx可以自定义。
使用ffmpeg推流测试:
成功推流。
在windows上使用vlc播放器拉流查看视频:
成功拉流播放:
4、后记
本编文章快速验证了方案可行性,后续的视频监控项目即可以此来做。
imx6ull的性能太拉胯了,使用uvc的usb摄像头需要经过转码,所以vlc播放器拉流播放会异常的卡!
后续打算使用全志的SOC来做此方案。
ends…