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 文件的完整下载地址
之后, 我们根据下载地址前缀 , 将第一步获取到的所有文件, 拼接成如下代码:
- 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 操作系统下 也可以使用这个命令来无脑合并:
cat *.ts > merge.mp4
当然, 我这里推荐一款更专业的开源工具: ffmpeg
ffmpeg 可在 Windows、Mac 和 Linux 上使用,您可以按照
官方网站上的说明进行安装。
很多的音视频工具都离不开他.
我们将下载好的所有 ts 文件 仍到一个文件夹下,
然后把第一步的 870881.m3u8 文件也扔进来, 稍微编辑一下 (每个 ts 文件前面都加上 file),如下:
- 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
嘿嘿, 转换成功~!
可以愉快的看片了
其实, 实现过程已经有了, 要把以上所有过程封装成一个 一键下载自动的脚本 也是很容易的.~
后记升级/生威望可真难呀~
大家在关于技术这块, 有什么需求,可以提出来, 内容合适的话我会整理成主题贴发出来. <好想上岛上头呀>
赞(86)