介绍
m3u8Download是用来下载m3u8视频的,支持并发下载TS流, 支持加密的TS, TS视频合并, TS转MP4. 轻轻松松跑满全部带宽来进行下载~
使用
在开始下载TS之前, 我们需要将M3U8文件下载到本地, 然后再去下载TS流, 这是两个步骤.
1.下载M3U8文件
该下载命令会将TS中所有非绝对路径的URI转为绝对路径~
m3u8Download.exe m3u8 <M3U8链接> -o <下载的文件名, 通常设定影片的名字方便区分> -r <来源referer>
缩写 |
全写 |
类型 |
作用 |
-o |
--out |
str |
下载后的m3u8文件名, 默认为路径名 |
-r |
--referer |
str |
发起请求时的referer, 默认空白 |
执行完毕之后, 会将M3U8文件下载至到程序目录下的m3u8
文件夹中.
如果需要下载多个视频, 可以将所有M3U8文件全部提前下载好.
2. 下载M3U8视频
m3u8Download.exe -r <来源referer> -p http://localhost:10809
执行命令后, 程序会扫描M3U8
文件夹中所有以m3u8结尾的文件, 将它们进行下载.
- M3U8被成功下载完成之后, 会将文件后缀更名为ok, 避免下次下载文件再次被扫描到, 而且留存M3U8文件可以避免下载重复, 软件在下载之前会检查之前有没有OK过的文件, 有的话软件会提示该文件一已经被下载过, 不会再次下载.
- 在TS下载之前, 会检查某个TS是否已经下载过, 如果已经下载, 软件不会重新覆盖下载, 可以做到断点重新下.
- 当你成功下载到MP4视频之后, 你最好打开视频, 拖动到末尾看一下视频的声音是否于画面同步, 如果没有同步, 则表示中间其中某个TS的文件出现损坏, 需要进行排查删除或重新下载某个TS文件.
缩写 |
全写 |
类型 |
作用 |
-m |
--maxDownload |
int |
最大并发下载数, 默认使用系统CPU核心数量 |
-p |
--proxy |
str |
d理地址, 默认不使用d理 |
-r |
--referer |
str |
发起请求时的referer |
|
--allowError |
int |
允许出错次数, 默认只要出错将不进行TS合并和MP4转换 |
|
--retry |
int |
TS下载出错重试次数 (default 3) |
清理视频
当你成功下载到MP4视频之后, 你会发现TS目录下面的文件是多余的, 可以清理掉, 但是有时候手动清理太多视频比较麻烦, 因为你有可能需要一个个对比看看哪个TS的文件夹是已经下载成功有MP4文件了, 可以借助这个命令来快速安全的删除.
m3u8Download.exe clean
执行命令后, 程序会扫描MP4
文件夹下面下载成功的视频, 将扫描到的视频文件名对应的在TS
文件夹中进行匹配, 如果匹配到了, 程序会自动删除那些没用的TS文件.
该命令只会删除TS
文件夹下的文件, 不会删除其他目录的文件, 可以放心大胆的执行!
配置文件的使用
- 掌握前面的内容, 你就已经可以游刃有余的使用软件了, 但是细心的你发现每次下载不同平台的M3U8视频, 都要手动指定对应平台的Referer, 非常麻烦!!\
- 有时候需要经常指定d理地址, 非常繁琐, 下载一个M3U8视频需要输入很多繁琐的东西!!\
那么这个时候配置文件就可以闪亮登场啦~\
你只需要在程序目录下面创建一个config.yaml
文件, 然后使用全写标记配置好我们的设置, 这样就不用每次执行命令的时候都在反复的输入一些繁琐的标记啦.
# config.yaml
# proxy d理地址
proxy: http://127.0.0.1:10809
# 最大并发下载数
maxDownload: 32
# 出错重试次数
retry: 3
# 允许出错次数
allowError: 60
refererConfig:
domain: referer
细心的伙伴已经发现了refererConfig
这个配置, 这个配置是用来解决我们提出的第一个问题的, 就是不同平台不同referer.\
domain位置请写TS下载时的Host, 当程序在下载TS时, 发现这个TS的Host有对应的Referer, 会自动使用这个referer.\
当然了, 如果你使用referer标记指定了一个固定的referer时, 这个配置就失去作用了, 程序会优先使用你指定的referer.
后言
如果你在使用遇到问题 / 遇到不支持的网站, 欢迎写下你遇到的Issues,\
当然, 如果你能自己解决问题, 也可以提交PR给我进行合并.\