在开发 Video Glancer 的过程中,需要添加 m3u8 格式视频下载的功能(中国网站如优酷、战旗,海外如 WSJ、BBC 等网站的部分视频都是通过 m3u8 提供视频)。因为这个有些麻烦,所以先做了个 Demo 测试,后来觉得这个可以单独拿出来做一个独立的小应用,应该会有些需求。
中国可用下载地址:https://apkpure.com/cn/m3u8-downloader/com.leavjenn.m3u8downloader
Google Play:https://play.google.com/store/apps/details?id=com.leavjenn.m3u8downloader
功能很简单,贴过去一个 m3u8 地址——下载——转换成 mp4——完了。
如果需要提取在线视频的 m3u8 地址,可以通过 Video Glancer 来实现。(介绍,下载)
基本原理:因为 m3u8 是一个有多种格式的列表,所以需要先解析列表;解析成功后会得到许多视频片段的地址,这时需要通过多线程下载来下载全部视频文件;然后要将多个视频段落合并/转换格式,这步通常需要 ffmpeg 来实现。
因为开发需要,看了下 Google Play 上其他3个 m3u8 下载应用,大致评论下:
一个开源 app,作者竟然自己写了个多线程下载,下载后直接粗暴合并(应用中添加了 ffmpeg 模块但是没用来实现合并),好处是节约了合并时间,弊端是,有时候合并的视频会有些问题,比如时间不正确、调整播放进度时无法正确读取。
内置了一个浏览器,用来直接读取网页中的 m3u8 文件,思路很好,但是浏览器没有提供地址栏,即使输入 url 也要经过 Google 搜索。尝试了几个网址,因为网站本身问题没有正确读取,也就没有深度测试。
下载、合并功能都可正常工作,但是免费版只能下载10分钟以内的视频。