orestonce/m3u8d

无法下载 Twitch 的 VOD

Closed this issue · 16 comments

image

由于该网站的视频会过期,就不提供m3u8的测试地址了。你随便找一个VOD测试就行。

实测同样的地址JD2可以下载。

抱歉,https://www.twitch.tv/ 这个网站我无法访问

墙了

墙了

网易UU免费加速

最新版本已修复,请试一下 v1.24.24

修复了闪退问题,再试一下 v1.24.26

debuglog.txt
还是下不了,麻烦你再看看。

浏览器是能正常播放,IDM等下载工具也是能正常下载到ts的。

  • 修复了下载超时,计算速度问题,再试一下v1.24.28
  • 新支持了判断http返回的状态码跳过ts片段的方法,你这个url必须使用: http.code=403 跳过 558-unmuted.ts 这种无法下载的ts
  • 还未解决的问题:
    • 合并输出的mp4文件超过4GB会有bug,输出4GB以上的mp4无法播放
  • 新支持了判断http返回的状态码跳过ts片段的方法,你这个url必须使用: http.code=403 跳过 558-unmuted.ts 这种无法下载的ts

这里能不能改成:

  1. 如果返回了403,则尝试删除-unmuted后重试。
  2. 如果仍然403,则跳过。

还未解决的问题:

  • 合并输出的mp4文件超过4GB会有bug,输出4GB以上的mp4无法播放

32-bit 的问题?

  • 不能改成 “如果返回了403,则尝试删除-unmuted后重试。”这个策略,原因是没有通用性。m3u8文件内容已经指向了 558-unmuted.ts 这个文件,下载器没有理由去删减或者修改服务端告知的这个url。并且ts的路径不一定是001.ts 002.ts ... 这样的。
  • "输出4GB以上的mp4无法播放" 初步诊断不是32位程序的问题,是gomedia库的bug。已经尝试更新gomedia到最新版本,问题会更大,这个问题只有等待gomedia作者修复

午好。

  1. 那在出现403自动跳过的这种情况的时候,能否弹出提醒?或者在下载完成时不自动进行合并,并强制输出log,同时弹出提醒让用户自行操作合并。这样我们就有机会手动补全缺失的片段再合并,或者忽略掉缺失的片段直接合并。
  2. 如果是gomedia的问题的话,那能不能像压缩软件那样检测ts的大小,然后进行约3.9GB的分卷合并?或者说增加一个选项,让我们设置ffmpeg库的目录。当检测出总下载量大于4GB时就改用ffmpeg进行合并。 又或者……检测出TS大于4GB就弹窗提示,并不再执行自动合并的操作。让用户自己想办法合并…… 毕竟要解决问题……被动等待不是个好办法。(我基本上都是直播录像……过4G是必然的)
  1. 目前已有"不删除下载的ts文件"、“不合并ts为mp4”两个选项,你在使用的时候开启这两个选项即可。
  2. m3u8d自己因为bug存在,为了躲避这个bug分卷合并这个方案不好,后续会造成逻辑混乱。

你看这个补充如何,将增加以下两个功能

  1. 增加一个日志文件记录通过http状态码跳过的ts片段,日志文件的每一行保存一条记录:m3u8得到的http状态码,将要保存文件名,下载url
  2. 下载ts目录下产生一个bat或者sh脚本文件,该文件被执行时会调用ffmpeg命令合并该目录下的ts为mp4

那我再补充一下……

  1. 仅当触发跳过的时候才生成这个日志,不然这个玩意没用。同时自动应用"不删除下载的ts文件"、“不合并ts为mp4”两个选项的效果。
  2. 最好能人工预定义ffmpeg的路径后再生成脚本……不然对于不全局安装的环境下不太好用。同时,不大于4GB就不用生成了。(同样没有意义)

如果太麻烦就算了,完美主义癖而已……

没必要定义ffmpeg路径,这个需求偏离m3u8d的主要逻辑太远了。其他的逻辑都已实现,再试一下 v1.24.29

最新版本已修复mp4超过4GB出错的问题,v1.24.30

最新版本已修复mp4超过4GB出错的问题,v1.24.30

确认已修复,并解决了本问题。