m3u8 在线视频手动下载 技术分析

[复制链接]
查看838 | 回复0 | 2023-8-27 16:43:56 | 显示全部楼层 |阅读模式
0. 前记
关于在线视频下载, 大概率 大佬们都有一些 chrome 插件之类的工具可以实现.
但是今天我还是想自己动作分析一遍, 顺便把实现方案 share 出来

研究了下, 现在很多视频平台 上的在线视频都是被切成了若干个 ts 片段, 然后将片段信息打包到 m3u8 文件去
前端播放用从 m3u8 文件解析所有的 ts 片段 来播放.

我们要完成完整下载的话, 大概分三步
1. 获取 m3u8 文件
2. 根据 m3u8 获取所有 ts 片段, 并下载
3. 下载完毕后,合并成一个视频

1. 获取 m3u8 文件
打开浏览器按 F12 打开开发者工具

然后在页面上随机打开一个在线视频.
之后 在开发者工具搜索 .m3u8 后缀请求.
这里可以看到, 这个请求的响应里包含了 当前视频的所有 ts 片段



我们先把这个文件保存到本地, 直接复制粘贴也可以.

2. 根据 m3u8 解析 ts 片段
依然是 F12 打开开发者工具
我们搜索 m3u8 文件里的 第一个 ts 文件, 可以看到这个 ts 文件的完整下载地址


之后, 我们根据下载地址前缀 , 将第一步获取到的所有文件, 拼接成如下代码:
[url=]複製代碼[/url]

wget https://xxxxxxx.com/m3u8/870881/8708811.ts
wget https://xxxxxxx.com/m3u8/870881/8708812.ts
wget https://xxxxxxx.com/m3u8/870881/8708813.ts
wget https://xxxxxxx.com/m3u8/870881/8708814.ts
wget https://xxxxxxx.com/m3u8/870881/8708815.ts
wget https://xxxxxxx.com/m3u8/870881/8708816.ts
wget https://xxxxxxx.com/m3u8/870881/8708817.ts
wget https://xxxxxxx.com/m3u8/870881/8708818.ts
....


打开 命令行工具直接粘贴, 下载 (类 unix 系统都有 wget 这个命令, windows 的话 可以借助迅雷等工具来下载) :



下载完后,视频就已经可以看了,
如果不嫌麻烦的话, 可以一个片段一个片段的看




3. 合并

关于视频的合并, 可以随便找一个视频剪辑工具来合并.
在 uninx 操作系统下 也可以使用这个命令来无脑合并:
[url=]複製代碼[/url]

cat *.ts > merge.mp4


当然, 我这里推荐一款更专业的开源工具: ffmpeg
ffmpeg 可在 Windows、Mac 和 Linux 上使用,您可以按照官方网站上的说明进行安装。
很多的音视频工具都离不开他.

我们将下载好的所有 ts 文件 仍到一个文件夹下,
然后把第一步的 870881.m3u8 文件也扔进来, 稍微编辑一下 (每个 ts 文件前面都加上 file),如下:
[url=]複製代碼[/url]

file 8708810.ts
file 8708811.ts
file 8708812.ts
file 8708813.ts
file 8708814.ts
file 8708815.ts
file 8708816.ts
file 8708817.ts
file 8708818.ts
file 8708819.ts


之后保存为 , 然后输入 ffmpeg 命令 即可:

ffmpeg -f concat -safe 0 -i 870881.m3u8 -c copy 870881_merge.mp4




嘿嘿, 转换成功~!
可以愉快的看片了
其实, 实现过程已经有了, 要把以上所有过程封装成一个 一键下载自动的脚本 也是很容易的.~



后记
升级/生威望可真难呀~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则