[!tip] 参考文档直播流转码 采用
ubuntu20.04
进行安装,centos
自行替换 文章的nginx
版本为1.8.1
,新版本的插件不支持,所以用的1.20.2
所需环境软件包
[!tip]
nginx-flv-module
基于nginx-rtmp-module
进行开发,所以安装flv
模块后可以直接用
- nginx
- nginx-http-flv-module
- 推流工具
obs
或者ffmpeg
- 播放工具
vlc
或者flv
在线播放工具
配置编译前置环境pcre
库,可能还需要zip
g++
等库来解压或者编译
非
ubuntu
可跳过sudo apt-get install libpcre3 libpcre3-dev
你可能还需要安装,安装时没出现
sudo apt-get install openssl libssl-dev
centos
非
centos
可跳过yum -y install unzip yum -y install gcc-c++ yum -y install pcre pcre-devel yum -y install zlib zlib-devel yum -y install openssl openssl-devel
下载对应的数据包nginx-flv-module
以及nginx
[!tip] 下载
nginx-flv-module
模块,如果下载不动可以选择下载zip
然后在解压 可选克隆方案,或者下载zip方案克隆方案
git clone https://github.com/winshining/nginx-http-flv-module.git
zip方案
wget https://github.com/winshining/nginx-http-flv-module/archive/refs/heads/master.zip unzip nginx-http-flv-module-master.zip
下载编译nginx
下载并解压
nginx
,选择版本为1.20.2
wget http://nginx.org/download/nginx-1.20.2.tar.gz tar -zxvf ./nginx-1.20.2.tar.gz cd ./nginx-1.20.2
为
nginx
添加flv
模块,--add-module
可以多次输入,等号后接模块路径 为防止权限问题,make install 用sudo
进行获取权限./configure --prefix=/usr/local/nginx --add-module=../nginx-http-flv-module make sudo make install
启用ssl
[!tip] 为了防止
nginx
被攻击,可以启用ssl
加密
nginx 启用ssl
sudo vim /usr/local/nginx/conf/nginx.conf
配置参考
#定义Nginx运行的用户和用户组
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx/conf/ssl/ssl.pem;
ssl_certificate_key /usr/local/nginx/conf/ssl/ssl.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
编译nginx时添加ssl支持
./configure --prefix=/usr/local/nginx --add-module=../nginx-http-flv-module --with-http_ssl_module
nginx
nginx
的二进制文件在 对应目录下sbin
文件夹内
配置
nginx
,编辑nginx
配置文件sudo vim /usr/local/nginx/conf/nginx.conf
配置参考
#定义Nginx运行的用户和用户组 user nginx nginx; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /home/nginx/log/error.log info; events { worker_connections 1024; } rtmp { server { listen 1988; chunk_size 4000; notify_method get; #直播 application live { live on; publish_notify on; # 这个地址可以用来作权限验证,可以不填写,内部内容自行查找 # on_publish http://127.0.0.1:80/on_publish.php; } #点播 application vod { play /tmp/video; } } } http { # http监听地址,可以忽略 server { listen 80; server_name localhost; } # flv转发地址 server { # 端口 listen 19123; server_name localhost; location / { add_header 'Access-Control-Allow-Origin' '*'; root html; index index.html index.htm; } # 原始流地址 location /live { flv_live on; } # 转换为flv后的流地址 请求时 ip:port/flv location /flv { add_header 'Access-Control-Allow-Origin' '*'; flv_live on; chunked_transfer_encoding on; } } }
查看配置是否正确
nginx -t
[!tip] 进入到nginx
目录下的sbin
文件夹执行目录 问题自行解决,无效配置会提示sudo ./nginx -t
启动
nginx
sudo ./nginx
Tips:停止nginx服务
./nginx -s stop
./nginx -s stop
重新加载配置
./nginx -s reload
./nginx -s reload
通过以上配置,即可完成服务端的直播环境配置。
查看是否启动成功
[!tip] 如果没有返回,代表没启动成功,检查配置. 浏览器访问
ip
,有显示nginx
即可sudo lsof -i:19123 sudo lsof -i:1988 sudo lsof -i:80
测试推流
使用
obs
进行推流