背景音乐
变量 VV、PY 与技能 videomotion 中相同。
选择来源(按优先级)
- 用户提供的音乐文件: 复制到
<project>/music/bgm.<ext>并转换为bgm.wav:ffmpeg -y -i <file> -ar 48000 -ac 2 <project>/music/bgm.wav。如果音乐比视频短,则通知用户(混音器会将缺失部分静音)。 - ACE-Step(此版本尚未实现;安装后会在此处注明)。
- 通过代码合成的音乐(当没有来源1和2时的默认选项):
"$PY" "$VV/tools/music/synth.py" <project> --duration <words.json中的总时长> --mood <mood> [--bpm N] [--seed N]
根据视频风格和内容选择 mood:
| mood(情绪) | 默认 BPM | 适合场景 |
|---|---|---|
| calm | 84 | 白板讲解、慢速教学、严肃主题 |
| inspiring | 96 | 说明视频、培训教程、正面故事 |
| upbeat | 112 | 广告、宣传片、快速蒙太奇 |
| tech | 104 | 深色主题、科技产品、数据可视化 |
更改 --seed 值可在同一 mood 下获得不同旋律。除非用户提供了文件并确认许可,否则切勿从网上下载音乐并将其打包到仓库或项目中。
节拍检测(需要按节拍剪辑时)
合成音乐已包含 music/beats.json。用户提供的音乐需通过从 bestagentkits 复制的脚本进行检测:
"$PY" "$VV/vendor/bestagentkits/fit-beat-grid.py" <project>/music/bgm.wav --min-bpm 70 --max-bpm 140
将输出的 BPM 和 BEAT0 写入 music/beats.json(格式:{"bpm":..,"beat0":..,"source":"fit-beat-grid"})。各小节的 dB 数据可指示音乐渐强(build)和爆发(drop)的位置:如果可能,将脚本的高潮场景与 drop 位置对齐。
混音
"$PY" "$VV/tools/audio/mix.py" mix <project> [--music-db -6] [--duck-db 5]
--music-db:说话时音乐相对于人声的音量(默认 -6 dB)。用户说“音乐小一点”则调低(-9);“听不到音乐”则调高(-4)。--duck-db:无人声时音乐增大的音量(默认 5 dB)。- 输出
MIXDONE I=<LUFS> TP=<dBTP>。当 I 在 -14 ± 0.5 范围内且 TP 不超过 -1.0 时达标。