轻量 · 低延迟 · 移动优先
基于 JavaScript 构建的直播流播放、推流及信令控制方案。结合 WebRTC、HTTP-FLV、HLS 等协议,在浏览器端实现超低延迟(<500ms)的直播体验。适用于互动直播、在线教育、远程协助等场景。
移动端优先推荐 HLS(hls.js)或 HTTP-FLV(flv.js)。iOS 对 HLS 原生支持,Android 通过 MediaSource 均可流畅播放。如果需要实时互动(连麦、弹幕),则采用 WebRTC 方案,并配置 TURN 服务器应对 NAT 穿透。
延迟优化:① 使用 WebRTC 代替 HLS;② 开启 GOP 缓存压缩;③ 前端采用「快速追帧」策略;④ 后端转码降低关键帧间隔(1~2s)。实测 WebRTC 可控制在 200ms 内。
通过能力检测动态加载:支持 WebRTC 则优先使用;不支持则降级到 flv.js 或 hls.js。同时监听 error 事件,触发自动切换备用线路(如从 flv 切换到 hls)。
推荐使用 Token 鉴权 + 时间戳签名,推流/播放地址动态生成。WebRTC 可通过 DTLS 加密,HLS 使用 AES-128 加密传输。前端配合 HTTP-Referrer 限制。
💡 建议采用「多线路冗余」架构:主线路 WebRTC (低延迟),备用线路 HTTP-FLV (稳),兜底 HLS (兼容)。通过前端 JS 实时监测健康度,自动切换。
// 使用 flv.js 播放 HTTP-FLV 线路
import flvjs from 'flv.js';
const video = document.getElementById('video');
const player = flvjs.createPlayer({
type: 'flv',
url: 'https://live.example.com/stream.flv'
});
player.attachMediaElement(video);
player.load();
player.play();
📌 更多线路示例:WebRTC (简单通话) 、HLS (hls.js) 可查阅官方文档。