@ww_nero/skills 3.4.0 → 3.5.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.
@@ -1,174 +1,141 @@
1
- 视频处理的技巧指导
1
+ 制作视频的完整步骤如下(可根据当前实际状态,跳过部分已经完成的环节):
2
2
 
3
- 本指南涵盖常见的视频处理场景,所有操作均基于 ffmpeg 命令行工具实现。
3
+ **重要说明**:本指南仅适用于**定格动画风格**的视频制作,即通过若干静态图片按顺序拼接成视频。如需制作**连续变化、流畅过渡**的视频(如人物动作、场景变换等),建议使用以下专业工具:
4
+ - AI视频生成工具:Sora、Kling、Runway、Pika等
5
+ - 专业视频剪辑软件:Adobe Premiere Pro、Final Cut Pro、DaVinci Resolve等
4
6
 
5
7
  ---
6
8
 
7
- ## 1. 添加字幕
9
+ ## 一、规划视频内容
8
10
 
9
- 完整流程如下:
11
+ **确定视频结构**,存储到markdown文件中:
12
+ - 视频主题和整体风格
13
+ - 分镜脚本:每个画面的内容描述、旁白/字幕文本
14
+ - 背景音乐需求(如有)
10
15
 
11
- **步骤 1:提取音频**
12
- ```bash
13
- ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 2 audio.mp3
14
- ```
16
+ ## 二、生成配音并获取时间戳
15
17
 
16
- **步骤 2:语音转字幕**
17
- 使用 ASR 工具(如 mcp__media__asr)将音频转换为 SRT 字幕文件。
18
+ 由于语音的时长难以精确控制,应**先生成配音,再根据音频时长编排画面**。
18
19
 
19
- **步骤 3:翻译字幕(可选)**
20
- 如需翻译字幕,可在此步骤对 SRT 文件内容进行语言转换。
20
+ 1. **准备旁白文本**:根据分镜脚本整理完整的旁白内容
21
+ 2. **使用语音合成工具生成语音**:将文本转为音频文件
22
+ 3. **使用语音识别工具获取时间戳**:对生成的音频进行识别,获取带时间戳的SRT字幕文件
23
+ 4. **根据时间戳规划画面**:根据SRT文件中每段文字的起止时间,确定每张图片的显示时长
21
24
 
22
- **步骤 4:移除原有字幕(如有)**
23
- ```bash
24
- # 查看视频流信息
25
- ffprobe -i input.mp4
26
-
27
- # 移除内嵌字幕流(保留视频和音频)
28
- ffmpeg -i input.mp4 -map 0:v -map 0:a -c copy output_no_sub.mp4
29
- ```
25
+ ## 三、准备图片素材
30
26
 
31
- **步骤 5:烧录字幕到视频**
32
- ```bash
33
- # 软字幕(可关闭)
34
- ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4
27
+ 根据语音识别工具返回的时间戳信息准备图片:
35
28
 
36
- # 硬字幕(烧录到画面)
37
- ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt:force_style='FontSize=24,FontName=Microsoft YaHei'" -c:a copy output.mp4
38
- ```
29
+ 1. **收集或生成图片**:
30
+ - 优先使用用户提供的图片素材
31
+ - 如需生成图片,使用图像生成工具创建
32
+ 2. **图片规格要求**:
33
+ - 所有图片保存到`images`文件夹
34
+ - 建议使用统一的分辨率(如1920x1080或1280x720)
35
+ - 图片命名规则:`frame_01.png`、`frame_02.png`等,按播放顺序编号
39
36
 
40
- ---
37
+ ## 四、使用ffmpeg合成视频
41
38
 
42
- ## 2. 视频剪辑
39
+ ### 基础图片序列转视频
43
40
 
44
- **截取片段**
45
41
  ```bash
46
- # 从第 10 秒开始,截取 30 秒
47
- ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c copy output.mp4
48
-
49
- # 精确截取(需重新编码)
50
- ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:40 -c:v libx264 -c:a aac output.mp4
42
+ # 将图片序列转为视频(每张图片显示2秒)
43
+ ffmpeg -framerate 0.5 -i images/frame_%02d.png -c:v libx264 -pix_fmt yuv420p -r 30 output.mp4
51
44
  ```
52
45
 
53
- **移除片段**
54
- ```bash
55
- # 保留 0-10s 20s-结尾,移除中间 10-20s
56
- ffmpeg -i input.mp4 -vf "select='not(between(t,10,20))',setpts=N/FRAME_RATE/TB" -af "aselect='not(between(t,10,20))',asetpts=N/SR/TB" output.mp4
57
- ```
46
+ 参数说明:
47
+ - `-framerate 0.5`:输入帧率,0.5表示每张图片持续2秒(1/0.5=2秒)
48
+ - `-i images/frame_%02d.png`:输入图片序列,%02d表示两位数编号
49
+ - `-c:v libx264`:使用H.264编码
50
+ - `-pix_fmt yuv420p`:像素格式,确保兼容性
51
+ - `-r 30`:输出帧率30fps
58
52
 
59
- **合并视频**
60
- ```bash
61
- # 创建文件列表 files.txt:
62
- # file 'part1.mp4'
63
- # file 'part2.mp4'
64
- ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4
65
- ```
53
+ ### 添加背景音乐
66
54
 
67
- **调整速度**
68
55
  ```bash
69
- # 2 倍速
70
- ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -filter:a "atempo=2.0" output.mp4
56
+ # 合成视频和背景音乐
57
+ ffmpeg -i video.mp4 -i bgm.mp3 -c:v copy -c:a aac -shortest output_with_bgm.mp4
71
58
  ```
72
59
 
73
- ---
74
-
75
- ## 3. 视频理解
60
+ ### 添加配音
76
61
 
77
- 对于视频内容理解,推荐采用 **抽帧 + 图像理解** 的方式:
78
-
79
- **适用范围**
80
- - 仅适用于短视频(小于 1 分钟)
81
- - 建议每 5 秒抽取 1 帧
82
-
83
- **抽帧命令**
84
62
  ```bash
85
- # 每 5 秒抽取 1 帧
86
- ffmpeg -i input.mp4 -vf "fps=1/5" frame_%03d.png
87
-
88
- # 指定起止时间抽帧
89
- ffmpeg -i input.mp4 -ss 00:00:00 -to 00:01:00 -vf "fps=1/5" frame_%03d.png
63
+ # 合成视频和配音
64
+ ffmpeg -i video.mp4 -i narration.mp3 -c:v copy -c:a aac -map 0:v -map 1:a output_with_voice.mp4
90
65
  ```
91
66
 
92
- **理解流程**
93
- 1. 使用上述命令抽取关键帧
94
- 2. 使用图像理解工具(如视觉模型)逐帧分析
95
- 3. 综合各帧信息得出视频内容理解
96
-
97
- ---
98
-
99
- ## 4. 视频生成
67
+ ### 添加字幕
100
68
 
101
- 视频生成需要专业的 AI 视频生成工具,建议使用:
69
+ 1. **准备字幕文件**(SRT格式),例如`subtitles.srt`:
70
+ ```
71
+ 1
72
+ 00:00:00,000 --> 00:00:03,000
73
+ 这是第一段字幕
102
74
 
103
- - **可灵 (Kling)** - 快手旗下视频生成工具
104
- - **Sora** - OpenAI 视频生成模型
105
- - **通义万相** - 阿里云视频生成工具
106
- - **Runway Gen-3** - 专业视频生成平台
75
+ 2
76
+ 00:00:03,000 --> 00:00:06,000
77
+ 这是第二段字幕
78
+ ```
107
79
 
108
- 当前工具链不支持视频生成功能。
80
+ 2. **烧录字幕到视频**:
81
+ ```bash
82
+ # 硬字幕(字幕嵌入视频画面)
83
+ ffmpeg -i video.mp4 -vf "subtitles=subtitles.srt:force_style='FontName=Microsoft YaHei,FontSize=24,PrimaryColour=&HFFFFFF&'" -c:a copy output_with_sub.mp4
84
+ ```
109
85
 
110
- ---
86
+ ### 完整合成示例
111
87
 
112
- ## 5. 视频内容编辑
88
+ ```bash
89
+ # 一次性合成:图片序列 + 配音 + 字幕
90
+ ffmpeg -framerate 0.5 -i images/frame_%02d.png -i narration.mp3 \
91
+ -c:v libx264 -pix_fmt yuv420p -r 30 \
92
+ -vf "subtitles=subtitles.srt:force_style='FontName=Microsoft YaHei,FontSize=24'" \
93
+ -c:a aac -shortest output_final.mp4
94
+ ```
113
95
 
114
- **重要提示:不支持逐帧编辑**
96
+ ## 五、注意事项
115
97
 
116
- 如果需要对视频内容进行逐帧编辑(如使用图像编辑工具修改每一帧),成本极高,不建议执行。原因:
117
- - 一分钟 30fps 视频有 1800 帧
118
- - 逐帧编辑耗时耗力,效果难以保证一致性
98
+ 1. **图片尺寸一致性**:所有图片必须使用相同的分辨率,否则ffmpeg可能报错
99
+ 2. **图片编号连续**:图片序列编号必须连续,不能有间断(如01、02、04会导致03之后的图片被忽略)
100
+ 3. **中文字幕字体**:使用中文字幕时需指定支持中文的字体(如Microsoft YaHei、SimHei等)
101
+ 4. **音视频同步**:使用`-shortest`参数可让视频在音频或视频任一结束时停止
102
+ 5. **文件格式**:输出建议使用MP4格式(H.264+AAC),兼容性最好
119
103
 
120
- **替代方案**
121
- - 使用专业视频编辑软件:Adobe Premiere、DaVinci Resolve、Final Cut Pro
122
- - 使用 AI 视频编辑工具:Runway、Pika Labs
104
+ ## 六、进阶技巧
123
105
 
124
- ---
106
+ ### 不同图片不同持续时间
125
107
 
126
- ## 6. 其他常用操作
108
+ 如需每张图片显示不同时长,可使用concat方式:
127
109
 
128
- **格式转换**
129
- ```bash
130
- ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
110
+ 1. 创建`input.txt`文件:
131
111
  ```
132
-
133
- **调整分辨率**
134
- ```bash
135
- ffmpeg -i input.mp4 -vf "scale=1920:1080" -c:a copy output.mp4
112
+ file 'images/frame_01.png'
113
+ duration 3
114
+ file 'images/frame_02.png'
115
+ duration 2
116
+ file 'images/frame_03.png'
117
+ duration 4
118
+ file 'images/frame_03.png'
136
119
  ```
120
+ 注意:最后一个文件需要重复一次(ffmpeg的concat demuxer要求)
137
121
 
138
- **提取视频(无音频)**
122
+ 2. 执行合成:
139
123
  ```bash
140
- ffmpeg -i input.mp4 -an -c:v copy output.mp4
124
+ ffmpeg -f concat -i input.txt -c:v libx264 -pix_fmt yuv420p -r 30 output.mp4
141
125
  ```
142
126
 
143
- **添加/替换音频**
144
- ```bash
145
- ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4
146
- ```
127
+ ### 添加转场效果
147
128
 
148
- **生成 GIF**
149
- ```bash
150
- ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos" -t 5 output.gif
151
- ```
129
+ ffmpeg支持简单的转场效果(如淡入淡出):
152
130
 
153
- **旋转视频**
154
131
  ```bash
155
- # 顺时针旋转 90 度
156
- ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
132
+ # 添加淡入效果(前2秒)
133
+ ffmpeg -i video.mp4 -vf "fade=t=in:st=0:d=2" -c:a copy output_fade.mp4
134
+
135
+ # 添加淡出效果(最后2秒,假设视频10秒)
136
+ ffmpeg -i video.mp4 -vf "fade=t=out:st=8:d=2" -c:a copy output_fade.mp4
157
137
  ```
158
138
 
159
139
  ---
160
140
 
161
- ## 能力边界说明
162
-
163
- **可以执行的操作**
164
- - 所有基于 ffmpeg 的视频处理操作
165
- - 结合 ASR 实现字幕生成
166
- - 抽帧后进行图像分析
167
-
168
- **无法执行的操作**
169
- - 视频生成(建议使用专业工具)
170
- - 逐帧内容编辑(成本过高)
171
- - 复杂特效制作(建议使用 After Effects 等)
172
- - 实时视频处理
173
-
174
- 如遇到无法实现的需求,建议使用更专业的视频处理工具。
141
+ **完成后建议保留**:规划文档、图片素材、字幕文件和音频文件,方便后续修改调整。
package/index.js CHANGED
@@ -149,7 +149,7 @@ const listTools = () => ({
149
149
  },
150
150
  {
151
151
  name: 'video',
152
- description: '视频处理(如添加字幕)的指导说明和注意事项',
152
+ description: '制作视频的全流程指导说明和注意事项',
153
153
  inputSchema: {
154
154
  type: 'object',
155
155
  properties: {},
@@ -159,7 +159,7 @@ const listTools = () => ({
159
159
  ]
160
160
  });
161
161
 
162
- const server = new Server({ name: 'skills', version: '3.4.0' }, { capabilities: { tools: {} } });
162
+ const server = new Server({ name: 'skills', version: '3.5.0' }, { capabilities: { tools: {} } });
163
163
 
164
164
  server.setRequestHandler(ListToolsRequestSchema, async () => listTools());
165
165
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ww_nero/skills",
3
- "version": "3.4.0",
3
+ "version": "3.5.0",
4
4
  "description": "MCP server that returns Python reference snippets and skill guides",
5
5
  "main": "index.js",
6
6
  "bin": {