如果你经常播放流媒体音乐或视频并试图下载它们,可能已经遇到过m3u8文件。然而它们下载下来却只有几十甚至几KB。这么小的文件对于无缝播放体验却至关重要,它到底是如何做到的呢?
01、m3u8文件究竟是什么?
m3u8文件是m3u(MP3 URL,MP3地址)文件的Unicode(统一编码)版本。m3u8中的“8”代表UTF-8编码,这是目前网络通信中最常见的全球通用编码标准。
最初,Nullsoft出品的著名的Winamp播放器软件,为MP3音频播放列表设计了m3u文件。不过m3u和m3u8文件现在通常用于流媒体视频和音频内容,特别是在苹果开发HTTP Live Streaming(HLS,HTTP直播串流协议)内容后,各大流媒体播放器和播放平台纷纷使用这个格式代替过去的real格式的播放地址列表文件。
因此,作为一个“地址文件”,m3u8文件并不包含实际的媒体数据。它不是视频或音乐文件本身,它是一个包含媒体播放器指令的文本文件。当您在流媒体服务上点击播放并使用此文件格式时,m3u8文件告诉设备在哪里找到特定的媒体段(通常称为“块”或“片段”),以及播放它们的顺序,以构成完整的在线媒体流。
02、为啥流媒体平台爱用m3u8?
如果你用记事本一类文本编辑工具打开并复制文件里的请求URL,将其粘贴到浏览器新标签的搜索栏中,并按Enter键,仍然下载得到的是相应的m3u8文件。请求URL通常是一个非常长的字母数字字符串。
这就是为什么很多朋友用迅雷之类工具在不少流媒体平台“下载”,却值得到一个很小的m3u8文件,并不是电影或者音乐本身的mp4或者mp3文件的原因。正因为在没有专业工具解析的情况下,m3u8文件中的每个条目都代表一个带有指向其位置的URL的媒体段,一般人仅仅只能得到一个播放命令,因此具有一定程度上的“加密”作用,所以在线播放平台才喜欢上了这种文件格式。
你也可以自编m3u或者m3u8文件播放本地文件
m3u8文件的一个优点是,它们允许媒体播放器根据可用网络带宽调整正在播放的流媒体的质量,灵活在多种码率、分辨率之间切换呢,保证画面/声音的连贯。这是因为m3u8文件可以包含有关每个段可用的比特率选项的信息,允许媒体播放器根据需要进行切换。
因此,m3u8文件称为了目前HLS(HTTP Live Streaming)音视频平台的基础。
03、如何打开m3u8文件?
虽然你可能会偶尔遇到m3u8文件,但应该很少需要手动打开或与它们交互。大多数主流媒体播放器,Web浏览器和流媒体应用程序都设计为在后台自动处理m3u8文件了。例如你在某奇艺上流媒体播放追剧时,几乎没有需要与底层m3u8文件交互的必要。然而,这并不是说没有必要打开m3u8文件。它们可以是组织在线媒体或特定设备上的媒体的好方法。
如果确实需要打开一个m3u8文件,过程在不同的设备和平台上略有不同。m3u8文件可以引用本地文件路径或流媒体URL。这种区别在确定文件在不同设备上的行为时至关重要。
当m3u8文件引用特定设备上的文件路径(笔记本电脑,Android智能手机,iPhone等)时,它实际上是在为这些文件创建快捷方式。这对于在自己的设备上组织媒体非常有用,但在其他设备上不起作用,因为它们具有不同的文件系统。
例如,如果m3u8文件包含路径如“C:\Music\taishifu\Track 01.mp4”,它只会在该特定文件路径存在的设备上的媒体播放器中工作。尝试在另一个设备上打开相同的m3u8文件可能会导致错误。
因此,编写或者自动编写m3u8文件,对于使用NAS搭建家庭影音中心的用户来说,还是很有现实意义的。
04、如何“破解”m3u8文件?
当然,还有一种情况,就是某些情况下,在不能缓存或者难以找到缓存的在线视频文件,或者网络状况很难维持在线观看的时候,通过特定的工具解析m3u8文件,就能分析出其分配的各个“媒体块”,并将这些“块”(片段)根据m3u8中描绘的顺序组合起来,“还原”成一个完整的媒体文件。
这在某些特殊的情况下还是很有实用价值的。
那么,哪些软件有这个作用呢?
对于普通人来说,IDM(Internet Download Manager)就是一个具有“嗅探”m3u8能力的下载软件。在日常使用时,体验类似迅雷。而在用户播放在线视频时,如果视频是m3u8格式流媒体,IDM会弹出一个小的浮动工具条,点击后就能下载完整解析到的源文件了。不过这个软件需要正版注册,不是完全免费软件。
当然,也可以使用诸如m3u8.dev之类的在线m3u8解析平台,得到m3u8文件指向的真实媒体文件资源。不过这也要求你得到m3u8文件的地址或者文件本身。