feat(capcut): 合并同类型轨道并优化音频/字幕边界裁剪

在同步到本地剪映后新增轨道合并功能,将因降级添加导致的多条同类型轨道合并为单条。同时修复音频和字幕添加时可能跨场景重叠的问题,将 end 裁剪到 slot 边界。
This commit is contained in:
2026-05-07 00:17:17 +08:00
parent 73b0860fe5
commit ce54a65abb
2 changed files with 88 additions and 11 deletions

View File

@@ -25,6 +25,7 @@ const {
addImages, addVideos, addSlotsLocally,
addVoiceover, addBGM,
addSubtitles,
consolidateTracks,
addEffects, addFilter,
} = require('./lib/capcut-tracks')
const { saveManifest } = require('./lib/pipeline-utils')
@@ -229,7 +230,7 @@ async function assemble(args) {
const steps = []
if (mode === 'images') steps.push('upload')
steps.push('draft', 'materials', 'kenburns', 'audio_oss', 'voiceover', 'audio', 'subtitles', 'effects', 'filter', 'save', 'sync')
steps.push('draft', 'materials', 'kenburns', 'audio_oss', 'voiceover', 'audio', 'subtitles', 'effects', 'filter', 'save', 'sync', 'consolidate')
const totalSteps = steps.length
let step = 0
@@ -407,6 +408,10 @@ async function assemble(args) {
await syncToLocalJianying(draftUrl, draftId, totalDurationUs)
console.log(' 同步完成\n')
// -- 合并同类型轨道TTS 逐条降级时每条独占一个轨道)--
step++; console.log(`[${step}/${totalSteps}] 合并同类型轨道...`)
consolidateTracks(draftId)
// -- 视频轨道 slot 写入(在 syncToLocalJianying 之后执行,此时本地草稿文件已存在)--
if (mode !== 'images') {
step++; console.log(`[${step}/${totalSteps}] 写入视频轨道时间线...`)