RTMP
RTMP 在线播放限制与浏览器转换方案
解释现代浏览器为什么不能直接播放 RTMP,以及 RTMP ingest 后如何转 HLS、FLV 或 WebRTC。
网页能否直连
需转换
链路位置
推流/源站协议
浏览器结论
现代浏览器不能直连播放
一句话结论
RTMP 现在主要是推流或源站接入协议,不是现代浏览器播放器地址。网页播放 RTMP 的正确做法是先由服务端接入,再输出 HLS、FLV 或 WebRTC。
它在视频链路里的位置
RTMP 曾经依赖 Flash 在网页播放。Flash 退出后,浏览器不再提供 RTMP 播放能力。
在直播系统里,它常用于 OBS 推流、平台 ingest 或旧设备回传。
在浏览器项目里怎么用
前端遇到 rtmp:// 应该把它识别为“源地址”,提示用户测试转换后的播放地址。
不要把 RTMP 页面包装成可直接播放页面,否则会误导用户。
服务端需要做什么
服务端需要 RTMP server 或媒体服务器接收推流,然后转封装成 HLS/HTTP-FLV,或接入 WebRTC 网关。
如果源编码不适合浏览器,还要转码成 H.264/AAC 等更稳的组合。
常见开发场景
- OBS 推流、直播平台接入、旧推流设备兼容。
- 适合做输入端,不适合作为网页播放端。
排查顺序
- 先区分推流地址和播放地址。推流地址能连通,不代表浏览器可以播放。
- 转成 HLS 或 FLV 后,再查 CORS、MIME type、HTTPS mixed content 和编码。
推荐转换路径
- 兼容优先:RTMP -> HLS。
- 低延迟预览:RTMP -> HTTP-FLV/WS-FLV。
- 更低延迟:RTMP -> WebRTC。
最小可用实现
- 前端:展示 RTMP 不能直连,并提供转换结果 URL 的测试入口。
- 后端:接收 RTMP 推流,生成 HLS/FLV/WebRTC 播放地址。
开发者判断标准
RTMP 不能只按名字判断是否可播,要看它在链路中承担的是源站输入、网页播放输出、低延迟会话,还是网络辅助能力。当前浏览器结论:现代浏览器不能直连播放。落地前需要确认真实源站、是否需要服务端转换、CORS/HTTPS 策略、编码支持和延迟目标。