nilaoda/N_m3u8DL-RE
Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.
About nilaoda/N_m3u8DL-RE
nilaoda/N_m3u8DL-RE is an open-source project on GitHub, mainly written in C#. Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. It currently holds 8,770 stars and 0 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).
Project Overview
Git Homed tracks it on the Video Trending board and on the AI Video Trending list.
GitHub Repository Details
README
N_m3u8DL-RE
跨平台的DASH/HLS/MSS下载工具。支持点播、直播(DASH/HLS)。
遇到 BUG 请首先确认软件是否为最新版本(如果是 Release 版本,建议到 Actions 页面下载最新自动构建版本后查看问题是否已经被修复),如果确认版本最新且问题依旧存在,可以到 Issues 中查找是否有人遇到过相关问题,没有的话再进行询问。
---
版本较低的Windows系统自带的终端可能不支持本程序,替代方案:在 cmder 中运行。
Arch Linux 可以从 AUR 获取:n-m3u8dl-re-bin、n-m3u8dl-re-git
# Arch Linux 及其衍生版安装 N_m3u8DL-RE 发行版 (该源非本人维护)
yay -Syu n-m3u8dl-re-bin
Arch Linux 及其衍生版安装 N_m3u8DL-RE 开发版 (该源非本人维护)
yay -Syu n-m3u8dl-re-git
---
命令行参数
Description:
N_m3u8DL-RE (Beta version) 20251027
Usage:
N_m3u8DL-RE [options]
Arguments:
链接或文件
Options:
--tmp-dir 设置临时文件存储目录
--save-dir 设置输出目录
--save-name 设置保存文件名
--save-pattern 设置保存文件命名模板, 支持使用变量:
, , , , ,
, , , ,
, ,
示例: --save-pattern "__"
--log-file-path 设置日志文件路径, 例如 C:\Logs\log.txt
--base-url 设置BaseURL
--thread-count 设置下载线程数 [default: 本机CPU线程数]
--download-retry-count 每个分片下载异常时的重试次数 [default: 3]
--http-request-timeout HTTP请求的超时时间(秒) [default: 100]
--force-ansi-console 强制认定终端为支持ANSI且可交互的终端
--no-ansi-color 去除ANSI颜色
--auto-select 自动选择所有类型的最佳轨道 [default: False]
--skip-merge 跳过合并分片 [default: False]
--skip-download 跳过下载 [default: False]
--check-segments-count 检测实际下载的分片数量和预期数量是否匹配 [default: True]
--binary-merge 二进制合并 [default: False]
--use-ffmpeg-concat-demuxer 使用 ffmpeg 合并时,使用 concat 分离器而非 concat 协议 [default: False]
--del-after-done 完成后删除临时文件 [default: True]
--no-date-info 混流时不写入日期信息 [default: False]
--no-log 关闭日志文件输出 [default: False]
--write-meta-json 解析后的信息是否输出json文件 [default: True]
--append-url-params 将输入Url的Params添加至分片, 对某些网站很有用, 例如 kakao.com [default: False]
-mt, --concurrent-download 并发下载已选择的音频、视频和字幕 [default: False]
-H, --header 为HTTP请求设置特定的请求头, 例如:
-H "Cookie: mycookie" -H "User-Agent: iOS"
--sub-only 只选取字幕轨道 [default: False]
--sub-format 字幕输出类型 [default: SRT]
--auto-subtitle-fix 自动修正字幕 [default: True]
--ffmpeg-binary-path ffmpeg可执行程序全路径, 例如 C:\Tools\ffmpeg.exe
--log-level 设置日志级别 [default: INFO]
--ui-language 设置UI语言
--urlprocessor-args 此字符串将直接传递给URL Processor
--key 设置解密密钥, 程序调用mp4decrpyt/shaka-packager/ffmpeg进行解密. 格式:
--key KID1:KEY1 --key KID2:KEY2
对于KEY相同的情况可以直接输入 --key KEY
--key-text-file 设置密钥文件,程序将从文件中按KID搜寻KEY以解密.(不建议使用特大文件)
--decryption-engine 设置解密时使用的第三方程序 [default: MP4DECRYPT]
--decryption-binary-path MP4解密所用工具的全路径, 例如 C:\Tools\mp4decrypt.exe
--mp4-real-time-decryption 实时解密MP4分片 [default: False]
-R, --max-speed 设置限速,单位支持 Mbps 或 Kbps,如:15M 100K
-M, --mux-after-done 所有工作完成时尝试混流分离的音视频. 输入 "--morehelp mux-after-done" 以查看详细信息
--custom-hls-method 指定HLS加密方式 (AES_128|AES_128_ECB|CENC|CHACHA20|NONE|SAMPLE_AES|SAMPLE_AES_CTR|UNKNOWN)
--custom-hls-key 指定HLS解密KEY. 可以是文件, HEX或Base64
--custom-hls-iv 指定HLS解密IV. 可以是文件, HEX或Base64
--use-system-proxy 使用系统默认代理 [default: True]
--custom-proxy 设置请求代理, 如 http://127.0.0.1:8888
--custom-range 仅下载部分分片. 输入 "--morehelp custom-range" 以查看详细信息
--task-start-at 在此时间之前不会开始执行任务
--live-perform-as-vod 以点播方式下载直播流 [default: False]
--live-real-time-merge 录制直播时实时合并 [default: False]
--live-keep-segments 录制直播并开启实时合并时依然保留分片 [default: True]
--live-pipe-mux 录制直播并开启实时合并时通过管道+ffmpeg实时混流到TS文件 [default: False]
--live-fix-vtt-by-audio 通过读取音频文件的起始时间修正VTT字幕 [default: False]
--live-record-limit 录制直播时的录制时长限制
--live-wait-time 手动设置直播列表刷新间隔
--live-take-count 手动设置录制直播时首次获取分片的数量 [default: 16]
--mux-import 混流时引入外部媒体文件. 输入 "--morehelp mux-import" 以查看详细信息
-sv, --select-video 通过正则表达式选择符合要求的视频流. 输入 "--morehelp select-video" 以查看详细信息
-sa, --select-audio 通过正则表达式选择符合要求的音频流. 输入 "--morehelp select-audio" 以查看详细信息
-ss, --select-subtitle 通过正则表达式选择符合要求的字幕流. 输入 "--morehelp select-subtitle" 以查看详细信息
-dv, --drop-video 通过正则表达式去除符合要求的视频流.
-da, --drop-audio 通过正则表达式去除符合要求的音频流.
-ds, --drop-subtitle 通过正则表达式去除符合要求的字幕流.
--ad-keyword 设置广告分片的URL关键字(正则表达式)
--disable-update-check 禁用版本更新检测 [default: False]
--allow-hls-multi-ext-map 允许HLS中的多个#EXT-X-MAP(实验性) [default: False]
--morehelp 查看某个选项的详细帮助信息
-?, -h, --help Show help and usage information
--version Show version information
点击查看More Help
More Help:
--mux-after-done
所有工作完成时尝试混流分离的音视频. 你能够以:分隔形式指定如下参数:
- format=FORMAT: 指定混流容器 mkv, mp4
- muxer=MUXER: 指定混流程序 ffmpeg, mkvmerge (默认: ffmpeg)
- bin_path=PATH: 指定程序路径 (默认: 自动寻找)
- skip_sub=BOOL: 是否忽略字幕文件 (默认: false)
- keep=BOOL: 混流完成是否保留文件 true, false (默认: false)
例如:
混流为mp4容器
-M format=mp4
使用mkvmerge, 自动寻找程序
-M format=mkv:muxer=mkvmerge
使用mkvmerge, 自定义程序路径
-M format=mkv:muxer=mkvmerge:bin_path="C\:\Program Files\MKVToolNix\mkvmerge.exe"
More Help:
--mux-import
混流时引入外部媒体文件. 你能够以:分隔形式指定如下参数:
- path=PATH: 指定媒体文件路径
- lang=CODE: 指定媒体文件语言代码 (非必须)
- name=NAME: 指定媒体文件描述信息 (非必须)
例如:
引入外部字幕
--mux-import path=zh-Hans.srt:lang=chi:name="中文 (简体)"
引入外部音轨+字幕
--mux-import path="D\:\media\atmos.m4a":lang=eng:name="English Description Audio" --mux-import path="D\:\media\eng.vtt":lang=eng:name="English (Description)"
More Help:
--select-video
通过正则表达式选择符合要求的视频流. 你能够以:分隔形式指定如下参数:
id=REGEX:lang=REGEX:name=REGEX:codecs=REGEX:res=REGEX:frame=REGEX
segsMin=number:segsMax=number:ch=REGEX:range=REGEX:url=REGEX
plistDurMin=hms:plistDurMax=hms:for=FOR
- for=FOR: 选择方式. best[number], worst[number], all (默认: best)
例如:
选择最佳视频
-sv best
选择4K+HEVC视频
-sv res="3840*":codecs=hvc1:for=best
选择长度大于1小时20分钟30秒的视频
-sv plistDurMin="1h20m30s":for=best
More Help:
--select-audio
通过正则表达式选择符合要求的音频流. 参考 --select-video
例如:
选择所有音频
-sa all
选择最佳英语音轨
-sa lang=en:for=best
选择最佳的2条英语(或日语)音轨
-sa lang="ja|en":for=best2
More Help:
--select-subtitle
通过正则表达式选择符合要求的字幕流. 参考 --select-video
例如:
选择所有字幕
-ss all
选择所有带有"中文"的字幕
-ss name="中文":for=all
More Help:
--custom-range
下载点播内容时, 仅下载部分分片.
例如:
下载[0,10]共11个分片
--custom-range 0-10
下载从序号10开始的后续分片
--custom-range 10-
下载前100个分片
--custom-range -99
下载第5分钟到20分钟的内容
--custom-range 05:00-20:00
More Help:
--save-pattern
使用变量设置输出文件命名模板. 支持的变量:
- : 用户指定的保存名称 (--save-name)
- : 流的任务ID
- : 编解码器信息 (例如: avc1.64001f, mp4a.40.2)
- : 语言代码 (例如: en, zh-CN)
- : 视频分辨率 (例如: 1920x1080)
- : 流的带宽/比特率
- : 媒体类型 (VIDEO, AUDIO, SUBTITLES)
- : 音频声道配置
- : 帧率
- : 视频色域/HDR信息 (SDR, HDR10等)
- : 流组标识符
使用场景:
当下载多个相同类型的流时(例如多个不同分辨率的视频),使用此选项可以避免文件名冲突。
例如:
下载1080p和720p视频,文件名包含分辨率
--save-pattern "_" --save-name "video"
输出: video_1920x1080.mp4, video_1280x720.mp4
包含带宽信息
--save-pattern "__kbps"
输出: video_1920x1080_5000000kbps.mp4
下载多个音频流,包含语言和声道
--save-pattern "__ch"
输出: audio_en_2ch.m4a, audio_es_2ch.m4a, audio_en_6ch.m4a
复杂模板
--save-pattern "___"
输出: VIDEO_1920x1080_avc1.64001f_en.mp4
注意:
如果不使用 --save-pattern,程序会在文件名冲突时自动使用流的元数据(分辨率、带宽等)
生成唯一的文件名,而不是简单地添加 ".copy" 后缀。
其他
从 v0.1.5 开始,可以尝试开启live-pipe-mux 来代替以上命令
[!NOTE]
如果网络环境不够稳定,请不要开启 live-pipe-mux。管道内数据读取由 ffmpeg 负责,在某些环境下容易丢失直播数据。
从 v0.1.8 开始,能够通过设置环境变量 RE_LIVE_PIPE_OPTIONS 来改变 live-pipe-mux 时 ffmpeg 的某些选项:
---
免责声明
本软件基于 MIT License 开源,按"原样"提供,不附带任何明示或暗示的保证(包括但不限于对适销性、特定用途适用性的保证)。在任何情况下,作者均不对因使用本软件而产生的任何直接或间接损失承担责任。
合法使用
本软件仅用于学习和技术研究目的。使用者应遵守所在国家或地区的法律法规,仅下载和获取拥有合法权限的流媒体内容。任何非法或侵权使用行为均与原作者无关,使用者需自行承担全部法律责任。
---
