@ruck-plugins/ffmpeg-tools 0.0.0-stage → 1.0.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/assets/FiraCode-Regular-CRwVj4V2.woff2 +0 -0
- package/assets/Inter-Medium-9JPFU5u1.woff2 +0 -0
- package/assets/Inter-Regular-CBuHftWl.woff2 +0 -0
- package/assets/index-C8oRVsiI.css +1 -0
- package/assets/index-DBcSdRcb.js +7574 -0
- package/index.html +13 -0
- package/logo.png +0 -0
- package/package.json +12 -4
- package/plugin.json +66 -0
- package/preload.js +21 -0
- package/readme.md +49 -0
- package/README.md +0 -3
package/index.html
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>FFmpeg 视频工具箱</title>
|
|
7
|
+
<script type="module" crossorigin src="./assets/index-DBcSdRcb.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="./assets/index-C8oRVsiI.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="app"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
package/logo.png
ADDED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ruck-plugins/ffmpeg-tools",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"dependencies": {
|
|
6
|
+
"@lucide/vue": "^1.59.0",
|
|
7
|
+
"@ruck/sdk": "link:D:/github/ruck/packages/ruck-sdk",
|
|
8
|
+
"naive-ui": "^2.40.1",
|
|
9
|
+
"vfonts": "^0.0.3",
|
|
10
|
+
"vue": "^3.5.13"
|
|
11
|
+
},
|
|
12
|
+
"description": "简单直观的音视频处理利器:无损合并、快速截取、格式转换与压制、GIF 制作",
|
|
13
|
+
"author": "JIAHE"
|
|
14
|
+
}
|
package/plugin.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ruck-plugins/ffmpeg-tools",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"displayName": "FFmpeg 视频工具箱",
|
|
5
|
+
"description": "简单直观的音视频处理利器:无损合并、快速截取、格式转换与压制、GIF 制作",
|
|
6
|
+
"author": "JIAHE",
|
|
7
|
+
"pluginType": "ui",
|
|
8
|
+
"entry": "index.html",
|
|
9
|
+
"preload": "preload.js",
|
|
10
|
+
"logo": "logo.png",
|
|
11
|
+
"group": "media",
|
|
12
|
+
"height": 620,
|
|
13
|
+
"permissions": [
|
|
14
|
+
"file_system_read",
|
|
15
|
+
"file_system_write",
|
|
16
|
+
"notification",
|
|
17
|
+
{
|
|
18
|
+
"shell_execute": [
|
|
19
|
+
"ffmpeg",
|
|
20
|
+
"ffprobe",
|
|
21
|
+
"where",
|
|
22
|
+
"which"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"features": [
|
|
27
|
+
{
|
|
28
|
+
"code": "ffmpeg-tools",
|
|
29
|
+
"explain": "打开 FFmpeg 视频工具箱",
|
|
30
|
+
"cmds": [
|
|
31
|
+
"ffmpeg",
|
|
32
|
+
"视频工具箱",
|
|
33
|
+
"视频合并",
|
|
34
|
+
"视频转码",
|
|
35
|
+
"视频转换",
|
|
36
|
+
"视频剪辑",
|
|
37
|
+
"视频拆分",
|
|
38
|
+
"视频压制",
|
|
39
|
+
"提取音频",
|
|
40
|
+
"视频转gif",
|
|
41
|
+
{
|
|
42
|
+
"type": "files",
|
|
43
|
+
"label": "使用 FFmpeg 工具箱处理",
|
|
44
|
+
"fileType": "file",
|
|
45
|
+
"extensions": [
|
|
46
|
+
"mp4",
|
|
47
|
+
"mkv",
|
|
48
|
+
"avi",
|
|
49
|
+
"mov",
|
|
50
|
+
"flv",
|
|
51
|
+
"webm",
|
|
52
|
+
"ts",
|
|
53
|
+
"m4v",
|
|
54
|
+
"wmv",
|
|
55
|
+
"mp3",
|
|
56
|
+
"wav",
|
|
57
|
+
"aac",
|
|
58
|
+
"flac",
|
|
59
|
+
"m4a",
|
|
60
|
+
"ogg"
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
package/preload.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ruck Preload Script for ffmpeg-tools
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// 监听插件进入事件
|
|
6
|
+
if (window.ruck && typeof window.ruck.onPluginEnter === 'function') {
|
|
7
|
+
window.ruck.onPluginEnter(({ type, payload }) => {
|
|
8
|
+
window.dispatchEvent(new CustomEvent('ruck-ffmpeg-tools-enter', {
|
|
9
|
+
detail: { type, payload }
|
|
10
|
+
}));
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// 监听插件退出
|
|
15
|
+
if (window.ruck && typeof window.ruck.onPluginOut === 'function') {
|
|
16
|
+
window.ruck.onPluginOut((processExit) => {
|
|
17
|
+
if (processExit) {
|
|
18
|
+
console.log('ffmpeg-tools is being destroyed');
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# FFmpeg 视频多功能工具箱 (@ruck-plugins/ffmpeg-tools)
|
|
2
|
+
|
|
3
|
+
简洁、高效、开箱即用的现代多媒体音视频处理 Ruck 插件。无需死记硬背 FFmpeg 复杂的命令行参数,通过可视化交互即可轻松搞定格式转换、体积压制、快速无损剪切、多视频拼接、调色板优化高清 GIF 制作以及音频提取。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🌟 核心特性
|
|
8
|
+
|
|
9
|
+
- 🎬 **格式转换与智能压制 (Convert & Compress)**:
|
|
10
|
+
- 支持 MP4, MKV, WebM, MOV, AVI, FLV 等容器格式;
|
|
11
|
+
- 提供 H.264 / H.265 (HEVC) / VP9 等编码器自由切换;
|
|
12
|
+
- 智能画质 CRF 调节与分辨率重采样(1080P / 720P / 480P);
|
|
13
|
+
- 支持极速流拷贝无损转封装。
|
|
14
|
+
- ✂️ **视频剪切与分段拆分 (Trim & Split)**:
|
|
15
|
+
- **极速无损剪切 (`-c copy`)**:秒级导出,不损失画质;
|
|
16
|
+
- **精准到帧剪切**:重新编码,微秒级时间截取;
|
|
17
|
+
- **固定时长均分拆分**:将长视频切分为指定分钟的连续小视频。
|
|
18
|
+
- 🔗 **多视频无损与重编码合并 (Merge & Concat)**:
|
|
19
|
+
- 自由拖拽与调整视频先后顺序;
|
|
20
|
+
- 同编码规格下自动采用 Concat Demuxer 实现秒级无损合并;
|
|
21
|
+
- 不同分辨率规格下自动采用统一画幅重编码拼接。
|
|
22
|
+
- 🎨 **动图与音频实用工具箱 (GIF & Audio)**:
|
|
23
|
+
- **调色板优化高清 GIF**:内置双 pass `palettegen` + `paletteuse` 滤镜,告别传统 GIF 色块噪点;
|
|
24
|
+
- **提取纯音频**:一键提取 MP3, AAC, FLAC (无损), WAV,支持调节码率。
|
|
25
|
+
- ⚡ **实时进度与进程可控**:
|
|
26
|
+
- 实时解析 FFmpeg 标准输出日志,呈现精确进度百分比、转换速度与预计剩余时间;
|
|
27
|
+
- 支持一键安全取消中断任务;
|
|
28
|
+
- 处理完成后支持“在文件夹中定位”与“拖拽导出”。
|
|
29
|
+
- 🛠️ **完善的环境诊断与路径配置**:
|
|
30
|
+
- 启动自动检测本机环境变量;
|
|
31
|
+
- 支持在插件设置中指定自定义 FFmpeg / FFprobe 二进制路径。
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 💻 本地开发
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# 1. 进入插件目录
|
|
39
|
+
cd ffmpeg-tools
|
|
40
|
+
|
|
41
|
+
# 2. 安装依赖
|
|
42
|
+
pnpm install
|
|
43
|
+
|
|
44
|
+
# 3. 启动开发服务器
|
|
45
|
+
pnpm dev
|
|
46
|
+
|
|
47
|
+
# 4. 构建打包
|
|
48
|
+
pnpm build
|
|
49
|
+
```
|
package/README.md
DELETED