在韦东山老师的项目中,是将ffmpeg和Nginx都安装在开发板上运行的,因此只能实现局域网内的传输。如果要在公网上进行传输,有两种方法,一是将Nginx放在公网服务器上,因为它具有公网IP,公网域名;二是使用内网穿透,这个实现还是比较麻烦的,而且如果真做产品也不会这样做。
现在在阿里云上通过学生认证可以免费领半年的服务器,或者10元就可以购买一个月的服务器,非常方便,因此本文在韦东山项目的基础上,进行扩展,首先在推流端,我使用的是TX2开发板,和它的板载摄像头,但是并不使用ffmpeg命令推流,而是通过OpenCV程序打开摄像头,然后使用rtmp,和ffmpeg进行推流。参考GitHub链接:https://github.com/TaoWei001/opencv-ffmpeg-rtmp-stream
推流的服务器就是我申请的阿里云服务器,在上面搭建好Nginx服务即可,其他步骤都是一样的。
参考链接:https://www.jibing57.com/2020/07/29/how-to-setup-nginx-rtmp-on-centos-7/
https://blog.csdn.net/rain_meter/article/details/88127209
一、centos如何搭建Nginx和rtmp服务器
1.更新系统
yum update
2.安装Nginx所需开发包
yum install gcc
yum install pcre pcre-devel pcre-static pcre-tools
yum install openssl openssl-static openssl-devel
yum install wget unzip
3.下载nginx和nginx-http-flv-module ((nginx-http-flv-module是基于nginx-rtmp-module的,故请勿重复安装))
wget http://nginx.org/download/nginx-1.14.2.tar.gz
git clone https://github.com/winshining/nginx-http-flv-module.git
4.解压,进行编译,并添加模块
cd nginx-1.17.9
./configure --add-module=/path/nginx-http-flv-module
make install
注意,module后面跟的是你http-flv的路径。编译完之后,出现下图的leaing就代表成功了
安装完成后 目录应该是 /usr/local/nginx 下;
其中 执行文件 :/usr/local/nginx/sbin/nginx
默认配置文件 :/usr/local/nginx/conf/nginx.conf
5.修改配置文件 (和韦东山一样,要让它支持rtmp推流)
所以使用命令:
vi /usr/local/nginx/conf/nginx.conf
修改内容如下:
//1修改为auto
worker_processes auto;
//添加如下部分
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
allow publish 127.0.0.1;
allow play all;
live on;
record off;
meta copy;
}
}
}
//在http中添加如下内容
location /test {
flv_live_on;
chunked_transfer_encoding on;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
}
//其实只要flv_live_on就可以了,后面这三句是为了使用flv.js插件而添加的
服务器会监听1935这个端口
当我们的播放器来连接的时候,他回用这些信息publish发布信息
live on是直播,rtmp可能会被防火墙拦截所以还需要配置http
6. 服务器启动nginx服务
开放服务器的TCP端口号1935,在服务器的网页控制台进行操作。
先执行:
sudo mkdir -p /var/log/nginx /var/tmp/nginx
再安装start-stop-daemon:安装路径可以自己选择,这个不重要
cd /home
wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
tar -xzvf apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
# 然后进入解压之后的路径 一直 cd 到start-stop-daemon.c在的目录
cc start-stop-daemon.c -o start-stop-daemon
cp start-stop-daemon /usr/bin/start-stop-daemon
然后执行启动命令:这个必须要在启动目录下执行,如下图:有这个绿色可执行程序的文件夹下(这个命令应该是设置的开机自启动的)
start-stop-daemon -S -x “/usr/local/nginx/sbin/nginx” -p “/var/run/nginx.pid”
如果ngingx绑定失败可以执行
netstat -ntlp
找到nginx的进程号,把他kill 掉重新执行启动命令
7.测试效果
如果一切配置成功,那么在浏览器上直接输入公网服务器的地址会出现如下情况:
但是这个并不能直接网页播放,因为没有对应的HTML网页插件或文件
所以我们可以使用potplayer来进行播放,关于这个软件的使用,在前面的视频监控项目中可以找到;最后效果如下: