1.什么是m3u8?

要想知道什么是m3u8最直接最粗暴的方式是找几个m3u8文件拔出来看看就知道。(话说是驴子是马出来溜溜就知道…) 

下面我给出了2个m3u8连接: 

1.​​http://cache.utovr.com/201508270528174780.m3u8​​ 

2.​​http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8​

特此申明以上2个连接均来自互联网,后一个是Vitamio的官网给出的例子。 

我们用在PC端在浏览器里面分别输入以上两个连接访问,得到如下截图: 

m3u8_m3u8

m3u8_m3u8_02

分别点击下载后得到两个个*.m3u8的文件,可以用文本编辑器打开如下: 

m3u8_vim_03

                201508270528174780.m3u8文件


  • 1

m3u8_流媒体_04

                       bipbopall.m3u8文件


  • 1

由此,可见m3u8是一种文本文件,非视频文件,是用utf-8描述的文本文件. 当然如果你的m3u8如 201508270528174780.m3u8文件里面描述的是ts的全路径不需要拼接则是可以直接用流媒体播放器VLC等播放的, 而 bipbopall.m3u8文件里面是ts的相对路径,故无法直接用VLC播放 bipbopall.m3u8文件。值得注意的是这里指下载后的*.m3u8文件,不是上面提到的两流媒体连接1.​​http://cache.utovr.com/201508270528174780.m3u8​​ 

2.​​http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8​​,这两流媒体连接是可以在VLC中播放的,具体如何使用VLC播放m3u8流媒体连接请自行google之。 

这里需要了解掌握的是VLC播放m3u8文件到底是在播放什么?刚才已经说了m3u8本身是文本文件故而肯定本身不能播放的。其实我们发现m3u8文本文件里面是很多.ts,如图201508270528174780.m3u8文件里面是ts的直接路径, bipbopall.m3u8文件里面给出的是ts的相对路径需要拼接,而ts才是一个个的视频小块通过VLC播放器播放,由此可知,*m3u8只是视频文件ts路径的封装或者容器,正真播放的是m3u8解析下载到本地的一段又一段的ts视频文件。

2.常见的m3u8有哪几种?

刚才已经说了m3u8是一种文本文件,里面封装的ts格式可能不是相同的,那么常见的封装有如下几种:


  • 1

1、一级目录文件(我觉着一级的目录没有适配码率的功能) 

1.1、打开第一级m3u8文件,能找到真正的视频地址 

1.2、第一级m3u8文件中,没有真正的视频地址,需要拼接才能找到真正的视频地址 

2、二级目录文件 

2.1、二级地址在一级文件中直接能看到 

2.2、二级地址在一级文件中不能直接看到,需要拼接一级链接的地址才能找到二级文件的地址 

2.2、打开二级目录,能找到整整的视频地址 

2.3、没有真正的视频地址,需要拼接才能找到真正的视频地址

如上​​http://cache.utovr.com/201508270528174780.m3u8​​就属于1.1的情况,具体播放过程是流媒体播放器VLC通过下载得到解析201508270528174780.m3u8文件直接打开该文件就可以得到视频播放的ts绝对路径播放,不需要拼接。 

而播放​​http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8​​是2.2这种情况,具体过程是这样的:

a.流媒体播放器VLC通过下载得到bipbopall.m3u8文件


  • 1

​http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8​​ 

b.解析bipbopall.m3u8文件得到gear1/prog_index.m3u8二级目录文件 

c.拼接地址,用链接地址的前半段​​http://devimages.apple.com/iphone/samples/bipbop/​​拼接上二级文件的相对地址gear1/prog_index.m3u8得到一个地址​​http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8​​。 

把此地址放到浏览器中,我们又会得到一个同样名为prog_index.m3u8的文件,内容如下: 

m3u8_二级_05

d.拼接新地址得到: 

​http://devimages.apple.com/iphone/samples/bipbop/gear1/fileSequence179.ts​​ 

这才是正真播放的视频ts路径。

脑洞大开的后话,在播放m3u8时会在本地有很多ts文件, 而这些ts都是一个个小视频,那么我们可以利用格式工厂等多媒体工具将这些视频合成一部完整的视频比如mp4等等,具体过程请google之。