正点原子imx6ull开发板视频监控项目实战系列4:Nginx服务器的搭建

1、nginx在流媒体方案中的位置

在这里插入图片描述
推流端:
FFmpeg使用RTMP协议向Nginx推流
拉流端:
VLC播放器使用RTMP或HTTPFLV协议从Nginx拉流
浏览器使用HTTPFLV协议从Nginx拉流(安装flv.js)

2、移植Nginx到开发板

1)、nginx本来是不支持RTMP,HTTPFLV协议,为了让nginx支持RTMP,HTTPFLV协议,我们需要第三方模块,这个第三方模块目前有两种:
①、nginx-rtmp-module:实现了RTMP协议
②、(中国的)nginx-http-flv-module:在nginx-rtmp-module的基础上,实现了HTTPFLV,并覆盖nginx-rtmp-module的所有功能
所以,我们将会在Nginx上使用nginx-http-flv-module。
2)、在buildroot里面配置nginx,并编译:
①、输入命令:
在Buildroot目录下,创建目录:mkdir dl/nginx
使用git下列载:
cd dl/nginx && git clone https://github.com/winshining/nginx-http-flv-module.git
②、make menuconfig
把原来的lighttpd去掉,否则板子也会自动启动它,就会有两个HTTP服务了:lighttpd, nginx
如图选择Nginx,建议把所有功能都选上
并且设置额外的参数,在“additional modules”中添加: $(TOPDIR)/dl/nginx/nginx-http-flv-module
在这里插入图片描述
最后执行(先删除之前编译的nginx,我发现有时设置的第3方模块不起作用,删除后再make就可以了):rm -rf output/build/nginx-1.15.7 && make
这会在Buildroot的dl/nginx目录下自动下载源码,并编译
结果保存在output/images目录下
3)、启动开发板,开发板会自动运行Nginx.
为了让nginx支持RTMP/HTTPFLV协议,我们需要修改nginx的配置文件:
做三处修改:
vi /etc/nginx/nginx.conf
①、将worker_processes 1;改为worker_processes auto;
②、将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;
}
}
}
③、rtmp使用的是1935这个端口,这个端口经常会被防火墙拦截。为了避免这个情况,我们可以使用http协议。
在http节点:
http {
include mime.types;
default_type application/octet-stream;…………
下面创建一些内容:
location /test {
flv_live on;
}
这样,以后就可以使用http协议来拉流。
4)、修改好配置文件,重启nginx服务器。
/etc/init.d/S50nginx restart
5)、在pc机网页中输入开发板ip,就可以打开nginx服务器。
在这里插入图片描述
6)、测试流媒体
推流端:
在开发板上执行:
ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10 -f flv rtmp://127.0.0.1/live/wei (一秒10帧,质量是10,wei是数据流的名字;live是app)
拉流端:
在PC上安装VLC播放器:
①、使用RTMP协议拉流:VLC播放器中点击“媒体”->“打开网络串流”,输入:rtmp://10.3.78.33/live/wei ,就可以播放了
或②、使用HTTPFLV协议拉流:VLC播放器中点击“媒体”->“打开网络串流”,输入: http://10.3.78.33/test?app=live&stream=wei (test对应在nginx配置文件中添加的),就可以播放了。
7)、
缺点:
IMX6ULL性能太弱,在VLC播放器里看到的视频很卡,很滞后
我们可以上传一个mp4文件到开发板,把它推到Nginx: ffmpeg -re -i test.mp4 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/wei
然后再用VLC拉流看看,会发现很顺畅
具体实现:
①、使用网上搭建好的,在网页可直接打开:
http://player.pingos.io/flv
②、在开发板输入:
ffmpeg -re -i test.mp4 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/wei
③、在打开的网页,输入下面命令(同上6):
http://10.3.78.33/test?app=live&stream=wei
在这里插入图片描述
④、此时会报错,解决方法:
配置nginx的配置文件:vi /etc/nginx/nginx.conf
在上面http节点下面添加:
location /test {
flv_live on;
chunked_transfer_encoding on;
add_header ‘Access-Control-Allow-Origin’ ‘*’;
add_header ‘Access-Control-Allow-Credentials’ ‘true’;
}
重启:/etc/init.d/S50nginx restart
8)、显然,我们也可以自己编写一个html网页。
参考博客:
https://blog.csdn.net/string_kai/article/details/100598268
https://www.cnblogs.com/saysmy/p/7851911.html
需要改动的地方:
①。修改URL地址:
修改成:
在这里插入图片描述
②、然后还用到了:flv.js文件。我们本地并没有这个文件,我们可以从网上下载。
在这里插入图片描述

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

One Piece&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值