流媒体服务器如何搭建?直播推流、视频分发与带宽规划指南

搭一套能用的直播服务,比想象中简单——一台服务器加 SRS,十几分钟就能推流播放。但搭一套"能扛住五千人看、不卡、不被盗播"的直播服务,是另一回事:要选协议(延迟和兼容性互相打架)、要转码分级(不同网络给不同码率)、要算带宽(这块最烧钱)、还要做鉴权(推流不能被冒用,播放不能被盗链)。

这篇文章按实际搭建顺序讲:先给整体架构,再对比 RTMP、HLS、HTTP-FLV、DASH、WebRTC 的延迟和适用场景,然后给出 SRS 和 Nginx-rtmp 的最小可用配置、FFmpeg 推流转码命令、码率档位建议、带宽规划公式、录制与存储、CDN 回源、推流鉴权与播放防盗链,最后是压测与监控。所有数字为经验量级,实际以压测为准;价格为定性描述,以服务商官网为准。

一、整体架构

一条直播链路从主播的画面到观众的屏幕,要经过这些环节:

推流端(OBS / 手机 / FFmpeg / 编码器)
        |  RTMP / SRT / WebRTC 推流
        v
   Ingest 接入层(边缘推流节点,鉴权 + 接收)
        |
        v
   源站(转封装 / 转码)
        |   转码:1080p / 720p / 480p 多档 + 水印 + 录制
        |   转封装:RTMP -> HLS / HTTP-FLV / DASH
        v
   录制存储(对象存储 / 本地磁盘)
        |
        v
   分发层(CDN 边缘节点)
        |
        v
   播放端(浏览器 / App / 播放器)

两个关键概念要先分清:

转封装(remux) 只是换容器和协议,不重新编码,CPU 开销极小,延迟增加也很小。比如把 RTMP 流转成 HLS 切片或 HTTP-FLV。

转码(transcode) 要重新编码,CPU 开销大,延迟增加明显(通常数百毫秒到数秒),但能产出多码率档位,让不同网络条件的观众都能流畅播放。

如果只有一路输出且不需要多码率,优先只做转封装,不做转码,CPU 能省一个数量级。

二、协议对比:延迟和兼容性是矛盾的

协议 典型延迟 传输方式 兼容性 适合场景
RTMP 1~3 s TCP 长连接 推流端几乎全支持;浏览器播放需 Flash(已淘汰) 推流(主流),播放端已逐步淘汰
HTTP-FLV 1~3 s HTTP 长连接流式 需播放器支持(flv.js 等),浏览器可用 低延迟直播播放,国内常见
HLS 5~20 s(切片时长决定) HTTP 短切片(ts/m4s + m3u8) 兼容性最好,原生支持广泛 兼容性优先的直播、点播、跨端播放
DASH 5~20 s HTTP 切片(mpd) 标准通用,部分平台支持略弱于 HLS 国际标准场景、多码率自适应
LL-HLS / LL-DASH 1~5 s 分片化切片(Partial Segment) 较新,播放器支持在普及中 需要低延迟又要标准协议
WebRTC 200~500 ms UDP(SRTP)+ 信令 浏览器原生支持 超低延迟互动、连麦、会议、监控
SRT 视配置 UDP + 可靠传输 推流端逐步普及 弱网推流、远距离回传

延迟均为经验量级,实际受切片长度、缓冲策略、网络状况影响很大。

怎么选

  • 推流协议:默认用 RTMP,生态最成熟;弱网或跨境回传可以考虑 SRT;需要连麦互动时上 WebRTC。
  • 播放协议:要兼容优先选 HLS;要低延迟选 HTTP-FLV 或 LL-HLS;要亚秒级互动选 WebRTC。
  • 务实方案:同一路流同时输出 HLS 和 HTTP-FLV,让玩家端按能力和网络选择。这是很多平台的做法。

延迟都花在哪了

要理解延迟,得知道每一环加了多少:

  1. 编码与推流缓冲:编码器本身的缓冲,通常几百毫秒
  2. 服务端处理:转封装几十毫秒,转码数百毫秒到数秒
  3. 分发传输:取决于协议,HLS 至少要等一个切片生成完
  4. 播放器缓冲:播放器为抗抖动设置的缓冲,这是常被忽略的大头(可能几秒)

降低延迟最有效的一招,往往是调播放器的缓冲策略,而不是换协议。但缓冲调太小会导致弱网卡顿,需要在延迟和流畅之间取舍。

三、开源方案选型

方案 语言/形态 特点 适合
SRS C++,专注流媒体 功能完整(RTMP/HTTP-FLV/HLS/WebRTC 全支持)、性能好、文档完善、社区活跃 首选,自建直播源站
Nginx-rtmp Nginx 模块 部署简单、与 Nginx 生态结合好、配置直观 小规模、快速验证、已有 Nginx 的环境
MediaMTX Go,单二进制 极轻量、部署简单、多协议支持、适合边缘和 IoT 快速搭建、摄像头转发、边缘节点
FFmpeg 命令行工具 不是服务器,是转码/推流/拉流的瑞士军刀 转码、推流测试、录制切片、截图
OBS 桌面推流端 主播侧工具,不是服务器 推流端

默认推荐 SRS:功能覆盖最全,能一路从 RTMP 接入做到 HLS、HTTP-FLV、WebRTC 输出,还能做集群和源站回源。Nginx-rtmp 适合小规模快速起步,MediaMTX 适合轻量边缘场景。

四、动手:用 FFmpeg 推流与转码

安装

# Debian/Ubuntu
sudo apt update && sudo apt install -y ffmpeg

# RHEL/CentOS/Rocky(需启用 EPEL / RPM Fusion 等源,按实际环境)
sudo dnf install -y ffmpeg

推流:本地文件循环推流(测试常用)

ffmpeg -re -stream_loop -1 -i input.mp4 \
  -c:v libx264 -preset veryfast -tune zerolatency \
  -b:v 2500k -maxrate 2500k -bufsize 5000k \
  -pix_fmt yuv420p -g 60 -keyint_min 60 -sc_threshold 0 \
  -c:a aac -b:a 128k -ar 44100 \
  -f flv rtmp://服务器IP/live/streamkey

关键参数说明:

  • -re:按实时速度读取,不加会以最快速度推完,测试时务必加
  • -stream_loop -1:循环播放该文件
  • -tune zerolatency:低延迟编码,减少编码缓冲
  • -g 60:GOP 大小设为帧率的两倍左右(30 fps 时 60),GOP 直接影响切片和首帧时间
  • -f flv:RTMP 必须封装为 FLV

推流:采集摄像头或桌面

# Linux 采集摄像头(v4l2)
ffmpeg -f v4l2 -input_format mjpeg -video_size 1280x720 -framerate 30 -i /dev/video0 \
  -f alsa -i default -c:v libx264 -preset veryfast -b:v 2000k \
  -c:a aac -b:a 128k -f flv rtmp://服务器IP/live/streamkey

# 采集屏幕(x11grab,需 X 环境)
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 \
  -f pulse -i default -c:v libx264 -preset veryfast -b:v 3000k \
  -c:a aac -b:a 128k -f flv rtmp://服务器IP/live/streamkey

拉流验证与转码

# 验证流是否正常(播几秒就退出)
ffprobe -v error -show_entries format=duration -of default=nw=1 rtmp://服务器IP/live/streamkey
ffplay -fflags nobuffer -flags low_delay rtmp://服务器IP/live/streamkey

# 转成 HLS 输出(切片 4 秒)
ffmpeg -i rtmp://服务器IP/live/streamkey \
  -c:v libx264 -preset veryfast -b:v 2000k -c:a aac -b:a 128k \
  -f hls -hls_time 4 -hls_list_size 6 -hls_flags delete_segments \
  /var/www/hls/stream.m3u8

硬件转码

CPU 软转码在路数多时会成为瓶颈。有核显或独显的机器可以用硬件编码器:

# 查看可用编码器
ffmpeg -encoders | grep -iE '264|265'

# Intel 核显 QSV 示例(需驱动与编译支持,以实际环境为准)
ffmpeg -i rtmp://服务器IP/live/streamkey \
  -c:v h264_qsv -b:v 2000k -c:a aac -b:a 128k \
  -f flv rtmp://127.0.0.1/live/stream_720p

硬件编码省 CPU,但同码率下画质通常略逊于软编码x264,且并发路数受硬件限制。 选择前先实测画质和并发能力。

五、SRS 最小可用配置

SRS 官方推荐用 Docker 启动,也可以用源码编译。Docker 方式最简单:

docker run -d --name srs --restart=always \
  -p 1935:1935 -p 1985:1985 -p 8080:8080 \
  registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 \
  ./objs/srs -c conf/docker.conf

自定义配置文件示例(同时输出 RTMP、HTTP-FLV、HLS):

listen              1935;
max_connections     1000;
daemon              off;
pid                 /tmp/srs.pid;

http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
}

vhost __defaultVhost__ {
    # HLS 输出
    hls {
        enabled         on;
        hls_path        /data/hls;
        hls_fragment    4;      # 切片时长(秒),越小延迟越低但请求越多
        hls_window      20;     # m3u8 保留窗口
        hls_cleanup     on;
    }

    # HTTP-FLV 输出
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
    }

    # 低延迟模式:合并读、关闭 GOP 缓存等
    min_latency     on;
    mr {
        enabled     off;        # 低延迟场景可开启
    }
    mw_latency      100;

    # 转码:把输入流转成 720p 档(需编译时开启 FFmpeg)
    transcode {
        enabled     on;
        ffmpeg      ./objs/ffmpeg/bin/ffmpeg;
        engine ff {
            enabled     on;
            vcodec      libx264;
            vbitrate    1500;
            vfps        30;
            vwidth      1280;
            vheight     720;
            vthreads    4;
            vprofile    main;
            vpreset     veryfast;
            acodec      aac;
            abitrate    128;
            asample_rate 44100;
            output      rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_720;
        }
    }
}

启动与验证:

# 用自定义配置启动(二进制方式示例)
./objs/srs -c conf/srs.conf

# 验证 HTTP API 与流状态
curl -s http://服务器IP:1985/api/v1/streams | head -c 2000; echo

# 播放验证
ffplay http://服务器IP:8080/live/streamkey.flv    # HTTP-FLV
ffplay http://服务器IP:8080/live/streamkey.m3u8   # HLS

注意:配置文件里的路径和端口要与实际部署一致;生产环境务必开启鉴权(见第十节),否则任何人都能往你的服务器推流。

六、Nginx-rtmp 配置示例

Nginx-rtmp 以模块形式工作,需要用带该模块的 Nginx(自行编译或使用发行版提供的带模块包)。

worker_processes auto;

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;

            # 只允许本机或指定来源推流,其他来源拒绝(最基础的推流保护)
            allow publish 127.0.0.1;
            allow publish 10.0.0.0/8;
            deny publish all;
            allow play all;

            # HLS 输出
            hls on;
            hls_path /var/www/hls;
            hls_fragment 4s;
            hls_playlist_length 20s;

            # 转码推到另一个 application(需 ffmpeg 可用)
            exec_push ffmpeg -i rtmp://127.0.0.1/live/$name
              -c:v libx264 -preset veryfast -b:v 1200k -s 1280x720
              -c:a aac -b:a 128k -f flv rtmp://127.0.0.1/hls720/$name 2>>/var/log/ffmpeg.log;
        }

        application hls720 {
            live on;
            record off;
            allow publish 127.0.0.1;
            deny publish all;
            hls on;
            hls_path /var/www/hls720;
            hls_fragment 4s;
            hls_playlist_length 20s;
        }
    }
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    server {
        listen 8080;

        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /var/www;
            add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
        }
    }
}
sudo nginx -t && sudo systemctl reload nginx

风险提示:exec_push 会为每个流启动一个 ffmpeg 进程,流多了会耗尽 CPU 和内存。生产环境建议限制并发路数并监控进程数,或改用 SRS 的转码能力。修改 Nginx 配置前先备份原文件,保留回滚方式。

七、码率与分辨率档位

经验档位参考

以下为 H.264 的常见档位,实际码率要按内容复杂度调整(画面运动剧烈的需要更高码率):

档位 分辨率 帧率 视频码率 音频码率 适用
1080p 高 1920×1080 30/60 4000~6000 kbps 128 kbps 宽带用户、大屏
1080p 标准 1920×1080 30 3000~4500 kbps 128 kbps 主流档位
720p 1280×720 30 1500~2500 kbps 128 kbps 主流档位、移动端
480p 854×480 30 800~1200 kbps 96 kbps 移动网络
360p 640×360 30 400~700 kbps 64 kbps 弱网
240p 或更低 426×240 15~30 200~400 kbps 64 kbps 极弱网、按流量计费用户

H.265/HEVC 在同等画质下码率约为 H.264 的六到七成,但编码开销更大、部分设备兼容性差;AV1 更省但编码更慢、兼容性更弱。选择要权衡编码成本、播放端兼容和带宽节省。

档位设计建议

  • 至少三档:720p / 480p / 360p,覆盖主流到弱网
  • 不要档位过多:每多一档就多一份转码 CPU 和存储成本
  • 自适应(ABR):播放器按带宽自动切换档位,是体验的关键
  • GOP 一致:各档位的 GOP 和关键帧对齐,切换才流畅

八、带宽规划

公式

所需带宽(Mbps) ≈ 平均码率(Mbps) × 并发观众数 × (1 + 冗余系数)

冗余系数建议 20%~40%,覆盖协议开销、TCP 重传、峰值抖动。

举例:2000 人同时观看 720p(2 Mbps 码率),则 2 × 2000 = 4000 Mbps ≈ 4 Gbps,加 30% 冗余约 5.2 Gbps。

这个数字很直观:直播的带宽成本和并发人数线性相关,是最主要的成本项。

用 CDN 摊薄

自己用源站扛 5 Gbps 是不现实的(带宽贵、单点风险高)。正确做法是:

  1. 源站只承担一路推流 + 一路回源
  2. CDN 边缘节点承担所有观众的分发
  3. 源站出向带宽 ≈ 单路码率 × CDN 回源路数(通常远小于观众数)

这是直播架构里最关键的省钱手段:观众越多,CDN 的价值越大。 源站带宽从"码率 × 观众数"降为"码率 × 边缘节点回源数"。

成本估算思路

按月估算:

  • CDN 流量成本 = 月度总出向流量(GB) × CDN 单价
  • 月度总流量 ≈ 平均码率(Mbps) × 平均观看时长 × 观看人次 / 8 / 1024
  • 源站带宽成本 = 源站保证带宽 × 单价
  • 转码成本 = CPU/转码实例成本

具体单价以服务商官网为准,不同地区和量级差异很大。

九、存储与录制

录制什么

  • 直播录制:整场录制为点播文件,用于回放
  • HLS 切片:直播过程中产生的临时切片,按窗口清理
  • 截图/封面:定时抽帧生成封面图
  • 转码产物:多档位切片

存储规划

# 单场直播录制体积粗算:
# 体积(MB) ≈ 码率(Mbps) × 时长(秒) / 8
# 例:2 Mbps 码率录制 1 小时 = 2 × 3600 / 8 = 900 MB

# 定时清理过期录制(风险提示:rm -rf 务必先确认目录,建议先 ls 查看并做备份)
find /data/record -name '*.flv' -type f -mtime +30 -print
find /data/record -name '*.flv' -type f -mtime +30 -delete

上面的写法先用 -print 确认匹配范围,确认无误后再换成 -delete。删除操作不可逆,务必先验证匹配结果。

录制到对象存储

录制文件建议直接落到对象存储:容量不用规划、成本低、可直接对接点播 CDN。本地磁盘只放临时切片,且要监控磁盘使用率——HLS 切片写满磁盘是常见故障。

# 监控切片目录占用,超过阈值告警
du -sh /data/hls
df -h /data

十、鉴权:推流与播放都要保护

推流鉴权

不加鉴权的服务器等于公开的推流平台,任何人都能往你的频道推内容。 这是最严重的安全问题。

常见做法:

方式 原理 特点
固定串密钥 推流地址含随机长串 key 最简单,key 泄露即失效,可定期更换
时效 Token 推流地址带过期时间和签名 更安全,key 泄露也有时间窗口限制
IP 白名单 只允许指定 IP 推流 适合固定编码器场景,灵活性差
回调鉴权 推流时服务端回调业务接口校验 最灵活,可对接账号体系

时效 Token 的做法:服务端用密钥对"流名 + 过期时间"做哈希签名,推流地址形如 rtmp://host/live/stream?txTime=HEX时间戳&txSecret=MD5(密钥+流名+txTime),媒体服务器用同样算法校验,过期或签名不符即拒绝。

SRS 支持通过 http_hooks 做回调鉴权,配置示意:

vhost __defaultVhost__ {
    http_hooks {
        enabled         on;
        on_publish      http://127.0.0.1:8085/api/v1/auth;
        on_unpublish    http://127.0.0.1:8085/api/v1/unpublish;
        on_play         http://127.0.0.1:8085/api/v1/playauth;
    }
}

回调接口返回非 2xx 即拒绝推流或播放。回调接口本身要做超时和熔断设计,否则鉴权服务挂了会导致所有流中断。

播放防盗链

防止别人把你的播放地址嵌到别的站点:

  • Referer 校验:只允许指定域名,简单但 Referer 可伪造
  • 时效 URL:播放地址带过期签名,过期失效,最常用
  • Token 校验:播放前从业务接口换取一次性或短时效 token
  • IP 限流:限制单 IP 的连接数和带宽,防批量盗刷

CDN 侧通常提供鉴权配置(如时间戳防盗链、回源鉴权),优先用 CDN 提供的能力,比自己在源站实现省事且性能更好。

十一、压测与监控

压测怎么做

直播压测的重点不是"能不能连上",而是"并发到多少会劣化":

# 用 FFmpeg 多路拉流模拟并发观众(每路一个进程)
for i in $(seq 1 50); do
  ffmpeg -i http://服务器IP:8080/live/streamkey.flv \
    -t 60 -f null - > /dev/null 2>&1 &
done
wait

更推荐的做法是用压测工具或自己写的并发拉流程序,能更好地控制并发数和统计结果。压测要关注:

指标 观察点
并发路数上限 从低到高逐步加压,找劣化拐点
CPU 转码路数增加时的占用曲线
带宽 实际出向是否达到预期
延迟 端到端延迟在加压后是否明显上升
首帧时间 新观众加入的开播速度

风险提示:压测会产生大量流量,务必在非生产时段或独立环境进行,并提前确认带宽和费用上限,避免产生意外账单。

监控指标

层级 指标 告警建议
推流 推流路数、推流中断次数、推流码率 推流中断告警
服务端 CPU、内存、连接数、进程数 持续高位告警
输出 各协议输出路数、转码延迟 转码失败告警
带宽 出向带宽、CDN 回源带宽 接近上限告警
存储 磁盘使用率、切片堆积 超过 80% 告警
质量 首帧时间、卡顿率、错误率 卡顿率突增告警
业务 在线观众数、鉴权失败次数 鉴权失败突增可能是攻击

卡顿率和首帧时间是最能反映真实体验的两个指标,比 CPU 和带宽更能说明问题。

常用排查命令

# 看连接数与协议分布
ss -tnp | grep -E '1935|8080' | wc -l

# 看实时流量
nload
iftop -i eth0

# 看 SRS 流状态
curl -s http://服务器IP:1985/api/v1/streams | head -c 2000; echo

# 看切片是否在正常生成与清理
ls -lt /data/hls | head

常见误区

"延迟越低越好。" 不是。延迟低意味着缓冲小,弱网观众会频繁卡顿。要在延迟和流畅之间按业务取舍:秀场直播可以 3 秒,互动连麦要亚秒级,赛事直播可以接受更高延迟换取稳定。

"HLS 一定很慢。" 传统 HLS 确实慢(切片决定),但 LL-HLS 能压到 1~5 秒。另外很多"慢"是播放器缓冲策略造成的,不一定是协议的锅。

"转码越多档位越好。" 不一定。每档都要转码 CPU、存储和网络开销。三到四档通常够用,再多收益递减。

"自建源站能省 CDN 钱。" 通常不能。观众规模一上来,源站带宽成本会迅速超过 CDN 流量成本,且单点风险高。CDN 的价值在于把"码率 × 观众数"变成"码率 × 回源数"。

"推流地址不公开就安全。" 不够。地址会被抓包泄漏。必须用时效 Token 或回调鉴权,并定期更换。

"压测跑一次就够。" 不够。要测峰值、测长稳(转码进程是否会内存泄漏、切片是否会堆积)、测异常(推流中断后重连、鉴权服务超时)。

常见问题

小规模直播(几百人)需要 CDN 吗?

视情况。如果观众都在同一区域、带宽成本可控,自建源站直出可以。但只要观众跨区域或有增长预期,早接 CDN 更省心——CDN 按量计费,起步成本并不高,且能解决跨运营商和跨地区的体验问题。

RTMP 还能用吗?

作为推流协议仍然是主流,生态最成熟。作为播放协议已基本被 HTTP-FLV、HLS、WebRTC 取代(浏览器不再支持 Flash)。所以常见组合是"RTMP 推流 + HLS/HTTP-FLV 播放"。

延迟怎么降到 1 秒以内?

按优先级:换低延迟协议(HTTP-FLV 或 WebRTC)、减小 GOP(如 1~2 秒)、关闭服务端的 GOP 缓存、调小播放器缓冲、缩短 HLS 切片或改用 LL-HLS。注意缓冲调太小会导致弱网卡顿,要实测权衡。

多路转码 CPU 打满怎么办?

按优先级:减少输出档位、改用硬件编码(QSV/NVENC)、降低编码预设速度(veryfast/ultrafast)、降低分辨率或帧率、加机器并做转码集群。也可以考虑用云端的转码服务按需付费。

直播录制文件太大怎么处理?

录制后做二次转码压缩(点播场景可以用更慢的预设换更低码率)、按观看热度分层存储(热门放高性能存储,冷门归档到廉价存储)、设置保留期限并定期清理。粗算体积用"码率 × 时长 / 8"。

面向海外观众的直播怎么部署?

推流端就近推到边缘 ingest 节点,源站集中处理,分发交给覆盖目标地区的 CDN。观众分散在多个大洲时,CDN 的作用尤其关键。同时注意:面向欧洲观众要关注 GDPR 等合规要求,面向中国大陆观众提供服务要遵守中国法律法规,跨境传输个人数据要满足相关规定。

总结

  • 直播链路是推流端 → Ingest 接入 → 源站转封装/转码 → 录制存储 → CDN 分发 → 播放端。先分清转封装(换容器,开销极小)和转码(重新编码,开销大但能出多档位):只需单路输出时优先只做转封装。
  • 协议选择是延迟与兼容性的取舍:RTMP 适合推流(播放端已淘汰)、HTTP-FLV 1~3 秒适合低延迟播放、HLS 5~20 秒兼容性最好、DASH 是国际标准方案、WebRTC 亚秒级适合连麦互动、SRT 适合弱网回传。常见组合是"RTMP 推流 + HLS 与 HTTP-FLV 双输出"。
  • 开源方案首选 SRS(功能全、性能好、支持集群),Nginx-rtmp 适合小规模快速起步,MediaMTX 适合轻量边缘,FFmpeg 负责转码推流拉流。生产环境务必开启鉴权,否则任何人都能往你的频道推流。
  • 码率档位经验值(H.264):1080p 3000~4500 kbps、720p 1500~2500 kbps、480p 800~1200 kbps、360p 400~700 kbps。建议三到四档并做 ABR 自适应,各档 GOP 对齐才能流畅切换。
  • 带宽按 平均码率 × 并发观众数 × (1 + 20%~40% 冗余) 估算。降低带宽成本最有效的手段是用 CDN 把"码率 × 观众数"变成"码率 × 回源路数"——观众越多 CDN 价值越大。
  • 存储上录制文件建议落对象存储,本地只放临时切片并监控磁盘占用;清理脚本务必先用 -print 确认匹配范围再执行 -delete,删除不可逆。
  • 鉴权要做两层:推流鉴权(时效 Token 或回调鉴权,防冒推)和播放防盗链(时效 URL、Referer 校验、IP 限流);回调鉴权服务要有超时和熔断,否则它挂了会拖垮所有流。
  • 压测要测峰值、长稳和异常三类场景(注意在非生产环境进行并设费用上限);监控重点看卡顿率、首帧时间、推流中断次数、鉴权失败次数,这些比 CPU 和带宽更能反映真实体验。