开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5248|回复: 75
收起左侧

[其它源码] m3u8视频下载(支持加密视频)-Golang

[复制链接]
结帖率:95% (42/44)
发表于 2023-9-16 13:14:25 | 显示全部楼层 |阅读模式   广东省肇庆市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 1425113841 于 2023-10-7 19:50 编辑

介绍

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结尾的文件, 将它们进行下载.

  1. M3U8被成功下载完成之后, 会将文件后缀更名为ok, 避免下次下载文件再次被扫描到, 而且留存M3U8文件可以避免下载重复, 软件在下载之前会检查之前有没有OK过的文件, 有的话软件会提示该文件一已经被下载过, 不会再次下载.
  2. 在TS下载之前, 会检查某个TS是否已经下载过, 如果已经下载, 软件不会重新覆盖下载, 可以做到断点重新下.
  3. 当你成功下载到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文件夹下的文件, 不会删除其他目录的文件, 可以放心大胆的执行!

配置文件的使用

  1. 掌握前面的内容, 你就已经可以游刃有余的使用软件了, 但是细心的你发现每次下载不同平台的M3U8视频, 都要手动指定对应平台的Referer, 非常麻烦!!\
  2. 有时候需要经常指定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给我进行合并.\


源码地址: gitee
编译软件: gitee-releases


补充内容 (2024-3-15 14:49):
新的gitee地址: https://gitee.com/kaylee595/m3u8Downloader

点评

个人使用开发的, 可以轻松跑满所有带宽.   广东省深圳市  发表于 2023-9-17 12:11

评分

参与人数 1好评 +1 精币 +1 收起 理由
草莓小熊 + 1 + 1 支持开源~!感谢分享

查看全部评分


结帖率:50% (1/2)

签到天数: 9 天

发表于 2024-8-29 21:29:10 | 显示全部楼层   河北省石家庄市
谢谢分享
回复 支持 反对

使用道具 举报

签到天数: 26 天

发表于 2024-1-9 15:40:11 | 显示全部楼层   湖北省武汉市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2023-11-25 19:54:50 高大上手机用户 | 显示全部楼层   湖北省黄冈市
66666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:95% (18/19)

签到天数: 8 天

发表于 2023-10-10 14:55:35 | 显示全部楼层   四川省成都市
C:\Users\outyo\Desktop\exe>tree /f
文件夹 PATH 列表
卷序列号为 1423-6258
C:.
│  11.exe
│  config.yaml
│  m3u8-download-master.zip
│  m3u8Download.exe
│  RSCProject.dll
│  VIP下载.exe
│  整理桌面.exe
│  易程序处理.exe
│  视频源.exe

├─bin
│      ffmpeg.exe

├─m3u8
│      最后生还者.m3u8.ok

├─mp4
└─ts
    │  最后生还者.ts
    │
    └─最后生还者
            plist-00001.ts
            plist-00002.ts
            plist-00003.ts
            plist-00004.ts

点评

已解决(软件问题)   广东省广州市  发表于 2023-10-10 15:15
回复 支持 反对

使用道具 举报

结帖率:95% (42/44)

签到天数: 28 天

 楼主| 发表于 2023-10-10 14:53:21 | 显示全部楼层   广东省广州市
草莓小熊 发表于 2023-10-10 14:48
我换了一个ffmpeg也是不行

你可以按win+r, 输入cmd回车, 然后输入cd desktop.
接着输入tree /F, 将控制打印出来的消息用私信回复我, 我帮你看

回复 支持 反对

使用道具 举报

结帖率:95% (18/19)

签到天数: 8 天

发表于 2023-10-10 14:53:12 | 显示全部楼层   四川省成都市
发不了图片了 只能挂外链了
https://f.afbkw.cn/SAc7kj

点评

这么一看好像是没有什么问题, 你可以加我名字(Q), 我可以帮你远程看   广东省广州市  发表于 2023-10-10 14:54
回复 支持 反对

使用道具 举报

结帖率:95% (18/19)

签到天数: 8 天

发表于 2023-10-10 14:48:05 | 显示全部楼层   四川省成都市
我换了一个ffmpeg也是不行
VX截图_20231010144715.png

点评

没有将exe目录也贴出来, 我没有并发判断, 请将exe目录的内容也贴出来.   广东省广州市  发表于 2023-10-10 14:49
回复 支持 反对

使用道具 举报

结帖率:95% (18/19)

签到天数: 8 天

发表于 2023-10-10 14:43:00 | 显示全部楼层   四川省成都市
1425113841 发表于 2023-10-10 14:40
@草莓小熊

请检查你的目录结构和ffmpeg的文件名字是否符合下面的目录规范:

路径都是对的伢 奇怪

点评

将你的目录结构完整copy贴出, 以方便我帮你检查   广东省广州市  发表于 2023-10-10 14:44
回复 支持 反对

使用道具 举报

结帖率:95% (42/44)

签到天数: 28 天

 楼主| 发表于 2023-10-10 14:40:12 | 显示全部楼层   广东省广州市
本帖最后由 1425113841 于 2023-10-10 14:42 编辑

@草莓小熊
我已经放了ffmpeg.exe 在bin 目录里  ffmpeg.exe 在您发布的链接里下载的

请检查你的目录结构和ffmpeg的文件名字是否符合下面的目录规范:
[Shell] 纯文本查看 复制代码
├─bin
├────ffmpeg.exe
├─m3u8
├─ts
├─config.yaml
├─m3u8Download.exe

344文件只有95kb ,我觉得可以吧单个文件限制再小一点,或者不限制?

不限制的话, 软件无法检测到TS缺损的情况, 会导致最终生成的视频常常因为缺损的TS导致视频后半段声画不同步.
通过做法是直接将334文件抛弃掉, 干脆不要这个TS片段了, 因为在一个M3U8文件只要缺失的TS片段不要太多不影响视频的整体.
考虑到如果你想手动降低限制, 特地更新了一个版本v0.3.6, 这个版本可以通过命令或者配置设置限制的大小, 通过字段tsSizeLimit来设置, 单位是KB, 默认限制是100KB.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表