当拿到一个m3u8格式的地址时,首先将m3u8格式的文件用\n隔开,并遍历,并检测有没有以 EXT-X-KEY: 开头或者包含的片段,这个片段就是m3u8格式的加密信息一般命名为:
#EXT-X-KEY:METHOD=AES-128,URI="xx.key",IV=xxx
这里只分析解密方法为aes-128解密的逻辑:
aes128解密需要两个参数一个是key,一个是偏移量(iv)
首先URI开头指向的通常是一个链接这个链接如果以http开头那么直接请求就可以,如果不是那大多数情况下都是以请求m3u8文件的地址去掉最后一个/前面的地址拼接起来的,当我们请求到的地址就是解密所需要的 key
一般EXT-X-KEY里面会包含iv参数,iv参数是一个32位的字符串,如果包含直接拿到iv参数就可以,如果不包含则是以ts地址所在m3u8文件中的序列号作为iv参数,比如第一个ts片段,那么他的iv值就是
000...0001 (31个0和1),这样拿到了 偏移量 (iv)
当我们拿到ts片段后直接用aes和刚刚拿到的key和偏移量去解密得到的片段就是新的ts片段
此时看到文件夹里的ts片段全部是可以播放的了,然后我们在把m3u8文件的ts片段地址指向对应的解密后的ts片段,即可实现本地播放m3u8视频
用格式工厂软件可以把m3u8格式文件转换为avi格式文件。
m3u8格式是缓存视频,QQ浏览器缓存视频时经常会出现这个格式,不信可以试试,这个视频是断点续传格式。在本地文件夹里显示只有几百KB,如果把这个视频转移或者上传到网盘里观看,是无法打开的,想想也知道几百KB也放不了几分钟,肯定不是实体视频啦。
所以,看到的视频相当于快捷方式。但是在浏览器已下载文件里可以看到这个视频第真实大小,这个视频相当于几十个或者几百个短视频组成的,把手机连接电脑,就可以找到缓存视频的路径。
扩展资料:m3u8文件是苹果及安卓设备的浏览器播放文件,包含m3u8播放列表和对应视频片段文件夹,用电脑可以用VLC播放器播放。
路径更改方法:
m3u8文件里写的路径为绝对路径或html路径,更改为本地路径如下:file:/storage/emulated/0/UCDownloads/VideoData/1466217672111/0,该路径指的是m3u8文件对应视频片段在1466217672111文件夹里,0代表片段序号。
vlc播放器打开时会定义路径为所打开文件的文件夹所在的路径,因此如果m3u8文件和1466217672111文件夹在同一个文件夹里,需要将绝对路径修改成1466217672111/0,就可以打开了。
转换格式:
vlc转换视频为mp4格式里,显示输出指的是在转换时可用看到视频内容,反交错指的是将视频帧中隔行扫描的场组合起来,从而使视频帧的各行在播放时按顺序显示。(显像管是交错隔行扫描,显示器是按序扫描),转换时不显示输出,勾选反交错。
下载到本地,包括ts视频流/key文件/m3u8配置文件,通过ffmpeg解密获取视频。命令:ffmpeg.exe -allowed_extensions ALL -i xx.m3u8 -c copy -bsf:a aac_adtstoasc filename.mp4 即可获得解密视频欢迎分享,转载请注明来源:内存溢出
评论列表(0条)