linux下搭建RTMP视频点播、直播、HLS服务器

​一、环境准备​

​1. 服务器要求​
  • ​操作系统​​:Ubuntu/CentOS/Debian(推荐 Ubuntu 22.04 LTS)
  • ​硬件配置​​:4GB 内存 + 2 核 CPU(HLS 转码需更高配置)
  • ​依赖库​​:gccmakepcrezlibopenssl
​2. 安装 Nginx + RTMP 模块​
# 下载 Nginx 和 RTMP 模块源码
wget http://nginx.org/download/nginx-1.25.3.tar.gz
git clone https://github.com/arut/nginx-rtmp-module

# 编译安装
tar -zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3
./configure --add-module=./nginx-rtmp-module --with-http_ssl_module
make && sudo make install
​3. 安装 FFmpeg​
sudo apt-get install ffmpeg  # Ubuntu/Debian
# 或手动编译安装最新版(支持 H.265 硬编解码)

​二、Nginx 配置​

​1. 基础 RTMP 配置​

编辑 /usr/local/nginx/conf/nginx.conf,添加以下内容:

rtmp {
    server {
        listen 1935;          # RTMP 默认端口
        chunk_size 4096;      # 数据块大小

        # 直播应用
        application live {
            live on;          # 开启直播
            record off;       # 关闭录制
            # HLS 支持
            hls on;
            hls_path /tmp/hls;  # HLS 文件存储路径
            hls_fragment 5s;    # 每个 TS 文件时长
            hls_playlist_length 60s;  # 播放列表长度
        }

        # 点播应用
        application vod {
            play /opt/video/vod;  # 点播文件目录
        }
    }
}

http {
    server {
        listen 80;
        server_name localhost;

        # HLS 访问配置
        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;  # 跨域支持
        }

        # RTMP 状态监控
        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            root /usr/local/nginx/nginx-rtmp-module;
        }
    }
}
​2. 启用 HTTP-FLV 支持(可选)​

安装 nginx-http-flv-module

git clone https://github.com/winshining/nginx-http-flv-module
./configure --add-module=./nginx-http-flv-module --add-module=./nginx-rtmp-module
make && sudo make install

配置 /etc/nginx/conf.d/flv.conf

location /live {
    flv;
    root /tmp/hls;
    add_header Access-Control-Allow-Origin *;
}

​三、功能实现​

​1. RTMP 直播推流与播放​
  • ​推流地址​​:rtmp://服务器IP/live/stream_key
  • ​播放地址​​:
    • RTMP:rtmp://服务器IP/live/stream_key
    • HLS:http://服务器IP/hls/stream_key.m3u8
​2. 视频点播​
  • 将视频文件(windows用 scp -r "本地文件路径" 用户名@服务器IP:/目标路径 如test.mp4)放入 /opt/video/vod 目录。
  • ​播放地址​​:rtmp://服务器IP/vod/test.mp4
​3. HLS 实时切片​
  • FFmpeg 自动将 RTMP 流切片为 HLS 格式:
    ffmpeg -re -i input.mp4 -c:v copy -c:a copy -f flv rtmp://服务器IP/live/stream

​四、优化与安全​

​1. 性能优化​
  • ​启用硬件加速​​(NVIDIA GPU):
    rtmp {
        application live {
            # 启用 GPU 编码
            exec ffmpeg -hwaccel cuvid -i rtmp://localhost/live/$name \
                        -c:v h264_nvenc -preset fast -b:v 2500k \
                        -c:a aac -b:a 128k -f flv rtmp://localhost/hls/$name_720p;
        }
    }
  • ​调整缓冲区​​:
    rtmp {
        chunk_size 8192;  # 增大块大小以减少延迟
    }
​2. 安全加固​
  • ​访问控制​​:
    location /hls {
        allow 192.168.1.0/24;  # 允许内网访问
        deny all;              # 拒绝其他 IP
    }
  • ​HTTPS 配置​​:
    server {
        listen 443 ssl;
        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;
    }

​五、测试与验证​

​1. 推流测试​

使用 OBS 推流:

  • ​推流地址​​:rtmp://服务器IP/live/stream
  • ​流密钥​​:test
​2. 播放测试​
  • ​HLS 播放​​:浏览器访问 http://服务器IP/hls/stream.m3u8
  • ​RTMP 播放​​:VLC 播放器输入 rtmp://服务器IP/live/stream
​3. 日志监控​
  • ​RTMP 状态页​​:http://服务器IP/stat
  • ​错误日志​​:/usr/local/nginx/logs/error.log

​六、常见问题解决​

​问题​​解决方案​
​推流失败(Error 403)​检查 hls_path 目录权限:chmod 777 /tmp/hls
​HLS 无法播放​确认 FFmpeg 是否生成 .m3u8 和 .ts 文件,检查防火墙是否开放 80/1935 端口
​延迟过高​减小 hls_fragment(如 3s),启用低延迟模式:-preset ultrafast
​Nginx 启动报错​检查配置语法:nginx -t,重新编译时确保依赖库版本兼容

​七、扩展应用​

  • ​多平台级联​​:通过 push 指令将流推送到其他服务器(如 YouTube/抖音):
    application live {
        live on;
        push rtmp://youtube/stream_key;
    }
  • ​动态码率自适应​​:结合 FFmpeg 生成多分辨率 HLS 流:
    ffmpeg -i input.mp4 -vf scale=1280:720 -c:v libx264 -b:v 2500k \
           -vf scale=854:480 -c:v libx264 -b:v 1000k \
           -f flv rtmp://服务器IP/live/stream_720p

通过以上配置,可搭建一个高性能的流媒体服务器,支持低延迟直播、点播回放及多终端自适应播放。如需进一步优化,可参考 Nginx 官方文档及 FFmpeg 高级参数调优。

出现问题:记得私信与我交流

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值