从源码编译安装 Nginx 和 RTMP 模块
Nginx 源码下载地址
RTMP 模块源码下载地址
RTMP(Real Time Protocol)即实时小时协议,基于 TCP 协议
下载 Nginx 源码和 rtmp 模块
shell
curl -o nginx-source.tar.gz https://nginx.org/download/nginx-1.26.1.tar.gz
curl -o nginx-rtmp-module.tar.gz https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.2.tar.gz
tar -zxf nginx-source.tar.gz
tar -zxf nginx-rtmp-module.tar.gz
rm -f *.tar.gz
DANGER
CURL 问题请查看 文件上传和下载#curl
安装依赖
shell
yum install -y gcc g++ pcre2-devel zib-devel openssl-devel
编译 Nginx
shell
./configure --add-module=../nginx-rtmp-module-1.2.2/ --with-http_ssl_module --prefix=/usr/local/nginx \
&& make \
&& make install
--with-http_ssl_module
: 开启 SSL 模块(默认会去系统中查找 openssl,也就是前面安装的 openssl-devel)
了解 make
修改配置文件
shell
cd /usr/local/nginx
cp conf/nginx.conf conf/nginx.conf.backup
vi conf/nginx.conf
修改之后的内容配置
nginx
worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935; # rtmp 流服务器监听的端口号
chunk_size 4096; # 流复用块的大小,值越大 CPU 消耗越低
so_keepalive=2s:1:2;
application live { # live是推拉流的路径名字
live on;
}
}
}
启动 nginx
shell
/usr/local/nginx/sbin/nginx
使用 OBS 和 VLC 验证
OBS 下载地址
VLC 下载地址
配置 OBS 的直播服务器配置为:rtmp://ip:1935/live
,推流码自定义(如:test)
打开 VLC,选择媒体 - 打开网络串流,填写 rtmp://ip:1935/live/test
这里的 test 就是上面自定义的推流码
使用 ffmpeg 推流
shell
ffmpeg -re -stream_loop -1 -i video.mp4 -f flv -c copy -flvflags no_duration_filesize rtmp://localhost:1935/live/video
-re
: 这个参数表示以本地文件的原始帧率(frame rate)来读取输入文件-stream_loop -1
: 这个参数指定了输入流的循环次数。-1 表示无限循环-i video.mp4
: 指定输入的文件路径-f flv
: 这个参数指定了输出格式,flv 是一种常用于网络视频直播的封装格式-c opey
: 这个参数指示ffmpeg在转换过程中不对视频和音频流进行重编码-flvflags no_duration_filesize
: 这是一个针对FLV格式的特定选项,它告诉ffmpeg在FLV文件的头部不包含文件的总时长和大小信息。这通常用于实时流传输,因为在开始传输时,这些信息可能还不可用或会随着时间的推移而变化