You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制NGINX RTMP服务器码率及H.265支持性技术问询

解决NGINX RTMP输出码率固定及H.265编码支持问题

一、将输出码率调整至4Mbps

你的问题核心是NGINX RTMP未配置自定义转码参数,导致输出码率被固定在7Mbps。通过FFmpeg转码可以强制指定输出码率,具体操作步骤如下:

  • 先确认你的NGINX已集成FFmpeg支持(若未集成,需重新编译NGINX时添加FFmpeg依赖,或安装带FFmpeg的NGINX预编译包)
  • 打开NGINX的RTMP配置文件(通常是/etc/nginx/nginx.conf中的rtmp块,或单独的/etc/nginx/conf.d/rtmp.conf)
  • 在推流对应的application块中添加转码规则,示例配置如下:
rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            # 转码为4Mbps的H.264流,推送到新的流地址(如live/stream_4m)
            exec ffmpeg -i rtmp://localhost/live/$name \
                -c:v libx264 -b:v 4M -preset medium -c:a aac -b:a 128k \
                rtmp://localhost/live/$name_4m;
        }
    }
}
  • 参数说明:-b:v 4M用于指定视频码率为4Mbps;-preset medium平衡转码速度与画质,可根据服务器性能调整(fast转码更快,slow画质更优)
  • 保存配置后重启NGINX:sudo systemctl restart nginx
  • 后续用户可拉取rtmp://你的服务器地址/live/你的流名_4m获取4Mbps的输出流

如果之前已有转码配置但码率固定,只需将原配置中的码率参数(如7M)替换为4M即可。

二、NGINX RTMP对H.265编码的支持

NGINX RTMP本身仅作为流媒体传输载体,编码格式的支持完全依赖FFmpeg。只要你的FFmpeg编译时包含libx265编码器,就能实现H.265转码,将码率降至2Mbps,具体配置如下:

  • 先验证FFmpeg是否支持libx265:执行ffmpeg -codecs | grep libx265,若输出包含EV libx265则说明支持
  • 若不支持,需重新编译FFmpeg并添加--enable-libx265参数,或安装带libx265的FFmpeg包
  • 在RTMP配置的application块中添加H.265转码规则:
application live {
    live on;
    # 转码为2Mbps的H.265流
    exec ffmpeg -i rtmp://localhost/live/$name \
        -c:v libx265 -b:v 2M -preset medium -c:a aac -b:a 128k \
        rtmp://localhost/live/$name_2m_h265;
}
  • 注意事项:H.265压缩效率更高,2Mbps的画质基本接近H.264的4Mbps,但需确保客户端支持H.265解码(主流播放器如VLC、Chrome最新版均支持,部分老设备或浏览器可能存在兼容性问题)
  • 重启NGINX后,用户可拉取rtmp://你的服务器地址/live/你的流名_2m_h265获取低码率H.265流

最后提醒:转码会消耗服务器CPU资源,若用户量较大,建议根据服务器性能调整转码预设,或使用硬件加速转码(如NVIDIA NVENC、AMD VCE)降低CPU负载。

内容的提问来源于stack exchange,提问作者Jonathan Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 23:02:41