dsh-media-converter 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,15 +16,15 @@ DeepSeek Harness 的本地多媒体工具箱插件:转换、裁剪、提取音
16
16
  | 元数据 | 查看容器、章节、逐轨参数与全部标签;改写标题/作者/专辑/备注/日期/流派(另存为新文件) |
17
17
  | Base64 | 当前文件 → `data:` URL;或粘贴 Base64 还原成文件 / 文本 |
18
18
  | 批量处理 | 按类型分组:视频/音频/图片各自一个目标;文本单独一段、不参与转换;读取中/未识别单独一段;逐组全选/质量、逐行进度/结果/取消 |
19
- | PTC 调度 | 批量转换可选:在 DSH 已注册模型里选一个(默认跟随主模型),模型只返回每文件 JSON 计划,宿主校验后交给 PTC 沙箱执行;低推理档、分阶段进度;默认关,耗 token |
19
+ | PTC 调度 | 批量转换可选:在 DSH 已注册模型里选一个(默认跟随主模型),模型只返回每文件 JSON 计划,宿主校验后交给 PTC 沙箱执行;整批按组多次求值,可超过单次 10 分钟上限;批次由宿主持有,切会话/关页面后继续;低推理档、分阶段进度;默认关,耗 token |
20
20
  | GPU / 直接拷贝 | macOS VideoToolbox 的 H.264 可勾选 GPU 编码(mp4/mov/mkv/flv/ts);兼容编码/容器直接 `-c copy`,不重编码 |
21
21
  | 取消 | 批量中途取消停当前 ffmpeg 并不再排队;单文件任务可随时取消;上传中也能中断传输 |
22
22
 
23
23
  界面分两层:**队列**是首页,负责一次处理多个文件;点某一行进入**文件详情**,那里是单个文件的操作页。
24
24
 
25
- - **队列**:拖入或选择多个文件 → 可转换的默认勾选 → 顶部「批量处理」卡选处理方式(转换 / 提取音频 / 提取画面)、PTC/GPU;目标格式和图片质量在各自的类型组标题里。每一行有自己的上传/处理状态、进度、结果与「显示」;可全选、按组全选、取消勾选、移除、清空(两步确认)。
25
+ - **队列**:拖入或选择多个文件 → 可转换的默认勾选 → 顶部「批量处理」卡选处理方式(转换 / 提取音频 / 提取画面)、PTC/GPU;目标格式和图片质量在各自的类型组标题里。每一行有自己的上传/处理状态、进度、结果与「显示」;可全选、按组全选、取消勾选、移除、清空(两步确认)。除了原生选择器和拖拽,面板还支持**从路径添加**:宿主直接浏览本机目录并登记绝对路径,几百个文件不经过浏览器上传、也不复制文件(登记的文件属于用户,永远不会被插件删除)。可浏览范围限于家目录、`/Volumes`、临时目录和输出目录;点文件不列出。
26
26
  - **文件详情**:点某行的「详情」进入。这里是单文件工作台:预览/图片对比、搜索、按「转换 / 编辑 / 查看」分组的动作网格(转格式、裁一段、提取、字幕、元数据、Base64),参数就地展开、结果就地显示。`⌘K` 聚焦搜索,回车执行第一个动作,Esc 收起;「返回队列」保留队列与结果。
27
- - **处理范围**:批量动作只处理勾选的可转换行;文本、读取中、未识别不参与批量;详情页的动作只处理当前打开的那个文件。PTC 只出现在批量转换面板,且勾选 ≥2 时才可用;打开后才出现模型下拉,进度分“模型决定中”和“转换 N/M”两段;单个文件不走 PTC。
27
+ - **处理范围**:批量动作只处理勾选的可转换行;文本、读取中、未识别不参与批量;详情页的动作只处理当前打开的那个文件。PTC 只出现在批量转换面板,且勾选 ≥2 时才可用;打开后才出现模型下拉,进度分“模型决定中”和“转换 N/M”两段;单个文件不走 PTC。PTC 批次由宿主执行,切走会话或关掉页面都会继续,重新打开会恢复进度。
28
28
 
29
29
  ## 批量、调度、GPU 与 PTC
30
30
 
@@ -33,7 +33,7 @@ DeepSeek Harness 的本地多媒体工具箱插件:转换、裁剪、提取音
33
33
  - **自适应 CPU 调度**:[lib/schedule.ts](lib/schedule.ts) 每秒用 `os.cpus()` 的差值采样,EMA 平滑;平滑使用率 >60% 只跑 1 个,35–60% 2 个,<35% 最多 4 个。任务权重:视频 1、音频/图片 0.5、copy 0.25、GPU 0.5;GPU 另限 2 路。容量 >1 时给每个软件编码 ffmpeg 分 `-threads/-filter_threads`;运行中的任务不抢占。
34
34
  - **GPU(VideoToolbox)**:macOS 上安装的 ffmpeg 若带 `h264_videotoolbox`,批量卡出现“GPU 编码(VideoToolbox)”。对 mp4/mov/mkv/flv/ts 的 H.264 用硬件编码 + `-hwaccel videotoolbox`;按源码率估 `-b:v/-maxrate/-bufsize`,带 `-allow_sw 1`。WebM/VP9/AV1、图片、音频没有对应硬件编码,仍走 CPU;探测不到就隐藏开关。
35
35
  - **直接拷贝**:h264/hevc + aac/mp3 等兼容组合直接 `-c copy`(mp4/mov/mkv/webm/ts 与同编码音频容器),有裁剪或编码不兼容才重编码;行上显示“直接拷贝”。
36
- - **PTC 可选模型**:默认跟随 DSH 当前主模型;下拉列出已注册模型;显式模型不在目录里会报错,不回退默认。对选中模型取最低推理档,`maxTokens` 6000;模型只返回 `{"files":[{"id","format","quality"}...]}`,宿主校验 id/格式/质量后拼程序交给 PTC 执行。
36
+ - **PTC 可选模型**:默认跟随 DSH 当前主模型;下拉列出已注册模型;显式模型不在目录里会报错,不回退默认。对选中模型取最低推理档,`maxTokens` 6000;模型只返回 `{"files":[{"id","format","quality"}...]}`,宿主校验 id/格式/质量后拼程序交给 PTC 执行。分组和时限都按实际情况动态算:每个文件的耗时由本机实测吞吐(copy / 硬件编码 / 视频 / 音频各自维护,跑过的任务会持续校准)估算,按「整组估算 ≤ 运行时上限」装组;组内文件数上限随 CPU(约 4×核心数,夹在 4–64),并发波宽随当前 CPU 负载(4–16 个 binding 调用)。每组一次沙箱求值、各自限时,整批可以超过单次 10 分钟;面板会显示基于同一估算的剩余时间。
37
37
  - **实测**(10 秒 1080p30 合成样本,机器负载约 4.6;不是你的真实文件):
38
38
 
39
39
  | 路径 | 耗时 | 输出 | VMAF |
@@ -208,8 +208,8 @@ React 只剩一个壳:把 `<media-panel>` 挂进槽位并传 `t`。面板本
208
208
  - 视频转 GIF 会缩到宽 640、12 fps。
209
209
  - 批量按类型分组:视频/音频/图片各自一个目标;文本单独一段、不参与转换;读取中/未识别不可批量。
210
210
  - 批量提取只处理视频;不适用或没有音轨的行标「跳过」,不算失败。
211
- - 固定规则批量逐行串行;PTC 批量走自适应 CPU 队列(1–4 路,GPU 另限 2 路);上传中或处理中不能增删文件。
212
- - PTC 只用于批量转换且至少 2 个文件;默认关,开关不随页面保存。可选已注册模型;模型只返回每文件计划;每次运行仍会调用一次主模型(消耗 token);执行时限默认 2 分钟、最长 10 分钟,超时会整批中止。
211
+ - 固定规则批量逐行串行;PTC 批量走自适应 CPU 队列(1–4 路,GPU 另限 2 路),并按组多次沙箱求值;上传中或处理中不能增删文件。
212
+ - PTC 只用于批量转换且至少 2 个文件;默认关,开关不随页面保存。可选已注册模型;模型只返回每文件计划;每次运行仍会调用一次主模型(消耗 token);单次求值默认 2 分钟、最长 10 分钟;整批会拆成多组,因此可以超过 10 分钟。
213
213
  - PTC 不提供改分辨率、合并或 remux 参数;GPU 只覆盖 H.264 的 mp4/mov/mkv/flv/ts;直接拷贝只覆盖兼容的编码/容器矩阵。
214
214
  - 上传的临时副本保留 2 小时后自动删除。
215
215
  - Windows 上「在资源管理器中显示」用 `explorer /select,`,macOS 用 `open -R`,Linux 用 `xdg-open`(打开所在目录)。
@@ -226,6 +226,6 @@ React 只剩一个壳:把 `<media-panel>` 挂进槽位并传 `t`。面板本
226
226
  [dsh-media-converter] upload failed: aborted # 连接中断
227
227
  ```
228
228
 
229
- PTC 批量在点「开始处理」时才检查运行时与模型服务:缺任何一个会立即在批量卡里报错,不会退回固定规则。运行中关闭页面会中止 PTC 与在跑的 ffmpeg。
229
+ PTC 批量在点「开始处理」时才检查运行时与模型服务:缺任何一个会立即在批量卡里报错,不会退回固定规则。批次由宿主持有:切会话或关闭页面后继续执行,重新打开会恢复进度;取消走同一套信号,沙箱与 ffmpeg 一起停。
230
230
 
231
231
  宿主的这些行在 DSH 的日志里;改了 `index.ts` 之后必须 `npm run build:host` 并**重启 DSH**才会生效(运行中的宿主用的是启动时那份代码)。