M3U8文件详细说明

M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。

m3u8标签与属性说明
#EXTM3U
每个M3U文件第一行必须是这个tag,请标示作用

#EXT-X-VERSION:3 
该属性可以没有

#EXT-X-MEDIA-SEQUENCE:140651513 
每一个media URI在PlayList中只有唯一的序号,相邻之间序号+1, 
一个media URI并不是必须要包含的,如果没有,默认为0

 #EXT-X-TARGETDURATION
指定最大的媒体段时间长(秒)。所以#EXTINF中指定的时间长度必须小于或是等于这
个最大值。这个tag在整个PlayList文件中只能出现一 次(在嵌套的情况下,一般有
真正ts url的m3u8才会出现该tag#EXT-X-PLAYLIST-TYPE
提供关于PlayList的可变性的信息,这个对整个PlayList文件有效,是可选的,格式
如下:#EXT-X-PLAYLIST-TYPE::如果是VOD,则服务器不能改变PlayList 文件;
如果是EVENT,则服务器不能改变或是删除PlayList文件中的任何部分,但是可以向该
文件中增加新的一行内容。

#EXTINF
duration指定每个媒体段(ts)的持续时间(秒),仅对其后面的URI有效,title是
下载资源的url

#EXT-X-KEY
表示怎么对media segments进行解码。其作用范围是下次该tag出现前的所有media 
URI,属性为NONE 或者 AES-128NONE表示 URI以及IV(Initialization 
Vector)属性必须不存在, AES-128(Advanced EncryptionStandard)表示URI
必须存在,IV可以不存在。

#EXT-X-PROGRAM-DATE-TIME
将一个绝对时间或是日期和一个媒体段中的第一个sample相关联,只对下一个meida 
URI有效,格式如#EXT-X-PROGRAM-DATE-TIME:
For example: #EXT-X-PROGRAM-DATETIME:2010-02-19T14:54:23.031+08:00

#EXT-X-ALLOW-CACHE
是否允许做cache,这个可以在PlayList文件中任意地方出现,并且最多出现一次,作
用效果是所有的媒体段。格式如下:#EXT-X-ALLOW-CACHE:

#EXT-X-ENDLIST
表示PlayList的末尾了,它可以在PlayList中任意位置出现,但是只能出现一个,格
式如下:#EXT-X-ENDLIST
### M3U8 文件格式示例及 HLS 协议 TS 流详解 M3U8 文件是 HLS 协议中的核心文件之一,用于定义媒体流的分段信息和播放规则。以下是对 M3U8 文件格式及其相关内容的详细说明。 #### M3U8 文件的基本结构 M3U8 文件是一种基于 M3U 的播放列表文件,使用 UTF-8 编码[^1]。它包含多个字段,用于描述媒体流的元信息和分段文件的位置。以下是 M3U8 文件的一个典型示例: ```m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10.0, segment_0.ts #EXTINF:10.0, segment_1.ts #EXTINF:10.0, segment_2.ts #EXT-X-ENDLIST ``` #### M3U8 文件的关键字段解释 1. **`#EXTM3U`**:这是 M3U8 文件的标志行,表示这是一个扩展的 M3U 播放列表文件。 2. **`#EXT-X-VERSION`**:指定 HLS 协议的版本号。在上述示例中,版本为 3[^1]。 3. **`#EXT-X-TARGETDURATION`**:定义每个分段的最大持续时间(以秒为单位)。在示例中,每个分段的持续时间不超过 10 秒。 4. **`#EXT-X-MEDIA-SEQUENCE`**:指定播放列表中第一个分段的序列号。在示例中,序列号从 0 开始。 5. **`#EXTINF`**:描述每个分段的持续时间(以秒为单位),并提供可选的标题。例如,`#EXTINF:10.0,` 表示该分段的持续时间为 10 秒。 6. **分段文件名**:如 `segment_0.ts`,表示实际的媒体分段文件名。 7. **`#EXT-X-ENDLIST`**:标记播放列表的结束。如果省略此字段,则表示这是一个动态播放列表,可能需要定期更新[^3]。 #### HLS 协议与 TS 流的关系 HLS 协议通过将视频分割为多个小的 TS 文件进行传输。TS 文件(Transport Stream)是一种容器格式,通常包含音视频数据、时间戳以及同步信息。TS 文件分为三层:TS 层、PES 层和 ES 层。其中,ES 层存储原始的音视频数据,PES 层添加时间戳等元信息,而 TS 层则进一步封装数据以便于传输和解复用[^4]。 #### 示例 TS 文件 以下是 TS 文件的一个简化结构示例: - **包头**:包含同步字节、传输错误指示符、优先级指示符等。 - **有效载荷**:包含音视频数据或元数据。 虽然 TS 文件本身不直接可见,但其内容可以通过专业工具解析查看。 #### 注意事项 - 如果需要支持更低延迟的场景,可以考虑使用 fMP4 格式的 HLS 流,而非传统的 TS 格式[^2]。 - 动态播放列表需要定期更新,以确保客户端能够获取最新的分段信息。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值