关于 ffmpeg-karaoke-animated-text
为视频创作者提供使用 FFmpeg 制作卡拉 OK 字幕和动态文字叠加的指导,涵盖 ASS 与 drawtext 的选择、命令示例及时间单位。
主要功能
- 01ASS 卡拉 OK 字幕效果
- 02drawtext 动态文字叠加
- 03说明 ASS 与 drawtext 的适用场景
- 04区分厘秒、毫秒与秒
- 05提供 FFmpeg 命令与工作流程
适用场景
- 01制作带逐词高亮的歌词字幕
- 02添加滚动演职员表或字幕条
- 03制作打字机文字、标题或倒计时
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ josiahsiegel/ claude-plugin-marketplace --skill ffmpeg-karaoke-animated-text安装后在 Claude Code 中输入/ffmpeg-karaoke-animated-text确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/drawtext-animation-recipes.mdkaraoke-ass-patterns.mdscrolling-credits-and-expressions.md详细介绍
关键指南
Windows 文件路径要求
必须:在 Windows 上始终使用反斜杠表示文件路径
在 Windows 上使用 Edit 或 Write 工具时,必须在文件路径中使用反斜杠(\),而不是正斜杠(/)。
FFmpeg 卡拉 OK 与动画文字
此技能适用于卡拉 OK 字幕、动态字体排印、滚动字幕、动画下三分之一字幕、打字机文字、计时器和动态文字叠加。回答务必实用:明确该使用 ASS 还是 drawtext,提供可直接复制粘贴的命令或 ASS 代码片段,并指出时间单位。
快速参考
| 效果 | 模式 |
|---|---|
| ASS 卡拉 OK | 使用 ASS 格式和 \k、\kf 或 \ko 时间标签 |
| 烧录卡拉 OK | ffmpeg -i input.mp4 -vf "ass=karaoke.ass" -c:v libx264 -crf 18 -c:a copy output.mp4 |
| 滚动字幕 | -vf "drawtext=textfile=credits.txt:y=h-80*t" |
| 打字机效果 | 使用 enable='gte(t,...)' 错开多个 drawtext 图层 |
| 文字淡入 | -vf "drawtext=text='Title':alpha='min(1,t/2)'" |
| 弹跳文字 | -vf "drawtext=text='Bounce':y='h/2+50*sin(t*5)'" |
| 移动文字 | -vf "drawtext=text='Move':x='w-mod(t*100,w+tw)'" |
| 旋转 | 使用 ASS(\frz、\frx、\fry);drawtext 不支持原生文字旋转 |
何时使用此技能
适用于动画文字和卡拉 OK:
- 带卡拉 OK 高亮效果的音乐视频歌词
- 电影风格滚动字幕
- 动画标题和下三分之一字幕
- 打字机文字显现效果
- 动态字体排印和单词弹出效果
- 倒计时器、秒表、帧计数器、时间码叠加
- 多行文字和由文本文件驱动的叠加内容
工具选择:ASS 还是 drawtext
| 需求 | 最佳工具 | 原因 |
|---|---|---|
| 单词/音节卡拉 OK 高亮 | ASS | 原生支持 \k、\kf、\ko |
| 带描边/辉光/旋转效果的字幕样式 | ASS | 字幕样式和变换标签丰富 |
| 简单文字叠加 | drawtext | 快速、直接的 FFmpeg 滤镜 |
| 时间码、帧号、元数据文字 | drawtext | 内置变量展开 |
| 滚动字幕/新闻跑马灯 | drawtext | 位置表达式简单明了 |
| 逐词动态字幕 | ASS 或多个 drawtext 图层 | ASS 更易处理旋转/缩放;drawtext 适合直接使用公式控制运动 |
关键:ASS 时间单位参考
**ASS 使用两种不同的时间单位系统。这是常见的错误来源。**卡拉 OK 标签使用厘秒;ASS 动画标签使用毫秒;FFmpeg drawtext 表达式使用秒。
卡拉 OK 标签 = 厘秒(1/100 秒)
| 标签 | 单位 | 示例 | 时长 |
|---|---|---|---|
\k | 厘秒 | {\k50} | 0.5 秒 |
\kf | 厘秒 | {\kf100} | 1.0 秒 |
\ko | 厘秒 | {\ko25} | 0.25 秒 |
换算:秒数 * 100 = 厘秒。
动画标签 = 毫秒(1/1000 秒)
| 标签 | 单位 | 示例 | 时长 |
|---|---|---|---|
\t(t1,t2,...) | 毫秒 | \t(0,500,...) | 0-500 毫秒动画 |
\fad(in,out) | 毫秒 | \fad(200,300) | 淡入 200 毫秒,淡出 300 毫秒 |
\move(x1,y1,x2,y2,t1,t2) | 毫秒 | \move(0,0,100,100,0,1000) | 移动 1 秒 |
换算:秒数 * 1000 = 毫秒。
FFmpeg drawtext = 秒
| 表达式 | 单位 | 示例 |
|---|---|---|
t | 秒 | t=2.5 表示 2.5 秒 |
enable='between(t,0,3)' | 秒 | 在 0-3 秒内可见 |
alpha='min(1,t/2)' | 秒 | 在 2 秒内淡入 |
常见错误
; WRONG - mixing units:
Dialogue: 0,0:00:00.00,0:00:02.00,Style,,0,0,0,,{\k100\t(0,100,...)}Word
; {\k100} = 1 second, but \t(0,100,...) = 0.1 seconds
; CORRECT - matched duration:
Dialogue: 0,0:00:00.00,0:00:02.00,Style,,0,0,0,,{\k100\t(0,1000,...)}Word
完整的时间单位参考请参见 ffmpeg-animation-timing-reference。
卡拉 OK 核心模式
[Script Info]
ScriptType: v4.00+
PlayResX: 1920
PlayResY: 1080
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Karaoke,Arial,72,&H00FFFFFF,&H000000FF,&H00000000,&H80000000,1,0,0,0,100,100,0,0,1,3,2,2,10,10,50,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:05.00,Karaoke,,0,0,0,,{\k50}Twinkle {\k50}twinkle {\k50}little {\k50}star
烧录到视频中:
ffmpeg -i input.mp4 \
-vf "ass=karaoke.ass" \
-c:v libx264 -crf 18 -c:a copy \
output_karaoke.mp4
有关高级样式、霓虹/渐变卡拉 OK、逐字符时间控制和动画卡拉 OK 变换,请参见 references/karaoke-ass-patterns.md。
drawtext 核心模式
# Fade in title over 2 seconds
ffmpeg -i input.mp4 \
-vf "drawtext=text='Title':fontsize=100:fontcolor=white:x=(w-tw)/2:y=(h-th)/2:alpha='min(1,t/2)'" \
output.mp4
# Vertical bounce
ffmpeg -i input.mp4 \
-vf "drawtext=text='BOUNCE':fontsize=80:fontcolor=yellow:x=(w-tw)/2:y='(h-th)/2+50*sin(t*5)'" \
bounce.mp4
# Scroll credits upward at 80px/sec
ffmpeg -i input.mp4 \
-vf "drawtext=textfile=credits.txt:fontsize=48:fontcolor=white:x=(w-tw)/2:y=h-80*t" \
-c:v libx264 -crf 18 output.mp4
有关弹簧/弹性/摇摆公式、打字机效果、字幕条、倒计时、秒表、元数据叠加和多行文本,请参阅 references/drawtext-animation-recipes.md。
工作流
- 使用工具选择表选择 ASS 或 drawtext。
- 在编写标签或表达式前确认时间单位。
- 必要时探测输入(
ffprobe),以确认时长、帧率和分辨率。 - 烧录文本时显式设置输出编码(
-c:v libx264 -crf 18;仅在兼容时复制音频)。 - 先进行短时测试渲染(
-ss、-t),再渲染完整音乐视频或演职员名单。 - 检查可读性:卡拉 OK 应在约 30ms 内跟上歌词;字幕需要足够的显示时间;滚动演职员名单的移动速度应足够慢,以便阅读。
参考索引
references/karaoke-ass-patterns.md- ASS 卡拉 OK 基础、\k/\kf/\ko、BPM 计时、标签选择、霓虹/渐变样式、逐字卡拉 OK、ASS 颜色格式、动态卡拉 OK 效果。references/drawtext-animation-recipes.md- 弹簧弹跳、弹性过冲、缓动近似、摇摆/摆动、脉冲、擦除、打字机、淡入淡出、移动文本、动态字体、字幕条、倒计时、秒表、动态变量、多行文本。references/scrolling-credits-and-expressions.md- 音乐/教育/演职员名单的计时、纵向演职员名单、横向字幕条、ASS 旋转变通方案、drawtext变量和表达式手册。
相关技能
ffmpeg-animation-timing-reference- 时间单位、字幕时长、缓动、同步容差ffmpeg-captions-subtitles- 字幕基础、提取、烧录、样式设置ffmpeg-kinetic-captions- 逐词弹出/弹跳/放大字幕效果viral-video-animated-captions- 社交视频字幕模板ffmpeg-shapes-graphics- 方框、背景、图形叠加ffmpeg-transitions-effects- xfade 和视频转场
评论
支持 Markdown