该文章前面三节主要介绍M3u8视频是什么,视频播放错误(找不到地址)的解决方法在后面
M3U8是一种多媒体播放列表文件格式,主要用于流媒体播放。
一、文件格式特点
-
文本文件:M3U8是一个采用 UTF-8 编码的文本文件,这意味着它可以使用普通的文本编辑器打开和查看内容,方便用户进行简单的分析和修改。
-
扩展名:其文件扩展名是".m3u8",这个特定的扩展名使得播放器和其他相关软件能够快速识别它是一个 M3U8 格式的播放列表文件。
二、文件结构组成(这个比较重要)
由一个.m3u8文件和一堆装有ts的文件夹组成。
M3U8文件在流媒体播放中起着核心的索引作用。它包含了一系列的标签和信息,用于描述视频的基本属性以及指向视频片段的地址。
-
#EXTM3U :是类型指定标签,位于文件的第一行,用于表示该文件属于 M3U8 类型文件。
-
#EXT-X-VERSION :表示版本号标签,不同版本在功能和特性上可能会有一些差异,目前较为常见的是版本 3。
-
#EXT-X-TARGETDURATION :用来表示所有视频片段的最大时长(四舍五入的值),单位是秒。例如,如果文件中视频片段的最大时长为 8.02 秒,那么此标签的值就是 8。
-
#EXT-X-MEDIA-SEQUENCE :是分片参考序列标签,在直播场景中,播放器会以此标签的值作为参考来播放对应的序列号的分片。
-
#EXTINF :用于表示每个视频片段的时长等信息,格式为"#EXTINF:时长, 描述信息(可选)",每个视频片段都有对应的 #EXTINF 标签。
-
#EXT-X-ENDLIST :表示 M3U8 文件结束的标签,通常用于点播场景,直播场景中的 M3U8 文件一般没有此标签。
三、工作原理
- 视频分割与管理:
-
首先,原始的视频流会被分割成很多个小的 TS(Transport Stream)格式的片段。这样做的好处是可以将大的视频文件分割成小的部分,便于在网络环境较差的情况下逐步下载和播放,提高视频播放的流畅性和适应性。
-
M3U8 文件就像一个目录,记录了这些 TS 视频片段的信息,包括每个片段的时长、序列号以及片段的存储地址(可以是本地路径或网络 URL)。
- 客户端播放流程:
-
客户端(如浏览器、视频播放器等)获取到 M3U8 文件后,会对其中的信息进行解析,读取每个 TS 片段的相关信息,包括持续时间、序列号、对应的 URL 等。
-
客户端根据解析得到的信息,开始按照顺序下载 TS 视频片段。通常,客户端会同时下载几个片段,以提高播放的流畅性和缓冲性能。当第一个 TS 片段下载完毕后,客户端会开始播放这个片段,同时继续下载后续的 TS 片段,从而实现视频的连续播放。
四、找不到地址问题
1.首先确定m3u8是否如下图所示,一个ts集合文件夹对应着一个.m3u8文件。
2.找到对应的.m3u8文件用记事本或者notepad++打开,如下图所示将前面的"file:///sdcard/UCDownloads/VideoData/"替换为"./",这样m3u8文件就可以找到对应的ts文件了。更改完再用相应播放器就可以播放了。(./表示当前目录下,../表示上一级目录。如果m3u8文件与ts文件夹不是上图所示关系,请按实际情况更改即可,最终目的就是让.m3u8文件找到ts在哪儿)
3.解决potplayer播放m3u8视频不连贯问题
点击左上角下拉框,选中播放->无缝播放->合并多个文件夹播放(或无缝播放,这个可以自定义合并文件数)。