SuperAPI AI 工具集

av-sync-workflow

设计与创作

查看项目

更新于 10-13 16:04

技能介绍

AV-Sync Workflow 是一套音频到视频的同步剪辑工作流,目标是把音频转化为与节拍、情绪、场景同步的专业视频。

工作流概览

音频 → 分析 → 片段匹配 → 节拍同步 → 视频合成 → 导出

第一步:分析音频

使用 scripts/audio_analysis.py 提取以下内容:

  • 节拍/BPM:每个节拍的时间戳、整体速度(BPM)
  • 段落:主歌、副歌、桥段、尾奏的标记
  • 情绪/心情:能量水平、效价(快乐/悲伤)、节拍类别
  • 关键时刻:高冲击点(drop、高潮、过渡)

命令示例:

python3 scripts/audio_analysis.py /path/to/song.mp3 --output /tmp/analysis.json

输出结构示例:

{ "bpm": 120, "duration": 214, "beats": [0.0, 0.5, 1.0, ...], "sections": [ {"type": "intro", "start": 0, "end": 15}, {"type": "verse", "start": 15, "end": 45}, {"type": "chorus", "start": 45, "end": 75} ], "mood": {"energy": 0.7, "valence": 0.6, "danceability": 0.8}, "key_moments": [ {"time": 45.0, "type": "chorus_drop", "intensity": 1.0} ] }

第二步:收集视频片段

用户可以自行提供视频片段,也可以搜索素材库:

  • Pexels:https://www.pexels.com/search/videos/{query}/
  • Pixabay:https://pixabay.com/videos/search/{query}/
  • Coverr:https://coverr.co/search/{query}

下载素材示例:

Via yt-dlp (for pexels/pixabay)

yt-dlp -f "best[height<=1080]" -o "/tmp/clip_%(id)s.%(ext)s" "https://pexels.com/video/12345"

Via direct URL

ffmpeg -i "https://example.com/video.mp4" -c copy /tmp/clip.mp4

第三步:分析每个片段

对每个片段提取:场景类型(室内/室外、城市/自然、特写/广角)、情绪/风格(活力/平静、快乐/悲伤)、时长与切点、视觉元素(人脸、运动、颜色)。

python3 scripts/video_analysis.py /tmp/clip.mp4 --output /tmp/clip_analysis.json

第四步:将片段匹配到音频段落

匹配算法基于:情绪匹配(高能量副歌对应有活力的片段)、场景连续性(场景间平滑过渡)、节拍对齐(在节拍上剪切以形成节奏)、长度适配(片段时长与段落时长匹配)。

python3 scripts/match_clips.py
--audio-analysis /tmp/analysis.json
--clips /tmp/clip1.mp4,/tmp/clip2.mp4
--clip-analyses /tmp/clip1_analysis.json,/tmp/clip2_analysis.json
--output /tmp/edit_plan.json

第五步:生成节拍同步视频

python3 scripts/assemble_video.py
--edit-plan /tmp/edit_plan.json
--audio /path/to/song.mp3
--output /tmp/final_video.mp4
--format mp4
--codec h264
--quality high

参考脚本

  • scripts/audio_analysis.py:使用 librosa 分析音频,提取逐拍与小节级节拍时间戳、BPM、起音强度包络、用于情绪判断的频谱特征,并提供 librosa-beat-grid 输出选项。
  • scripts/video_analysis.py:分析视频片段,提取主导颜色/色彩情绪、场景类型分类(城市、自然、室内等)、运动水平(静止、中等、高)、检测到的人脸/人物、建议切点(场景变化)。
  • scripts/match_clips.py:智能片段到音频的匹配,包括情绪/心情对齐评分、确保不重复剪辑的场景多样性、节拍同步切点优化,输出详细的编辑决策列表(EDL)。
  • scripts/assemble_video.py:最终视频合成,按编辑计划应用切点、添加平滑过渡(溶解、淡入淡出)、在高潮节拍添加慢动作、混合音轨、按指定画质导出。

节拍同步切点

对音频中的每个节拍:强拍(第 1 小节)做主要剪切或过渡;弱拍(第 2-4 小节)做次要剪切或不剪切;反拍触发特效(缩放、闪光)。

标准剪切节奏:4 拍小节每 4 或 8 拍剪切一次;副歌每 2 拍剪切以体现高能量;尾奏逐渐放慢并淡出。

快速开始(最简方式)

如果用户只提供音频和一个视频:

1. Detect beats

python3 scripts/audio_analysis.py song.mp3 -o beats.json

2. Simple beat-sync assembly

python3 scripts/simple_sync.py --audio song.mp3 --clip video.mp4 --beats beats.json -o output.mp4

画质设置

画质 分辨率 比特率 用途
draft 720p 2Mbps 快速预览
standard 1080p 5Mbps 社交媒体
high 1080p 10Mbps YouTube
premium 4K 20Mbps 最终输出

关键说明

  • 需要 FFmpeg:大多数脚本依赖已安装 ffmpeg
  • 音频时长与视频片段:若片段短于音频,可循环或寻找更多片段
  • BPM > 140:drop 类歌曲可考虑半速剪辑
  • 过渡:默认仅剪切(节拍同步),副歌段落可添加溶解过渡
  • 情绪输入:若用户指定情绪(如“悲伤、雨、怀旧”),优先于自动分析结果

故障排查

  • 未检测到节拍:音频可能录制质量差,可尝试 --spectral 模式
  • 片段太短:自动将小片段循环至原长的 3 倍
  • 宽高比不匹配:自动裁剪/填充为 16:9 或 9:16 以适配短视频