m3u8文件格式简介
m3u8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,它并不包含音视频数据。m3u8文件实质是一个播放列表(playlist),打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的地址进行播放。
m3u8文件类型包含媒体播放列表(Media Playlist)和主列表(Master Playlist)。媒体播放列表(Meida Playlist)类型是指其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。既可以用于直播,也可以用于点播。主列表类型是指其内部信息用来描述多个媒体流的元数据信息,包括不同分辨率、码率和编码格式等。客户端可以根据这些信息选择合适的媒体流进行播放,也就是多码率的适配,客户端可以根据网络状况自动选择不同码率的视频流,条件允许的情况下使用高码率,网络繁忙的时候使用低码率,并且自动在二者间随意切换。既可以用于直播,也可以用于点播。
常见标签解析
EXTM3U
表示该文件是一个m3u8文件,它必须在媒体播放列表和每个主播放列表的第一行。
格式:#EXTM3U
EXT-X-VERSION
表示播放列表文件、其相关媒体及其服务器的兼容版本。该标签作用于整个m3u8文件。每个m3u8文件内最多只能出现一个该标签定义。如果m3u8文件不包含该标签,则默认为协议的第1个版本。
格式:#EXT-X-VERSION:<n>
例如:#EXT-X-VERSION:3
EXT-X-TARGETDURATION
表示每个媒体段最大的时长(秒),该标签为必选标签。
格式:#EXT-X-TARGETDURATION:<s> 其中,s是一个十进制整数,表示媒体段的最大时长(秒)
例如:#EXT-X-TARGETDURATION:8
EXT-X-MEDIA-SEQUENCE
表示播放列表第一个媒体段的URI的序列号,每个媒体片段的URI都拥有一个唯一的整型序列号。每个媒体片段序列号按出现顺序依次加1。如果没有该标签,则默认序列号从0开始。媒体段序列号与片段文件名无关。该标签为可选标签。
格式:#EXT-X-MEDIA-SEQUENCE:<number> 其中,number是一个十进制数,表示第一个媒体段段起始序号
例如:#EXT-X-MEDIA-SEQUENCE:0
EXTINF
EXTINF标记指定当前媒体段的持续时间,只作用于一个媒体段。
格式:#EXTINF:<duration>,[<title>]
其中,duration是十进制浮点或十进制整数,用于指定媒体段的持续时间(以秒为单位)。持续时间应为十进制浮点,具有足够的精度,以避免计算总时长把每个片段时间加合时出现明显的时间错误。但是,如果兼容版本号小于3,则持续时间必须是整数,是真实时间四舍五入到最接近的整数。逗号后面的行的其余部分是媒体段的可选可读信息标题。
例如:#EXTINF:7.340667,000.ts
表示000.ts的时长是7.340667秒
EXT-X-ENDLIST
表示媒体播放列表到此结束。
格式:#EXT-X-ENDLIST
EXT-X-STREAM-INF
EXT-X-STREAM-INF标签出现在M3U8时,主要是出现在多级M3U8文件中时,例如M3U8中包含子M3U8列表,或者主M3U8中包含多码率M3U8时;该标签后需要跟一些属性,下面就来逐一说明一下这些属性:
BANDWIDTH
BANDWIDTH的值为最高码率值,当播放EXT-X-STREAM-INF下对应的M3U8时占用的最大码率(必要参数)。
AVERAGE-BANDWIDTH
AVERAGE-BANDWIDTH的值为平均码率值,当播放EXT-X-STREAM-INF下对应的M3U8时占用的平均码率。(可选参数)。
CODECS
CODECS的值用于声明EXT-X-STREAM-INF下面对应M3U8里面的音视频编码、视频编码的信息(可选参数)。
RESOLUTION
M3U8中视频的宽高信息描述(可选参数)。
FRAME-RATE
子M3U8中的视频帧率(可选参数)。
待续。。。。。
本文详细介绍了M3U8文件格式,包括其作为播放列表的工作原理,以及EXT-X标签在定义媒体播放列表、媒体段时长、多码率适配等方面的应用。

2894

被折叠的 条评论
为什么被折叠?



