企业级应用需求推动Sonic持续迭代优化方向
2026/1/3 2:36:15
HLS(HTTP Live Streaming)是苹果公司提出的基于 HTTP 的自适应比特率流媒体传输协议(RFC 8216),核心是将音视频流切片为一系列 TS 媒体片段,通过 M3U8 索引文件管理,客户端按需下载播放,广泛用于直播/点播场景。
HLS 的播放依赖两类核心文件,通常部署在 HTTP 服务器上:
| 文件类型 | 后缀 | 作用 | 核心格式 |
|---|---|---|---|
| M3U8 索引文件 | .m3u8 | 播放清单,包含切片地址、时长、码率、加密信息等 | UTF-8 文本,遵循 M3U 扩展格式 |
| TS 媒体片段 | .ts | 音视频数据切片,通常包含完整的视频帧+音频帧 | MPEG-2 Transport Stream,每片可独立解码 |
#EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1280x720 720p.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=854x480 480p.m3u8#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:9.998, segment_0.ts #EXTINF:9.998, segment_1.ts #EXT-X-ENDLIST#EXTM3U:文件头,必须是第一行#EXT-X-STREAM-INF:标识子流(多码率)#EXT-X-TARGETDURATION:切片最大时长#EXT-X-MEDIA-SEQUENCE:切片起始序号#EXTINF:单个切片的时长#EXT-X-ENDLIST:播放列表结束(点播必填,直播无此标签)#EXT-X-KEY标签指定加密密钥,实现 DRM 保护。#EXT-X-ENDLIST,支持拖拽跳转;#EXT-X-ENDLIST,客户端定时拉取最新列表,延迟通常 10–30s(取决于切片时长与缓冲策略)。#EXT-X-KEY标签指定密钥 URL 与 IV;#EXT-X-MEDIA标签关联独立的音频流(如多语言、杜比音效)、字幕流;| 优点 | 缺点 |
|---|---|
| HTTP 传输,防火墙/CDN 友好 | 直播延迟较高(10–30s) |
| 自适应比特率,网络适应性强 | 切片增加存储与请求开销 |
| 跨平台支持广泛 | 相比 RTMP 等协议,协议开销更大 |
| 支持加密、多语言、字幕等扩展 | 切片切换可能出现短暂卡顿 |
ffmpeg(如ffmpeg -i input.mp4 -c copy -hls_time 10 -hls_list_size 0 output.m3u8)types { application/x-mpegURL m3u8; video/MP2T ts; })