Skip to content

从源码编译安装 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文件的头部不包含文件的总时长和大小信息。这通常用于实时流传输,因为在开始传输时,这些信息可能还不可用或会随着时间的推移而变化

RTMP 的一些配置

官方文档