📺 H5直播原理是什么?

📅 发布于 2026年2月 | 👤 作者:博主 | 🏷️ 标签:H5直播, HLS, HTTP-FLV, WebRTC, MSE, CDN, 流媒体, Web开发, 前端, 面试

欢迎来到我的博客文章!所有文章都是满满的前端干货,文章简明扼要。

一、核心链路架构(端到端)

H5 直播的数据流向可以概括为四个阶段:

采集推流 → 服务端处理 → CDN 分发 → 拉流播放

1. 采集与推流(Push)

💡 浏览器端推流较难,通常需借助 getUserMedia + WebRTCMediaRecorder API

2. 服务端处理(Process)

流媒体服务器(如 SRS, Nginx-rtmp):

3. CDN 分发(Distribute)

4. 拉流与播放(Play)

二、三大主流播放协议原理

这是 H5 直播最核心的技术差异点,决定了延迟和兼容性

1. HLS 原理(最通用)

机制:

服务器每隔 2~5 秒生成一个 .ts 视频片段,并更新 .m3u8 播放列表。

浏览器行为:

播放器请求 m3u8 → 解析最新片段 URL → 下载 ts 文件 → 解码播放。

缺点:

必须等一个切片下载完才能播,导致延迟累积(通常 10 秒以上)。

优化:

低延迟 HLS (LL-HLS) 可将延迟降至 3 秒左右。

2. HTTP-FLV 原理(国内最常用)

机制:

服务器不切片,而是通过 HTTP 长连接,源源不断地发送 FLV 数据包。

浏览器行为:

优点:

延迟比 HLS 低,实现简单。

缺点:

iOS Safari 不支持 MSE,无法播放(需转 HLS)。

3. WebRTC 原理(超低延迟)

机制:

基于 RTP/RTCP 协议,数据分片(Packet)传输,无需等待文件生成。

架构:

优点:

毫秒级延迟,支持双向互动。

缺点:

带宽成本高,服务器压力大,穿透复杂。

三、浏览器播放核心技术(MSE & WebCodecs)

为什么浏览器能播直播?关键在于以下两个 API:

1. MSE (Media Source Extensions)

作用:

允许 JavaScript 动态构建媒体流,并传递给 <video> 标签。

流程:

  1. JS 通过 fetch/xhr 获取视频二进制数据(FLV/fMP4)
  2. 创建 MediaSource 对象并绑定到 video 标签
  3. 创建 SourceBuffer,将数据 appendBuffer 进去
  4. 浏览器自动解码播放

意义:

让浏览器无需插件即可播放 HLS/FLV/DASH。

2. WebCodecs (新一代)

作用:

提供更底层的音视频编解码控制,性能比 MSE 更好。

现状:

正在逐步普及,配合 WebTransport 可实现更高效的低延迟直播。

总结:如何选择技术方案?

需求场景 推荐方案 理由
大型赛事/春晚 HLS 兼容性最好,CDN 成本最低,延迟不敏感
电商带货/秀场 HTTP-FLV (Android/PC) + HLS (iOS) 平衡延迟与成本,国内主流方案
在线课堂/连麦 WebRTC 必须毫秒级延迟,否则无法对话
监控/安防 WebRTC / WebSocket 要求实时性极高,且需双向控制

💡 核心结论

H5 直播的本质 = 流媒体协议转换 + CDN 分发 + 浏览器 MSE 解码

← 返回首页