Code Monkey home page Code Monkey logo

n_m3u8dl-cli's Introduction


███╗   ██╗        ███╗   ███╗██████╗ ██╗   ██╗ █████╗ ██████╗ ██╗       ██████╗██╗     ██╗
████╗  ██║        ████╗ ████║╚════██╗██║   ██║██╔══██╗██╔══██╗██║      ██╔════╝██║     ██║
██╔██╗ ██║        ██╔████╔██║ █████╔╝██║   ██║╚█████╔╝██║  ██║██║█████╗██║     ██║     ██║
██║╚██╗██║        ██║╚██╔╝██║ ╚═══██╗██║   ██║██╔══██╗██║  ██║██║╚════╝██║     ██║     ██║
██║ ╚████║███████╗██║ ╚═╝ ██║██████╔╝╚██████╔╝╚█████╔╝██████╔╝███████╗ ╚██████╗███████╗██║
╚═╝  ╚═══╝╚══════╝╚═╝     ╚═╝╚═════╝  ╚═════╝  ╚════╝ ╚═════╝ ╚══════╝  ╚═════╝╚══════╝╚═╝
                                                                                          

img img img img img

下载使用

关于开源

本项目已于2019年10月9日开源,采用MIT许可证,各取所需。

关于跨平台

  • N_m3u8DL-CLI (本项目): 基于 .NET Framework, 不具备跨平台能力. 目前已进入维护阶段.

  • N_m3u8DL-RE : 抛弃历史包袱从零做起, 支持Win/Linux/Mac, 更丰富的功能会在这里出现 ...

N_m3u8DL-CLI

一个简单易用的m3u8下载器,下载地址:https://github.com/nilaoda/N_m3u8DL-CLI/releases

支持下载m3u8链接或文件为mp4ts格式,并提供丰富的命令行选项。

  • 不支持优酷视频解密
  • 不支持气球云视频解密
  • 支持AES-128-CBC加密自动解密
  • 支持多线程下载
  • 支持下载限速
  • 支持断点续传
  • 支持Master List
  • 支持直播流录制(BETA)
  • 支持自定义HTTP Headers
  • 支持自动合并 (二进制合并或使用ffmpeg合并)
  • 支持选择下载m3u8中的指定时间段/分片内容
  • 支持下载路径为网络驱动器的情况
  • 支持下载外挂字幕轨道、音频轨道
  • 支持仅合并为音频
  • 支持设置特定http代理
  • 支持自动使用系统代理(默认行为, 可禁止)
  • 支持m3u8dl链接协议(通过web链接调用本机客户端)
  • 提供SimpleG简易的GUI生成常用参数

运行截图

命令行选项

N_m3u8DL-CLI

USAGE:

  N_m3u8DL-CLI <URL|JSON|FILE> [OPTIONS]

OPTIONS:

  --workDir                  设定程序工作目录
  --saveName                 设定存储文件名(不包括后缀)
  --baseUrl                  设定Baseurl
  --headers                  设定请求头,格式 key:value 使用|分割不同的key&value
  --maxThreads               (Default: 32) 设定程序的最大线程数
  --minThreads               (Default: 16) 设定程序的最小线程数
  --retryCount               (Default: 15) 设定程序的重试次数
  --timeOut                  (Default: 10) 设定程序网络请求的超时时间(单位为秒)
  --muxSetJson               使用外部json文件定义混流选项
  --useKeyFile               使用外部16字节文件定义AES-128解密KEY
  --useKeyBase64             使用Base64字符串定义AES-128解密KEY
  --useKeyIV                 使用HEX字符串定义AES-128解密IV
  --downloadRange            仅下载视频的一部分分片或长度
  --liveRecDur               直播录制时,达到此长度自动退出软件(HH:MM:SS)
  --stopSpeed                当速度低于此值时,重试(单位为KB/s)
  --maxSpeed                 设置下载速度上限(单位为KB/s)
  --proxyAddress             设置HTTP/SOCKS5代理, 如 http://127.0.0.1:8080
  --enableDelAfterDone       开启下载后删除临时文件夹的功能
  --enableMuxFastStart       开启混流mp4的FastStart特性
  --enableBinaryMerge        开启二进制合并分片
  --enableParseOnly          开启仅解析模式(程序只进行到meta.json)
  --enableAudioOnly          合并时仅封装音频轨道
  --disableDateInfo          关闭混流中的日期写入
  --disableIntegrityCheck    不检测分片数量是否完整
  --noMerge                  禁用自动合并
  --noProxy                  不自动使用系统代理
  --registerUrlProtocol      注册m3u8dl链接协议
  --unregisterUrlProtocol    取消注册m3u8dl链接协议
  --enableChaCha20           enableChaCha20
  --chaCha20KeyBase64        ChaCha20KeyBase64
  --chaCha20NonceBase64      ChaCha20NonceBase64
  --help                     Display this help screen.
  --version                  Display version information.

关于m3u8dl://协议

新增命令行参数:

--registerUrlProtocol          注册m3u8dl链接协议
--unregisterUrlProtocol     取消注册m3u8dl链接协议

URI格式:

m3u8dl://<base64编码的客户端命令行文本>

URI示例:

m3u8dl://Imh0dHBzOi8vZXhhbXBsZS5jb20vYWJjLm0zdTgiIC0td29ya0RpciAiJVVTRVJQUk9GSUxFJVxEb3dubG9hZHNcbTN1OGRsIiAtLXNhdmVOYW1lICJhYmMiIC0tZW5hYmxlRGVsQWZ0ZXJEb25lIC0tZGlzYWJsZURhdGVJbmZvIC0tbm9Qcm94eQ==

URI解码结果:

"https://example.com/abc.m3u8" --workDir "%USERPROFILE%\Downloads\m3u8dl" --saveName "abc" --enableDelAfterDone --disableDateInfo --noProxy

用户文档

https://nilaoda.github.io/N_m3u8DL-CLI/

聊聊

https://discord.gg/SSGwKrjC44

赞赏

Wow

n_m3u8dl-cli's People

Contributors

abevol avatar bxb100 avatar cw-b-w avatar evanlabs avatar mtcno avatar ncnnnnn avatar nilaoda avatar suwmlee avatar xifangczy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

n_m3u8dl-cli's Issues

索引超出数组界限

解析本地的m3u8文件出问题了
image
源码好像缺文件了Newtonsoft.Json.Linq
找不到JArray JObject

有个关于m3u8下载后时长的一个问题请教一下

打扰了 我用ffmpeg -i 看了m3u8链接的时长假设为10min 但是我ffmpeg -i test.m3u8 test.mp4下载后时长被缩短了
然后我用你提供的下载方式却是正常的
所以我想问一下你是否是直接用ffmpeg下载的 参数改如何定义

关于 B站/芒果 的播放和下载参数

ffmpeg下载需要添加以下参数
-headers "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"【回车】"Referer: https://www.bilibili.com"【回车】
注意:参数里2个回车,一共是三行。这里的User-Agent要和获取链接时的User-Agent一致。

使用mpv.exe播放链接时的参数(只有一行):
--http-header-fields="User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36","Referer: https://www.bilibili.com"

调用mpv.exe播放:
mpv.exe <以上参数> "https://xxxxxxxxxxxxxxxx"

芒果TV的链接播放和下载,与以上相同。

具体可参考:
Snipaste_2019-11-20_13-43-26

AG视频解析3.7下载
https://www.lanzous.com/b07r5v35e 密码:35n5

另外,B站使用mpv播放,似乎没有限速,很快。
使用ffmpeg下载时,速度总是提不上来,不知道是什么原因?请nilaoda(我老大)解惑,ffmpeg有多线程参数吗?

直播流bug

直播流录制一段时间,无法继续录制,无限提示获取或获取、写出循环,手动停止时提示:
未经处理的异常:System.ArgumentOutOfRangeException:该值必须大于或等于零,且必须小于控制台缓冲区在改维度的大小。
参数名:top
实际值是 15014(这个值不固定)
在System.Console.SetCursorPosition(Int 32 left, Int32 top)
在N_m3u8_CLI.NetCore.Program.HandlerRoutine(Int32 CtrlType)

本地m3u8識別為直播

本地m3u8格式如下
#EXTM3U
0.ts
1.ts
2.ts
3.ts
....
使用自定义baseurl后报错

20:08:56.619_ 开始解析地址...
20:08:56.638 获取m3u8内容
20:08:56.639 解析m3u8内容
20:08:56.650 写出meta.json
20:08:56.693 文件时长:00m00s
20:08:56.694 总分片:0, 已选择分片:0
20:08:56.694 识别为直播流, 开始录制
20:08:56.700 Waiting...
20:09:04.707 获取m3u8内容
20:09:12.708 获取m3u8内容
20:09:20.709 获取m3u8内容
20:09:28.709 获取m3u8内容
20:09:36.710 获取m3u8内容
20:09:44.711 获取m3u8内容
20:09:52.712 获取m3u8内容
20:10:00.712 获取m3u8内容
20:10:08.712 获取m3u8内容
20:10:16.713 获取m3u8内容
20:10:24.714 获取m3u8内容
20:10:32.714 获取m3u8内容
20:10:40.715 获取m3u8内容
20:10:48.715 获取m3u8内容
20:10:56.716 获取m3u8内容
20:11:04.717 获取m3u8内容
20:11:12.717 获取m3u8内容

#YUMING 项被忽略 | 另能自定义key链接/位置吗

首先感谢作者的项目,但我发现下载m3u8时#YUMING 链接项会被忽略

#EXTM3U
#YUMING|http://xxx.com/ftyZLUagYxWiJ0RH0oMnF/
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:YES
#EXT-X-MEDIA-SEQUENCE:4454
#EXT-X-TARGETDURATION:4
#EXT-X-KEY:METHOD=AES-128,URI="1.key"
#EXTINF:3.002,
1.ts
#EXTINF:3.002,
2.ts
#EXTINF:3.002,
3.ts
……
#EXT-X-ENDLIST

m3u8例子
我现在只能手动指定baseUrl才能下载,但我还需要查看m3u8才知道baseUrl,有点不太方便了

还有我能自定义key链接/位置吗?
因为我已经把m3u8和key存放本地里了,虽然可以批量修改,但我希望可以加个OPTIONS,提供自定义key位置可能更方便

最后再次感谢作者的项目,很棒

video.friday/提取的m3u8显示无效

https://video.friday.tw/drama/detail/1087
如:
99億的女人
99억의여자
-更新至第16集 | 每週四、五同步跟播

2019 | 韓國 | 每集35分鐘 | 普遍級

我通过网页抓取得到m3u8
http://edge02p.video.friday.tw/drm/46811.smil/playlist.m3u8?token=0e3eb3d1bc40b74245d4cf075a8131ef&contentVodId=46811&type=1&tokenId=nFM7F1InNK1WzlsPZwEmy0x4EYh5vpkF&contentId=44471&DL=N&memberId=3312524

data: {rule: 0, subtitleList: [{name: "中文", url: "http://edge02p.video.friday.tw/46811.cht.vtt"}],…}
enableAirPlay: true
enableChromecast: true
haveLastEpisode: false
haveNextEpisode: true
haveSubtitle: false
lastCid: 0
lastEpisodeName: ""
lastSid: 0
nextCid: 44472
nextEpisodeName: "2"
nextSid: 46812
rule: 0
startTime: 194
streaming: "http://edge02p.video.friday.tw/drm/46811.smil/playlist.m3u8?token=0e3eb3d1bc40b74245d4cf075a8131ef&contentVodId=46811&type=1&tokenId=nFM7F1InNK1WzlsPZwEmy0x4EYh5vpkF&contentId=44471&DL=N&memberId=3312524"
subtitleList: [{name: "中文", url: "http://edge02p.video.friday.tw/46811.cht.vtt"}]
0: {name: "中文", url: "http://edge02p.video.friday.tw/46811.cht.vtt"}
name: "中文"
url: "http://edge02p.video.friday.tw/46811.cht.vtt"
trackList: [{englishName: "kor", chineseName: "韓語", mainTrack: true}]
0: {englishName: "kor", chineseName: "韓語", mainTrack: true}
chineseName: "韓語"
englishName: "kor"
mainTrack: true
message: "成功"
status: 200
systime: "2019/12/29 07:16:37"

下载时间显示为 无效地址
前段时间显示为 大师数据匹配但一直死循环。

能否帮忙解决下;

直播流m3u8重复下载视频片段

作者您好!
我有一个m3u8的地址,是直播流。软件运行显示重复下载已complete的视频片段,导致最终录制的视频混乱,不知道什么原因。win10系统,软件最新版,默认配置

截图如下:

重复下载片段

直播流如何识别直播已经结束?

直播流如何识别直播已经结束?
直播结束后会反复输入
获取m3u8内容
获取m3u8内容
获取m3u8内容

怎么让它判断直播结束后退出程序?

添加下载失败照样合并视频功能

视频最后那1,2段下载失败软件就停了不会自动合并,之前版本改脚本可以合并现在不行了.
添加一个就算下载失败照样合并,给出失败提示是否需要合并

求m3u8下载可以选择合并H264或H265功能

可否把H265添加ffmpeg合并时可选择 x264或X265,国内WEB的话基本在2G-3GH264码还凑够,海外WEB通常在5G-8G如果H264很吃力。如果完成后再转H265很浪费时间。望大佬有空可以完善H265的选择项。无论可否感谢大佬了!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.