Skip to content

Iori Minyami 0.1.0 发布

Published: at 06:46

大家好,好久不见,这里是某昨。

随着 iori 的日渐完善,在补齐了 SAMPLE-AES 解密和 DASH Archive 下载两块拼图之后,我们终于可以简单发布一下这个项目的过程中出生的一些能用的工具了。

简介

iori-minyami 的设计目标是以 iori 为核心下载组件,通过 Rust 编写以保证其高效运行,在参数上保持对 Minyami 的兼容性,并通过一些额外的参数实现 Minyami 原版尚不支持的其他特性。

iori-minyami 支持的额外特性有:

ToC

安装

本文基于 0.1.0 版本编写,因此也选择 0.1.0 版本进行讲解。

其他版本不会变更安装方式,请举一反三食用。

在安装上,iori-minyami 没有任何依赖,以单个可执行文件的方式进行分发,下载后就可以直接运行使用。你需要做的就是在 GitHub Release 上下载最新版本的 iori-minyami

首先,访问 https://github.com/Yesterday17/iori/releases/tag/minyami-v0.1.0 ,然后根据你的操作系统选择对应的二进制文件进行下载。

下载完成后解压对应的压缩包,你就可以拿到一个美味的 minyami.exe 了。对于 Windows 用户,这里强烈建议将 minyami.exe 放置在 PATH 环境变量下辖的目录中,这样就可以直接通过 minyami 来使用了。

运行

在拿到 minyami 的可执行文件后,打开终端/命令提示符,启动:

Terminal window
minyami --help

就可以拿到下面这样的帮助文本了:

Terminal window
$ minyami --help
Usage: minyami [OPTIONS] <M3U8>
Arguments:
<M3U8>
m3u8 file path
Options:
--verbose
Debug output
88 collapsed lines
--threads <THREADS>
Threads limit
[default: 5]
--retries <RETRIES>
Retry limit
[default: 5]
--manifest-retries <MANIFEST_RETRIES>
[default: 3]
-o, --output <OUTPUT>
Output file path
Default: output.ts
--temp-dir <TEMP_DIR>
Temporary file path
[env: TEMP=]
--key <KEY>
Set key manually (Internal use)
(Optional) Key for decrypt video.
--cookies <COOKIES>
Cookies used to download
-H, --headers <HEADERS>
HTTP Header used to download
Custom header. eg. "User-Agent: xxxxx". This option will override --cookies.
--live
Download live
--format <FORMAT>
[Unimplemented] (Optional) Set output format. default: ts Format name. ts or mkv
--proxy <PROXY>
[Unimplemented] Use the specified HTTP/HTTPS/SOCKS5 proxy
Set proxy in [protocol://<host>:<port>] format. eg. --proxy "http://127.0.0.1:1080".
--slice <SLICE>
[Unimplemented] Download specified part of the stream
Set time range in [<hh:mm:ss>-<hh:mm:ss> format]. eg. --slice "45:00-53:00"
--no-merge
Do not merge m3u8 chunks
-k, --keep
Keep temporary files
--keep-encrypted-chunks
[Unimplemented] Do not delete encrypted chunks after decryption
--chunk-naming-strategy <CHUNK_NAMING_STRATEGY>
[Unimplemented] Temporary file naming strategy. Defaults to 1.
MIXED = 0, USE_FILE_SEQUENCE = 1, USE_FILE_PATH = 2,
[default: 1]
--range <RANGE>
[Iori Argument] Specify segment range to download in archive mode
[default: -]
--timeout <TIMEOUT>
[Iori Argument] Timeout seconds for each manifest/segment request. Defaults to 10 seconds
[default: 10]
--resume-dir <RESUME_DIR>
[Iori Argument] Specify the resume folder path
--pipe
[Iori Argument] If set, the program will try to work in a pipe mode.
The pipe mode will pipe the downloaded segments to a specified file or stdout, depending on whether the --output option is explicitly set.
--dash
[Iori Argument] Download with dash format
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version

基础使用

由于 iori-minyami 的参数对 Minyami 保持兼容,因此你可以参考 Minyami 的相关教程食用。这里列出一些:

需要指出的是,iori-minyami 并不要求你提供 -d 参数,但也兼容这种写法。后文中我们会省略 -d 以保持命令的简单。

代理设置

与新版本 Minyami 一致,iori-minyami 会默认读取系统代理进行使用。如果你希望覆盖这个设置,你需要手动设置 https_proxy 环境变量:

Terminal window
# bash
export https_proxy=http://your-proxy-server:port
# cmd
set https_proxy=http://your-proxy-server:port

后续 iori-minyami 可能会考虑支持 --proxy 参数。

额外功能

iori-minyami 相比 Minyami 支持一些额外的特性,这里对其中比较试用的几个进行一下讲解。

管道输出

iori-minyami 支持管道输出,你可以通过 --pipe 参数来启用这个功能。在管道模式下,iori-minyami 将会将下载的片段直接输出到指定的文件或标准输出,具体取决于是否设置了 --output 参数。

下面列举几个可能的用法:

Terminal window
# 通过 iori-minyami 输出到 stdout 并播放
minyami <url> --live --pipe | ffplay -
# 搭配 tee 实现边录边放
minyami <url> --live --pipe | tee output.ts | ffplay - # or mpv -, ...
# 通过 iori-minyami 输出到 stdout 并提供给 ffmpeg 推流
minyami <url> --live --pipe | ffmpeg -i pipe:0 -c copy rtmp://your-rtmp-server/live/stream
# 通过管道的方式录制,不占用系统临时空间
minyami <url> --live --pipe --output output.ts

dash 模式

iori-minyami 部分支持 DASH 的下载,你只需要加上一个 --dash 参数即可使用:

Terminal window
minyami <url> --dash --output result.mkv

dash 模式下,minyami 需要调用 mkvmerge 进行最终产物的合并。请确保你的终端/命令提示符中能够正常运行 mkvmerge

dash 模式和 --pipe 参数的相性目前不是很好,建议生产环境下慎用该组合。但是欢迎测试(

DRM 解密

iori-minyami 支持下载 SAMPLE-AES-CTRSAMPLE-AES-CENCSAMPLE-AES 加密的 M3U8,且下载过程中不需要安装其他依赖程序。你可以通过 --key 参数来提供解密密钥:

iori-minyami 暂不支持调用 shaka-packager 进行解密。但由于 iori 本体是支持的,因此后续版本也可能会把这个功能也加上。

实例 ID

在一些情形下,我们可能会希望区分多个 iori-minyami 实例输出的日志。这时候就可以通过 INSTANCE_ID 环境变量来实现,例如:

Terminal window
export INSTANCE_ID=1
minyami <url> --live --pipe --output 1.ts

就会产生这样的输出:

Terminal window
INFO 1 iori::download::parallel > Start downloading with 5 thread(s).
INFO 1 iori::hls::utils > Start fetching M3U8 file.
INFO 1 iori::hls::utils > M3U8 file fetched.
INFO 1 iori::download::parallel > 100 new segments were added to queue.
INFO 1 iori::download::parallel > Processing seg_1.ts finished. (1 / 100 or 1.00%)
INFO 1 iori::download::parallel > Processing seg_4.ts finished. (2 / 100 or 2.00%)
INFO 1 iori::download::parallel > Processing seg_2.ts finished. (3 / 100 or 3.00%)
INFO 1 iori::download::parallel > Processing seg_0.ts finished. (4 / 100 or 4.00%)
INFO 1 iori::download::parallel > Processing seg_3.ts finished. (5 / 100 or 5.00%)
INFO 1 iori::download::parallel > Processing seg_7.ts finished. (6 / 100 or 6.00%)
INFO 1 iori::download::parallel > Processing seg_5.ts finished. (7 / 100 or 7.00%)
INFO 1 iori::download::parallel > Processing seg_6.ts finished. (8 / 100 or 8.00%)
INFO 1 iori::download::parallel > Processing seg_9.ts finished. (9 / 100 or 9.00%)
INFO 1 iori::download::parallel > Processing seg_12.ts finished. (10 / 100 or 10.00%)
INFO 1 iori::download::parallel > Processing seg_13.ts finished. (11 / 100 or 11.00%)
INFO 1 iori::download::parallel > Processing seg_14.ts finished. (12 / 100 or 12.00%)
INFO 1 iori::download::parallel > Processing seg_15.ts finished. (13 / 100 or 13.00%)
INFO 1 iori::download::parallel > Processing seg_8.ts finished. (14 / 100 or 14.00%)
INFO 1 iori::download::parallel > Processing seg_10.ts finished. (15 / 100 or 15.00%)
INFO 1 iori::download::parallel > Processing seg_11.ts finished. (16 / 100 or 16.00%)
INFO 1 iori::download::parallel > Processing seg_19.ts finished. (17 / 100 or 17.00%)
INFO 1 iori::download::parallel > Processing seg_20.ts finished. (18 / 100 or 18.00%)
# ...

如果有多个 minyami,就可以通过 Log Level 后面的 INSTANCE_ID 进行区分了。

结语

iori-minyami 作为 iori 项目中最早设计并实现的模块之一,见证了 iori 的成长与变化。它也是 iori 作为下载器核心孵化出的第一个下载器。希望它的出现能让大家在不改变原有习惯的情况下,享受到更多功能带来的便利(

在这里也特别感谢群友对 iori-minyami 以及相关衍生产品的使用与 Bug 反馈,iori 的稳定性全靠群友抓虫(

不久之后应该会发第二篇发布帖,是关于 ssadecrypt 的简单介绍,虽然我觉得大家都不会直接用到,但可以简单讲一下——


Previous Post
2025 新年解密红包 / Melody Flag