卢森堡VS意大利直播_卢森堡VS意大利免费高清在线直播_卢森堡VS意大利免费直播视频直播
“咕噜噜!”睡得迷迷糊糊的叶银川,正以为打雷了,要出去收衣服的时候。转头就看到了——一只长着两只大耳朵,皮肤蓝白相间,又像兔子又像猫的生物,站在自己的床边,正用弱小可怜又无
2026-06-12

英国·阿什顿庭院庄园图卢兹今晚比赛预测
(本文基本逻辑:M3U8 封装格式概览 → M3U8 格式解析 → M3U8 封装示例)
M3U 文件是一种纯文本文件,可以指定一个或多个多媒体文件的位置。它的设计初衷是为了播放音频文件,但后来越来越多的用于播放视频文件列表。而 M3U8 则是用 UTF-8 编码的 M3U。M3U、M3U8 文件都是苹果公司使用的 HLS(HTTP Live Streaming) 协议的基础。
在实际应用场景中,由于 HLS/M3U8/TS 这套方案在控制直播延时上不太理想,所以一般实时直播场景不会选择使用 M3U8 媒体格式。但是,对于直播回放这种场景,由于使用 M3U8/TS 这套方案能够在直播过程中就持续生成和存储切片,所以直播回放基本上都会选择 M3U8 媒体格式。
M3U8 文件其实是一个播放列表,这个列表可能是一个媒体播放列表(Media Playlist),也可能是一个主播放列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。1.1、媒体播放列表
当 M3U8 文件作为媒体播放列表(Meida Playlist)时,其包含的信息记录的是一系列多媒体资源切片,顺序播放这些切片,即可完整呈现多媒体资源。
第一行的 表示文件格式。第二行的 表示后面的各个资源切片时长都小于或等于 10 秒。接下来,我们看到有 3 个资源切片,时长分别是 9.009 秒、9.009 秒、3.003 秒。
在点播时,客户端首先下载 M3U8 文件,然后按照 M3U8 列表下载各个资源切片依次播放即可。在直播时,客户端则需要定时重新请求 M3U8 文件,从而检查是否有新的媒体切片需要进行下载播放。所有的这些数据都通过 HTTP 协议传输。1.2、主播放列表
当 M3U8 文件作为主播放列表(Master Playlist)时,其包含的信息是同一个媒体资源的多路流资源列表。不同的流可能有着不同的码率,不同的格式,不同的分辨率。不同的流也可以指定不同语言的音频,不同视角的视频等等。
客户端应该根据网络状况来选择合适的流来播放,也应该根据用户的偏好来选择合适的语言和视角的流来播放。
这里讲的播放列表文件主要是指 HLS 协议所使用的播放列表文件,该文件的格式主要包含下面几方面的内容:2.1、格式规范
M3U8 播放列表文件必须以 UTF-8 进行编码,不能包含任何 Byte Order Mark(BOM)内容,并且除了 CR(U+000D) 和 LF(U+000A) 之外不能包含任何 UTF-8 控制字符 (U+0000 ~ U+001F 及 U+007F ~ U+009F)。并且,所有的字符序列必须遵循 Unicode 规范。
M3U8 播放列表文件的每一行要么是一个 URI,要么是空行,要么是以 开头的字符串。空行会被忽略,除了显式声明的元素,不能出现空白字符。
以 开头的字符串要么是注释,要么是标签。标签以 开头,大小写敏感。以 开头的注释在解析时应该忽略。
如果 M3U8 文件是一个媒体播放列表(Meida Playlist),那么每个 URI 对应的都是一个媒体切片;如果 M3U8 文件是一个主播放列表(Master Playlist),那么每个 URI 对应的是一个媒体播放列表。其他表示都是不正确的。
一个媒体播放列表的时长等于它包含的所有媒体切片时长的总和。
每个媒体切片的码率等于切片的大小除以它的时长。需要注意的是,这里及后面码率的计算包含了除了音视频数据外的容器数据,但是不包含各种传输协议(HTTP、TCP、IP)头所占用的数据。
一个媒体播放列表的最高码率是所有切片中码率的最大值,但这里的切片需要满足条件:时长是 指定值的 0.5 ~ 1.5 倍的连续切片。
一个媒体播放列表的平均码率是所有切片的大小之和(单位:bit)除以播放列表的时长。2.2、属性列表
属性列表是一组可以设置值的特定标签,它们对应的是一个个的键值对,语法如下:
2.3、标签
播放列表的标签用于指定文件的全局信息,或者指定跟在其后的媒体切片或媒体播放列表的相关信息。2.3.1、基础标签(Basic Tags)
基础标签(Basic Tags)可以在媒体播放列表(Media Playlist)和主播放列表(Master Playlist)中使用。,表示文件继承自 M3U 标准。这个标签必须放在文件第一行。,表示文件的版本,这个与文件相关的媒体和服务器相关。语法:2.3.2、媒体切片标签(Media Segment Tags)
每个切片 URI 前面都有一组媒体切片标签(Media Segment Tags)对其进行描述。有一些媒体切片标签只对跟在其后的一个媒体切片相关;有的则与其后的所有切片都相关,直到后面遇到另一个该标签的描述。
媒体切片标签不能出现在主播放列表(Master Playlist)中。,表示其后媒体切片的时长(单位为秒)。每个媒体切片之前必须指定该标签。语法:,表示指定媒体切片是其后 URI 指定的媒体资源的一部分。语法:说明:其中 n 表示字节大小,o 表示起始位置。如果指定了 o 值,则表示对 URI 指定资源从 o 指定的位置开始截取 n 字节;如果 o 未指定,则表示把上一个该标签指定的媒体资源作为目标,将其已截取片段的下一个字节作为起始位置开始再截取 n 字节。如果没有指定该标签,则表明切片范围为整个 URI 指定的媒体资源。该标签兼容的版本是 EXT-X-VERSION 为 4 及以上。,表示其前一个切片和下一个切片之间存在中断。在媒体文件格式、媒体轨道的数量和类型、时间戳序列、编码参数、编码序列的内容发生变化时,需要使用该标签。,媒体切片是可以加密的,这个标签用来指定解密方法。语法:说明:一般一个媒体播放列表中会出现 2 个以上的 EXT-X-KEY 标签,一个 EXT-X-KEY 标签作用于包含在它和下一个具有同样 KEYFORMAT 属性值的 EXT-X-KEY 标签之间的所有切片。,指定了如何获取媒体初始化信息(Meida Initialization Section)来解析后续的媒体切片数据。该标签对其后所有切片生效,直到遇到下一个 标签。,这个字段是必须的,该 URI 指向包含媒体初始化信息(Meida Initialization Section)资源。,该字段是可选的,表示上面 URI 指向的资源中媒体初始化信息(Meida Initialization Section)的精确字节位置。如果没有该字段,则表示该资源所有的数据都是目标数据。语法:,这里的属性列表包括如下字段:,使用了一个绝对的时间来指定媒体切片第一个采样的时间。这个标签只作用于其后的一个切片。语法:,用于将一个时间范围和一组属性关联起来。2.3.3、媒体播放列表标签(Media Playlist Tags)
媒体播放列表标签(Media Playlist Tags)主要用来描述全局的媒体信息。,表示所有媒体切片的最大时长,单位是秒。这个标签是必填的。 所指定的各个切片的时长必须不大于这个时长,否则会出现播放卡顿或播放错误。语法:,表示列表文件中第一个媒体切片的序号。如果没有这个标签,那么表示第一个媒体切片的序号为 0。每个媒体切片都有唯一的序列号,序列号按照出现顺序依次加 1。此外,如果有这个标签,那么这个标签需要放在第一个切片之前。语法:,该标签用于同步相同流的不同路或者有 EXT-X-DISCONTINUITY 标签的不同备份流。该标签必须出现在第一个切片之前,且必须出现在任何 EXT-X-DISCONTINUITY 标签之前。语法:,表示不会再有更多的切片会添加到播放列表中。该标签可以出现在媒体播放列表的任意位置,一般出现在文件结尾。语法:,该标签表明了全局播放列表的可变性。这个标签是可选的,作用于整个播放列表。该标签如果被省略,则媒体播放列表是可以修改的。语法:说明: 表示可以在播放列表可变,不过只能在尾部添加媒体切片; 表示播放列表不可变。,该标签表示每个媒体切片都是 I 帧。该标签作用于整个播放列表。语法:说明:在包含 EXT-X-I-FRAMES-ONLY 切片的播放列表中,每个切片的时长(EXTINF)表示当前 I 帧开始到下一个 I 帧开始的时间。媒体资源如果是 I 帧切片,那么必须在开始位置提供 Media Initialization Section 信息或者通过 EXT-X-MAP 标签提供 Media Initialization Section 的获取路径,这样客户端就在任意位置以任意顺序来对这些 I 帧进行解码。如果 I 帧切片设置了 EXT-X-BYTERANGE 标签,那么它对应的数据长度一定不能包含 Media Initialization Section 的数据长度。客户端可以认为 Media Initialization Section 信息是定义在 EXT-X-MAP 标签中的,或者它的位置是从切片起始的位置开始到第一个 I 帧起始的位置结束。兼容 EXT-X-I-FRAMES-ONLY 要求文件版本号 EXT-X-VERSION 大于等于 4。2.3.4、主播放列表标签(Master Playlist Tags)
主播放列表标签(Master Playlist Tags)主要用于定义多路流以及其他全局参数。主播放列表标签不能出现在媒体播放列表中。,该标签用于指定具有相同内容的不同路的流,这些流可能是有不同的音视频参数,或者是对应不同的语言翻译。比如,我们可以通过 3 个 EXT-X-MEDIA 标签来给一个媒体资源分别指定英语、法语、西班牙语的音频内容;我们也可以通过 2 个 EXT-X-MEDIA 标签给一个媒体资源指定两种不同的拍摄视角。,资源类型。必填字段,可选值有:、、、。一般隐藏式字幕(CLOSED-CAPTIONS)是跟着视频数据的,不会专门指定一路流。,资源地址。可选字段,如果 TYPE 是 CLOSED-CAPTIONS,则不要出现这个字段。,分组标识。必填字段,用于指定资源属于哪个组。,指定资源主要使用的语言。可选字段。,指定资源使用的语言的一个版本,常用来指定语言的书写、方言等特效。可选字段。,用于填写名字,目的是易读。必填字段。,表示当前资源是否是默认播放资源。可选字段,默认值是 NO。,可选字段,默认值为 NO。当该值为 YES,当用户没有指定偏好时,则默认播放这个资源。如果有该字段,并且 DEFAULT 值为 YES 时,该值必须为 YES。,可续字段,默认值为 NO。只有当 TYPE 值为 SUBTITLES 时,才能出现该字段。当该值为 YES,表示资源中包含了重要的内容,客户端应该从中选择最符合当前播放环境的资源来播放。,只有当 TYPE 为 CLOSED-CAPTIONS 才出现该字段,且必须出现。,可选字段。,当 TYPE 为 AUDIO,该字段表示音频轨道数。语法:,其中这里的属性列表包括:说明:同一组的资源都有同样的 GROUP-ID 和同样的 TYPE,同一组的不同路流必须对应的是统一的内容,否则播放可能会出错。一个播放列表的所有 EXT-X-MEDIA 的 NAME 属性都必须各不相同。同一组中只能有一个 DEFAULT 属性为 YES 的 EXT-X-MEDIA。AUTOSELECT 为 YES 的不同 EXT-X-MEDIA 必须能通过 LANGUAGE、ASSOC-LANGUAGE、FORCED、CHARACTERISTICS 属性组做出区分。,该标签用于指定媒体资源的具体信息。,表示流的最高码率(Peak Segment Bit Rate),包含了所有需要播放的媒体资源的码率加和。必填字段。,表示流的平均码率。可选字段。,表示编码器。应该尽量包含该字段。,表示分辨率。可选字段。,表示帧率。可选字段。但是包含视频的资源都应该尽量包含该信息。,表示数字内容保护。可选字段。,对应某个 TYPE 为 AUDIO 的 EXT-X-MEDIA 标签的 GROUP-ID 字段。表示音频应该使用对应组的资源。可选字段。,对应某个 TYPE 为 VIDEO 的 EXT-X-MEDIA 标签的 GROUP-ID 字段。表示视频应该使用对应组的资源。可选字段。,对应某个 TYPE 为 SUBTITLES 的 EXT-X-MEDIA 标签的 GROUP-ID 字段。表示字幕应该使用对应组的资源。可选字段。,对应某个 TYPE 为 CLOSED-CAPTIONS 的 EXT-X-MEDIA 标签的 GROUP-ID 字段。表示隐藏字幕应该使用对应组的资源。可选字段。语法:,URI 是换行。这里的属性列表包括:,表示一个包含 I 帧的媒体播放列表。这个标签是独立的,不作用于主播放列表里的其他资源。该标签主要服务于播放时的快进和快退功能。,对应一个只包含 I 帧的媒体播放列表。该列表中必须包含 EXT-X-I-FRAMES-ONLY 标签。语法:,属性列表包含了上文所讲的 EXT-X-STREAM-INF 标签除了 FRAME-RATE、AUDIO、SUBTITLES、CLOSED-CAPTIONS 外的各属性,同时再增加下列属性:说明:每个 EXT-X-I-FRAME-STREAM-INF 必须包含 BANDWIDTH 和 URI 属性。对于主列表中包含的多路流,则应该对应多路 I 帧媒体播放列表,且为它们设置同样的 NAME 和 LANGUAGE 属性。,该标签允许在主播放列表中携带任意的会话数据。,ID 最好遵循类似 格式。必填字段。,数据值。VALUE 字段和 URI 字段二选一。,数据地址,应该指向一个 JSON 文件。VALUE 字段和 URI 字段二选一。,语言。可选字段。语法:,属性列表包括:说明:一个主播放列表可以包含多个有同样 DATA-ID 的 EXT-X-SESSION-DATA 标签,但是不能包含一个以上的有同样 DATA-ID 和 LANGUAGE 的 EXT-X-SESSION-DATA 标签。,该标签允许将加密秘钥放在主播放列表中,这样客户端可以预先加载主播放列表类提取获取到加密秘钥,而不用非要加载媒体播放列表来获取。语法:2.3.5、播放列表共用标签(Media or Master Playlist Tags)
有一些标签是媒体播放列表和主播放列表中都可以出现的,但是一般一个标签出现在主播放列表,那么就不要再在该主播放列表索引的媒体播放列表中出现了。如果一定要两边都出现,那么标签对应的值必须相同,否则客户端应该忽略媒体播放列表的值,采用主播放列表的值。在同一个播放列表中,这些标签一定不能出现多次。,表明列表中的所有切片都可以独立解码,无需依赖其他切片的信息。语法:。说明:如果该标签出现在主播放列表,则适用于主播放列表包含的所有媒体播放列表。,表明倾向于从哪个时间点开始播放。,表示开始时间偏移,必填字段。如果是正数,则表示距离播放开始时间的偏移,此时如果绝对值超过了视频总时长则表示偏移到结束时间;如果是负数,则表示是距离播放结束时间的偏移,此时如果绝对值超过了视频总时长则表示偏移到开始时间。如果播放列表不包含 EXT-X-ENDLIST 标签,则 TIME-OFFSET 的值不应该在播放列表末尾的 3 个切片的时长之内。,表示是否精确,可选字段。默认是 NO。如果设置该值为 YES,则客户端应该播放时间包含 TIME-OFFSET 的切片,并且不要渲染该切片内时间在 TIME-OFFSET 之前的采样;如果该值为 NO,则渲染切片内所有的采样。语法:,属性列表包括:
1)一个点播媒体播放列表:
M3U8 文件支持绝对路径,也支持相对路径,所以上面的格式等效于:
上面的示例是一个典型的点播媒体播放列表,主要特征是:文件包含 标签。 标签(可选)值为 VOD,表示播放列表不可变。
2)一个 EVENT 播放列表:
刚开始时,对应的 M3U8 文件内容如下所示:
EVENT 播放列表的主要特征是: 标签值为 EVENT,表示播放列表内容可变,不过只能在文件末尾改变。
结束时,M3U8 文件内容如下所示:
EVENT 播放列表可以用在直播中,通常用于晚会和体育赛事场景,用户一方面可以观看直播,一方面还能做 seek 操作回退到之前的时间点去回放。
3)一个直播播放列表:
直播过程中某个时间点的 M3U8 文件内容:
M3U8 文件可以使用 HTTP,也可以使用 HTTPS。
直播播放列表的主要特征:不包含 标签。不包含 标签。
直播播放列表是一个会动态更新的 M3U8 文件,服务端会对直播流进行实时转码生成直播流切片,并定期更新 M3U8 文件。这个 M3U8 文件一般为会包括 3-5 个切片。
直播播放列表中的任意一个切片的 URI 被移除时,都需要更新 标签的值(+1)。移除切片 URI 时必须按顺序,以保证客户端通过更新的 M3U8 文件拿到的是连续的切片数据。
当上面的实例更新一个切片后,M3U8 文件内容更新为:
4)一个加密的媒体播放列表:
主要特征:包含 标签。
上面示例中的 加密信息作用于 、、 这 3 个切片。
5)一个 BYTERANGE 播放列表:
主要特征: 标签的值为 4 以上,确保 HLS 支持。通过 来指定切片偏移量。语法是:
使用 BYTERANGE 播放列表可以不用在服务端存储大量的小切片文件,只通过一个文件再加上文件偏移量信息就可以支持分片。
比如,上面示例的 BYTERANGE 播放列表等价于下面简单的播放列表:
6)一个插播不同格式内容的播放列表:
主要特征:包含 标签。
在一些场景下,我们需要在点播或直播中插入其他内容,比如广告,这时候可能这段广告内容的编码格式与原视频的编码格式存在差异,这种差异可能造成客户端播放出问题,这时候就需要告知客户端。这就需要用到 EXT-X-DISCONTINUITY 标签。
7)一个主播放列表:
主要特征:包含 标签。
上面示例中,通过 3 个不同码率的视频流和 1 个音频流来描述一个内容。
8)I 帧播放列表:
主要特征:包含 标签。
HLS 是通过主播放列表标签 EXT-X-I-FRAME-STREAM-INF 和媒体播放列表标签 EXT-X-I-FRAMES-ONLY 配合来实现 I 帧播放列表,从而支持视频播放常用的快进和快退功能。
上面的示例是在主播放列表中通过 EXT-X-I-FRAME-STREAM-INF 标签指定 I 帧播放列表,那么对应的 I 帧播放列表内容示例如下:
主要特征: 标签的值为 4 以上,确保 HLS 支持。包含 标签。
上面的示例是用 EXT-X-BYTERANGE 来指定每个 I 帧对应的数据。这里需要注意的是 EXTINF 表示的时长是当前 I 帧到下一个 I 帧的时长。
9)Alternate Media 主播放列表:
包含多路音频的主播放列表:
包含多路视频的主播放列表:
为了节省空间,其中 CODECS 字段被省略了。
主要特征:
Alternate Media 为 M3U8 提供外挂音频、视频、字幕的能力,可以在不改动已经存在的媒体切片的情况下,为客户端提供新的可选媒体信息。使用 EXT-X-MEDIA 中的 GROUP-ID 字段与 EXT-X-STREAM-INF 中的 AUDIO、VIDEO、SUBTITLES 关联,实现多码率、多音频、多字幕、多视角的视频播放。
10)主播放列表中的会话数据示例:
1)M3U8 文件示例
https://developer.apple.com/library/archive/technotes/tn2288/_index.html
2)M3U8 文件标准
https://tools.ietf.org/html/rfc8216
3)HLS 协议
https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/HTTPStreamingArchitecture/HTTPStreamingArchitecture.html
(通过上文的介绍,我们了解了 M3U8 媒体封装格式,这是 HLS 协议的基础,在直播和直播回放场景都有应用。我们将在后面继续探讨其他常见的媒体封装格式,敬请期待)
卢森堡VS意大利直播_卢森堡VS意大利免费高清在线直播_卢森堡VS意大利免费直播视频直播
“咕噜噜!”睡得迷迷糊糊的叶银川,正以为打雷了,要出去收衣服的时候。转头就看到了——一只长着两只大耳朵,皮肤蓝白相间,又像兔子又像猫的生物,站在自己的床边,正用弱小可怜又无
2026-06-12
阿尔巴尼亚VS以色列直播_阿尔巴尼亚VS以色列免费直播在线直播
点击加载图片 " t-rc="http://tu.duoduocdn.com/uploads/day_230710/202307101813332607.jpg" alt="" onload="if(this.src.indexOf(':/')>0){$(this).parents('d
2026-06-12
威尔士VS加纳直播_威尔士VS加纳免费高清在线直播_威尔士VS加纳免费直播视频直播
发挥想象力,制作一个有创意的短视频发布到快手中,可以是正经严肃的结尾来个大反转,让人意料不到。2、剪辑某些知名的电视剧的片段,加上五毛特效。这个播放量也蛮大,就是颠覆人们
2026-06-12
格鲁吉亚VS罗马尼亚直播_格鲁吉亚VS罗马尼亚格鲁吉亚VS罗马尼亚免费直播在线直播
动画片类S级女唱将!骚音杯塌哥支持者,动画片后起之秀。听歌就去卉子直播间。 推荐 动画片 唱将 天籁之音 28910 大事件 新闻丨热点丨趣事 林真心官
2026-06-12
卢森堡VS意大利直播_卢森堡VS意大利免费高清在线直播_卢森堡VS意大利免费直播视频直播
《青轻》攻略 离家出走-吃东西-过去-愿意-我有梦想-清纯甜美型-赵薇(中间那个)-练习-问导师去不去-先向别人调查一下他的身份-带她参观-看窝-胆子很大的(主持好)-淡蓝色
2026-06-12
直布罗陀VS英属维尔京群岛直播_直布罗陀VS英属维尔京群岛直播观看免费_直布罗陀VS英属维尔京群岛
大家身边也很少看见内测号玩家,这是因为比较特殊,不会随便给别人使用的,也不会透露自己半点信息,如:公众號:赛博互娱 暗号:610 。获取的内部号。这些知名度的狗托号都是把控很严
2026-06-12
菲律宾VS关岛直播_菲律宾VS关岛菲律宾VS关岛免费直播在线直播
在这款融合模拟经营与宠物收集玩法的奇幻手游中,噜咪火山作为核心地图之一,凭借其独特的地貌设计与沉浸式生态体系,成为玩家探索热情最旺盛的区域。这里并非传统意义上危险炽
2026-06-12
摩洛哥VS马达加斯加直播_摩洛哥VS马达加斯加直播免费观看_摩洛哥VS马达加斯加直播无插件观看
热门综艺《种地吧2》收官之际,节目组发布的一份招聘启事被看做是要在“十个勤天”中加入新人的信号,引发了一场轰轰烈烈的“取关闹剧”,官博三天掉粉
2026-06-12
格鲁吉亚VS罗马尼亚直播_格鲁吉亚VS罗马尼亚格鲁吉亚VS罗马尼亚免费直播在线直播
视频来源:微博@薛思佳MRPG直播吧6月2日讯 今晚7点35分,上海男篮将继续在客场挑战广厦男篮,展开总决赛第4场对决萨索洛比赛预测。上一场缺阵的洛夫顿本场比赛
2026-06-12
06月02日 CBA总决赛G4 广厦vs上海 全场录像回放
05月18日 NBA季后赛东部半决赛G7 骑士vs活塞 全场录像回放
05月17日 CBA季后赛半决赛G2 上海vs北京 全场录像回放
05月16日 CBA季后赛半决赛G1 广厦vs深圳 全场录像回放
05月16日 NBA季后赛西部半决赛G6 马刺vs森林狼 全场录像回放
05月16日 NBA季后赛东部半决赛G6 活塞vs骑士 全场录像回放
05月24日 西甲第38轮 皇家马德里vs毕尔巴鄂竞技 全场录像回放
05月15日 CBA季后赛半决赛G1 上海vs北京 全场录像回放
05月24日 德国杯决赛 拜仁慕尼黑vs斯图加特 全场录像回放
05月24日 意甲第38轮 博洛尼亚vs国际米兰 全场录像回放