admin 发表于 2024-9-5 20:09:51

串流媒体HLS m3u8

哈噜~进来看这篇文章的你,如果不是想增广见闻、学习新知,就是想多了解一些好用来坏坏。
这只是用业余时间所做的学习,如有错误的地方还请各位请多包涵。
小弟我也不是这科系的,如果想知道更多内容那…不好意思,可能得请你去看其他文章。
好的!废话太多进入正题!

先讲讲什么是串流媒体,在这边让我简单引用维基百科

「串流媒体(英语:Streaming media),指将一连串的多媒体资料压缩后,经过网际网路分段传送资料,在网际网路上即时传输影音以供观赏的一种技术与过程,此技术使得资料封包得以像流水一样传送,如果不使用此技术,就必须在使用前下载整个媒体档案。」

看不懂这段话的意思?那我说的更白话点,串流媒体就是把一部电影切成无数个小片段一段一段如流水般发送给你,并让你观赏的技术。

如果你是一个常常下载影片的话应该会发现,以前下载的影片格式大多是mp4, mov, avi, flv…等,到了近几年却发现变成了m3u8, mpd这两种。

先来讲讲m3u8这得东西,这是由苹果公司提出,全名HTTP Live Streaming,缩写为HLS。

那来讲讲这些格式是什么,让我们用笔记本来打开m3u8看看(档案是我从测试网站上抓下的),测试网站的m3u8档案有三个,我自己遇过的大多数网站通常m3u8只有一个。

三个档案内容分别为,影音格式、影片、音频,那我就分别开两个档案稍微讲下就好,因为影片和音频的档案内容基本上差不多。虽然我也不是很会,只是经过爬文后还是能勉强了解内容写的是什么,就让我稍微讲解下
先来看第一个档案的内容,每句都好让我们一个一个看。


#EXT-X-MEDIA: TYPE =AUDIO, GROUP-ID ="audio_high", NAME ="englishstereo", LANGUAGE ="en", AUTOSELECT =YES, URI ="11331_audio_1_stereo_192000.m3u8"

这段是规定了音频的格式,档案类型(Type),分组名称(Group-ID),档名(Name),语言(Language),是否自动选择(AutoSelect),编码方式( Codecs)

#EXT-X-STREAM-INF: BANDWIDTH =9792000, CODECS ="avc1.42c00d,mp4a.40.2", RESOLUTION =1920x1080, AUDIO ="audio_high"
11331_video_1080_4800000.m3u8

这里面规定了影片的位元率(Bandwidth),编码方式( Codecs),分辨率(Resolution)。可以看到这段影片总共有六种解析度。


而第二个档案的内容则是影片相关内容

EXT-X-VERSION:3
意思是这是M3U8的版本(Version),这是第三版。

EXT-X-MEDIA-SEQUENCE:0
这里说的是影片档的编号顺序(Sequence),会从0、1、2开始计数,直到最后一个档案为止。

EXT-X-TARGETDURATION:4
这段则是规定了每一个影片片段长度,而这句规定了每个影片最长不能超过4秒。
因此如果是单纯下载却没有进行合并,你会发现你下载了满满的短影片,且每一个影片都不超过4秒。

#EXT-X-KEY: METHOD =AES-128, URI ="../video/1080_4800000/enc_hls/encryption.key", IV =0x613E8B8CE9CE208C4EAD4A0E03636371

而这一段可以算是这个档案内的重点部分,为什么呢? 因为从这里证实了这个影片是经过加密过的。这边说明了使用的加密方式(Method)为AES-128。
还有一个URI,这个URI里面内含了一个key的解锁文件,这就是解密影片的文件。然而重点在后面的IV (初始向量),这个就跟密码学相关了,在这边就不写上他的加密原理,想知道的可以自行去查询。
总之,只要将URI和初始向量二者结合起来,即可达到解密的目的。

在现代随着资讯科技的不断发展,这种工作早就可以丢给电脑处理了。 所以现在也逐渐发展出了不同的加密方式,适当更新加密方式,以防不法分子获取重要资料的同时,也不要让密码太过复杂,这会使电脑在处理的过程中将过多的算力放在解密上,造成影片看一段卡一下,对于使用中低效能的电脑使用者们来说无比痛苦阿。

而之后的URL则是影片所在的位置,以及影片格式为.ts档。
透过观看m3u8里面所写的内容可以知道,如果要下载会得到影片档和音频档两种档案,且都经过加密因此下载后的档案还需要经过解密以及合并后才可观看。

总结,m3u8其实就是一份清单,里面记录了每一段影片所在的位置。这样做的目的是要分摊每个影片的大小,避免网速不够快进而影响观影体验。

通常想透过下载软体IDM (InternetDownload Manager )进行下载,通常高机率跳出「这是受保护的影片」,而无法下载,如下图:



当然还是有其他方法可以搭配IDM进行下载,如:N_m3u8DL-CLI
至于怎么做?我想应该不需要补充,毕竟这方法网路上到处都是,且比较好解决。
页: [1]
查看完整版本: 串流媒体HLS m3u8