使用命令行参数

为了丰富软件功能,我提供了很多命令行参数,在本页我将详细介绍这些参数的作用。

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

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

第一个参数

首先,第一个参数是 必要的,它意味着程序将从哪里接收一个地址、文件以开始下载。
例如,下列命令将使从指定地址下载一个视频:

N_m3u8DL-CLI "https://moviets.tc.qq.com/p0027jbwye1.321004.ts.m3u8?ver=4"
N_m3u8DL-CLI "C:\Users\nilao\Desktop\小猪佩奇第一集.m3u8"

--workDir

此命令将指定视频保存的位置,参数是一个文件夹路径。
例如,下列命令将使你的视频保存至D:\MyVideo

N_m3u8DL-CLI "C:\Users\nilao\Desktop\小猪佩奇第一集.m3u8" --workDir "D:\MyVideo"

--saveName

此命令将指定视频保存的名称,参数是一个有效字符串。
通常情况下,视频名称由程序自动识别,假如你想自定义一个名字,可以使用本命令。 例如,下列命令将使你的视频保存为小猪佩奇第一集.mp4

N_m3u8DL-CLI "C:\Users\nilao\Desktop\小猪佩奇第一集.m3u8" --saveName "小猪佩奇第一集"

--baseUrl

此命令常用于下载本地m3u8文件,例如:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:15
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:12.000,
00_p0027jbwye1.321004.1.ts?index=0&start=0&end=12000&brs=0&bre=1137963&ver=4
#EXTINF:12.000,
01_p0027jbwye1.321004.1.ts?index=1&start=12000&end=24000&brs=1137964&bre=2658695&ver=4
#EXTINF:8.200,
02_p0027jbwye1.321004.1.ts?index=2&start=24000&end=32200&brs=2658696&bre=3083011&ver=4
...
...
#EXT-X-ENDLIST

这样的m3u8文件是无法直接下载的,你需要指定对应的baseUrl,就像这样:

N_m3u8DL-CLI "C:\Users\nilao\Desktop\raw.m3u8" --baseUrl "https://apd-1b75827c3b093392908ce37d3e2c2481.v.smtcdns.com/moviets.tc.qq.com/AaycNil6WINh7T1JAIHdFjn5ANcF7Q8mk3QXxQHl-7Ik/uwMROfz2r5xhIaQXGdGnC2df64gZXNTMZvhtgq7maR8xuHpV/ihA_Kl1SzFmdh7RlzCAOqn64fVVL3Myzr20LmxKiuA2qr7rgjvqMS8k6gQI6VHwjuQMUrctWXB6kDQYYbHDsR1ZGIaDOtcm5wbE36xN9CC34Itm7ZoYdDjJHYH-wfETSwFsTXa4iJpZcXytyCVCRlFIyBdDIYgqNJiSIJsBu_m0/"

--headers

某些时候,视频服务器会阻止你的请求,除非你能够伪造一些请求头,本命令即可伪造一些请求头,目前支持大部分常见请求头:

Referer
User-Agent
Range
Accept
...

芒果TV的m3u8会验证Cookie,必须含有MQGUID才能正确访问下载,你可以这样指定:

N_m3u8DL-CLI "C:\Users\nilao\Desktop\小猪佩奇第一集(MGTV).m3u8" --headers "Cookie:MQGUID"

当然,支持自定义多种请求头,使用|分隔,例如:

N_m3u8DL-CLI "C:\Users\nilao\Desktop\M.m3u8" --headers "Cookie:sessionId=1236983428;cns=xpopqwe305|User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"

这样可以使程序使用如下请求头:

...
Cookie:sessionId=1236983428;cns=xpopqwe305
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
...

--maxThreads & --minThreads

程序的下载线程数可由--maxThreads--minThreads指定,默认情况下,这两个值分别是3216,你可以手动指定它,例如下列命令可将程序线程限制到1

N_m3u8DL-CLI "C:\Users\nilao\Desktop\小猪佩奇第一集.m3u8" --maxThreads 1 --minThreads 1

--retryCount

指定程序最大重试次数。某些时候我们并不能一次性成功下载所有分片,在一次任务结束后,程序会检测已下载的TS分片数量和m3u8文件中的分片数量是否相等,不一致则进入重试环节。默认值为15

--timeOut

指定程序进行网络请求的超时时长,默认值为10

--muxSetJson

指定一个json文件用于混流,能够识别的格式如下:

{
    "muxFormat": "mp4", 
    "fastStart": "True", 
    "poster": "文件路径,\需写为\\", 
    "audioName": "", 
    "title": "", 
    "copyright": "", 
    "comment": ""
}

例如你想要将一个图片作为视频的海报,同时为视频添加标题,你可以在桌面新建一个小猪佩奇.json,并在文件中写入如下内容:

{
    "muxFormat":"mp4",
    "fastStart":"True",
    "poster":"C:\\Users\\nilao\\Desktop\\小猪佩奇.jpg",
    "audioName":"",
    "title":"小猪佩奇第一集",
    "copyright":"",
    "comment":"我爱小猪佩奇",
    "encodingTool": ""
}

然后使用如下命令使用它:

N_m3u8DL-CLI "C:\Users\nilao\Desktop\小猪佩奇第一集.m3u8" --saveName "小猪佩奇第一集" --muxSetJson "C:\Users\nilao\Desktop\小猪佩奇.json"

这样,你的视频将在Windows文件资源管理器中呈现出这样的效果:
直接使用

Mediainfo中,显示如下:

格式                                       : MPEG-4
格式概况                                     : Base Media
编解码器ID                                   : isom (isom/iso2/avc1/mp41)
文件大小                                     : 38.6 MiB
持续时间                                     : 5 分 2 秒
平均混合码率                                   : 1 072 kb/s
电影名称                                     : 小猪佩奇第一集
录制日期                                     : 2019-07-08T23:12:46.9349258+08:00
编码程序                                     : Lavf58.20.100
封面                                       : Yes
评论                                       : 我爱小猪佩奇

--useKeyBase64

强制使用AES-128解密,并使用输入的Base64String来作为解密KEY

N_m3u8DL-CLI "C:\Users\nilao\Desktop\AES.m3u8" --useKeyBase64 "di5rZXkAAAAAAAAAAAAAAA=="

--useKeyFile

强制使用AES-128解密,并使用输入的文件来作为解密KEY

N_m3u8DL-CLI "C:\Users\nilao\Desktop\AES.m3u8" --useKeyFile "C:\Users\nilao\Desktop\key"

--downloadRange

2.0.4及以后版本的新功能。可以使你从一段视频中下载你想要的一部分,支持分片参数与时间码参数,具体的使用示例如下:

--downloadRange 0-10
下载视频的第0个分片到第10个分片,即[0-10]

--downloadRange 200-
下载视频的第200个分片到最后一个分片

--downloadRange  -100
下载视频的第0个分片到第100个分片,即[0-100]

--downloadRange 00:23:00-00:25:20
下载视频00:23:00-00:25:20的内容

--downloadRange -00:10:00
下载视频的前10分钟的内容

--downloadRange 00:30:00-
下载视频的30分钟到结束的内容

注意:在使用时间码参数时,格式必须为00:00:00才能被程序正确识别

--liveRecDur

2.5.1及以后版本的新功能。在直播录制时,这将非常有用。

--downloadRange 00:10:00
直播流录制长度为10分钟

--downloadRange 01:10:10
直播流录制长度为1小时10分钟10秒

--stopSpeed

当下载速度低于此值(单位为KB/s)时,程序进入重试阶段。
默认值为0

--maxSpeed

设置下载速度上限(单位为KB/s)。
默认值为0, 不限速

--enableDelAfterDone

用于开启程序的下载完成后自动删除临时目录功能,无需任何参数。

--enableMuxFastStart

使用本命令后,合并生成的mp4文件将能够在网络传输时边下边看,适用于流媒体。
缺点是合并时间会变慢。
本命令无需任何参数。

--enableBinaryMerge

使用本命令后,所有关于mp4合并的参数将会失效,程序将采用二进制合并,即直接拼接服务器提供的Raw流,不使用ffmpeg进行混流。
本命令无需任何参数。

--enableParseOnly

使用本命令后,程序将只分析用户输入的m3u8文件而不进行下载。
本命令无需任何参数。

--enableAudioOnly

使用本命令后,程序将只合并音频轨道。
本命令无需任何参数。

--disableDateInfo

默认情况下,下载合并生成的mp4文件会默认加入一个录制日期,你可以使用本命令来规避此操作。
本命令无需任何参数。

--noMerge

默认情况下,下载后会自动合并为mp4文件,你可以使用本命令来规避此操作。
本命令无需任何参数。

--noProxy

默认情况下,下载器会使用当前系统的代理设置,你可以使用本命令来规避此操作。
本命令无需任何参数。

--disableIntegrityCheck

默认情况下,下载器在下载过程完毕后,会提取下载目录所有ts文件数量与meta.json中读取到的文件数量做比对,如果数量不一致(这意味着丢失了某些分片),程序将进入重试阶段。你可以使用此选项来规避此操作(不推荐)。 本命令无需任何参数。

你可能不知道

现在你可以在程序EXE目录下新建N_m3u8DL-CLI.args.txt,存一些命令行参数,举个例子:

--enableDelAfterDone --disableDateInfo --noProxy --workDir "C:\Users\nilao\Downloads"

此时,如果你的参数只有0个(双击打开程序)或1个(使用命令行调用且只输入了m3u8地址),程序会自动补充参数,例如N_m3u8DL-CLI "http://x.x/1.m3u8"将成为N_m3u8DL-CLI "http://x.x/1.m3u8" --enableDelAfterDone --disableDateInfo --noProxy --workDir "C:\Users\nilao\Downloads",这在没有GUI的情况下将十分有用。

你可以将.m3u8文件的默认打开方式设置为N_m3u8DL-CLI,便能双击下载且能保证程序会按照一定的默认行为去正确地工作,像你期待的那样。

results matching ""

    No results matching ""