搭一套能用的直播服务,比想象中简单——一台服务器加 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,让玩家端按能力和网络选择。这是很多平台的做法。
延迟都花在哪了
要理解延迟,得知道每一环加了多少:
- 编码与推流缓冲:编码器本身的缓冲,通常几百毫秒
- 服务端处理:转封装几十毫秒,转码数百毫秒到数秒
- 分发传输:取决于协议,HLS 至少要等一个切片生成完
- 播放器缓冲:播放器为抗抖动设置的缓冲,这是常被忽略的大头(可能几秒)
降低延迟最有效的一招,往往是调播放器的缓冲策略,而不是换协议。但缓冲调太小会导致弱网卡顿,需要在延迟和流畅之间取舍。
三、开源方案选型
| 方案 | 语言/形态 | 特点 | 适合 |
|---|---|---|---|
| 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 是不现实的(带宽贵、单点风险高)。正确做法是:
- 源站只承担一路推流 + 一路回源
- CDN 边缘节点承担所有观众的分发
- 源站出向带宽 ≈ 单路码率 × 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 和带宽更能反映真实体验。
企业QQ咨询




