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

如何限制RTMP及HLS单路直播流的输出带宽

单路RTMP/HLS直播流带宽限制可行方案

方案1:流媒体服务层配置(首选,操作最简单精度最高)

绝大多数RTMP/HLS直播服务基于Nginx + nginx-rtmp-module搭建,可直接通过模块自带指令实现单流限速,无需修改系统层面规则:

  • RTMP流单路限速:在nginx.conf的rtmp配置块中新增限速指令,以下为1.5Mbps配置示例:
rtmp {
    server {
        listen 1935;
        application live {
            live on;
            hls on;
            hls_path /usr/local/nginx/html/hls;
            # 开启单连接带宽限制
            bw_limit on;
            # 单路RTMP流限制为1.5Mbps(1500k比特每秒),要1Mbps则改为1000k
            bw_limit 1500k;
        }
    }
}
  • HLS流单路限速:HLS基于HTTP协议分发,可在Nginx的HTTP配置块对应HLS分发路径中添加limit_rate指令,注意该指令单位为字节/秒,1.5Mbps对应192KB/s,1Mbps对应128KB/s:
http {
    server {
        listen 80;
        location /hls {
            root /usr/local/nginx/html;
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            # 单路HLS流限制为1.5Mbps
            limit_rate 192k;
        }
    }
}

配置修改后执行nginx -s reload生效即可。

方案2:系统层tc命令针对特定流量限速

如果你的流媒体服务不支持配置限速,可使用Linux系统自带的tc(Traffic Control)工具,针对RTMP(默认1935端口)、HLS服务端口做单连接限速,不会影响服务器其他业务带宽:

  1. 首先配置队列规则:
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:1 htb rate 1000Mbps
  1. 针对RTMP 1935端口配置单连接1.5Mbps限速:
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1.5mbit ceil 1.5mbit
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 1935 0xffff flowid 1:10
  1. 如果HLS用独立端口(比如8080),可参考上述规则新增对应端口的过滤规则即可。
    如果需要删除规则执行tc qdisc del dev eth0 root即可。

方案3:进程级限速

如果需要限制整个流媒体服务进程的总出口带宽,可使用trickle工具针对进程限速,不会影响服务器其他进程的带宽使用:

  1. 安装trickle:apt install trickle(Debian/Ubuntu系)或yum install trickle(CentOS/RHEL系)
  2. 启动流媒体服务时添加限速参数,比如限制Nginx总上传带宽为10Mbps:
trickle -u 10000 nginx

注意trickle仅支持动态链接的程序,静态编译的Nginx无法使用该方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:45:08