M3U8 视频列表格式
本文最后更新于:1 年前
Reference
- 《FFmpeg 从入门到精通》
常用标签
标签|必要性|说明
–|–
EXTM3U|是|必须在文件的第一行,所有的 M3U8 文件中必须包含这个标签
EXT-X-VERSION||M3U8 版本
EXT-X-TARGETDURATION||每一个分片都会有一个分片自己的 duration,这个标签是最大的那个分片的浮点数四舍五入后的整数值
EXT-X-MEDIA-SEQUENCE||1、直播时的直播切片序列,当播放打开 M3U8 时,以这个标签的值为参考,播放对应的序列号的切片;
2、分片必须是动态改变的,序列不能相同,并且序列必须是增序的;
3、当M3U8列表中没有出现 EXT-X-ENDLIST 标签时,无论这个 M3U8 列表中有多少片分片,播放分片都是从倒数第三片开始播放,如果不满三片则不应该播放。当然,如果有些播放器特别定制了的话,则可以不遵照这个原则;
4、如果播放列表在刷新之后与之前的列表相同,那么在播放当前分片 duration 一半的时间内会再刷新一次
EXT-X-DISCONTINUITY||解决因播放的前一片分片与后一片分片不连续而导致的报错
EXTINF||1、包含每一个分片的 duration 和可选的描述信息,主要为标注切片信息,使用逗号分隔开;
2、EXTINF 下面的信息为具体的分片信息,分片存储路径可以为相对路径,也可以为绝对路径,也可以为互联网的 URL 链接地址
EXT-X-ENDLIST||表明该 M3U8 文件不会再产生更多的切片,可以理解为该 M3U8 已停止更新,并且播放分片到这个标签后结束
EXT-X-STREAM-INF||主要是出现在多级 M3U8 文件中,例如 M3U8 中包含子 M3U8 列表,或者主 M3U8 中包含多码率 M3U8 时;该标签后需要跟一些属性
示例:
1 |
|
EXT-X-STREAM-INF
属性名|必要性|说明
–|–
BANDWIDTH|是|播放时占用的最大码率
AVERAGE-BANDWIDTH|否|播放时占用的平均码率
CODECS|应该|声明音频编码、视频编码的信息
RESOLUTION|否|视频的宽高信息
FRAME-RATE|否|视频帧率
示例:使用4个 EXT-X-STREAM-INF 标签来标注子 M3U8 的属性——最高码率为 1.28M、平均码率为 1M 的 M3U8;最高码率为 2.56M、平均码率为 2M 的 M3U8;最高码率为 7.68M、平均码率为 6M 的 M3U8;以及只有 65K 的音频编码的 M3U8。
1 |
|
各版本区别
版本号|增加|删除
–|–
2|EXT-X-KEY|
3|浮点 EXTINF 的 duration|
4|EXT-X-BYTERAGE
EXT-X-I-FRAMES-ONLY|
5|EXT-X-KEY 的格式说明 KEYFORMAT
KEYFORMATVE-RSION
EXT-X-MAP|
6|EXT-X-MAP 里面不包含 EXT-X-I-FRAMES-ONLY|EXT-X-STREAM-INF
EXT-X-I-FRAME-STREAM-INF
7||EXT-X-ALLOW-CACHE