因为朋友需要下载某课的付费视频,某课的视频是以 ts 文件后缀格式的视频流一小段一小段边下边播的,而且使用了加密手段。研究了一下,发现通过 ffmpeg 下载还是挺容易的,直接可以生成一个 ts 的文件,播放器都播放这个文件也是没有问题的。
现在记录一下下载方法,不过前提是你有在线观看的权限。否则拿不到视频流地址,何谈下载?
系统环境
最好使用 Linux 环境
我使用的是 wsl 中 ubuntu (WSL 中的 Ubuntu 16.04.5 LTS)
操作步骤
- 安装 ffmpeg,在 ubuntu 系统中,可以直接
apt install
安装
sudo apt install ffmpeg
- 下载 m3u8
如果播放的视频是 ts 形式的视频流,浏览器播放视频之前一定会加载一个.m3u8 文件,可以通过浏览器开发者工具 network 查看到,下载这个文件
- 下载 key 文件,替换 m3u8 中的 key 文件
在 m3u8 中的密钥通常是这样的:#EXT-X-KEY:METHOD=AES-128,URI="https://xxx"
,这时需要用能够在线观看到这个视频的浏览器会话去访问这个 URI (通过 cookies 验证),并保存到本地,并把 m3u8 也保存到本地,将密钥的 URI 改为下载好的本地路径(一个 m3u8 中可能有多个密钥,需要一一处理)。
如果报错可以将文件保存为以.m3u8 后缀的文件
下载视频文件
ffmpeg -i 02.m3u8 -c copy 02.ts # ffmpeg -i m3u8路径 -c copy 下载文件保存文件名
遇到的问题及参考资料列表
更新记录
- 2018-08-02 22:30:53 首次发布