如何使用 ffmpeg 连接视频片段而不导致音频不同步?

如何使用 ffmpeg 连接视频片段而不导致音频不同步?

我正在尝试使用 ffmpeg 自动修剪和连接包含音频的视频剪辑。以下命令用于修剪剪辑,然后连接修剪后的剪辑。

.\ffmpeg -ss $startInSeconds -i $inputFile -t $partDurationInSeconds $outputFile

每个输入文件执行一次此操作,不同剪辑的 $startInSeconds 和 $partDurationInSeconds 值不同。

.\ffmpeg -f concat -safe 0 -i .\list.txt -c copy $concatOutputFile

list.txt 是来自第一个 trim 命令的 $outputFile 列表。

拼接视频文件的音频会随着时间的推移逐渐失去同步(与剪辑后的片段相比速度变慢),这正是我想要解决的问题。每次拼接时,音频似乎都会减慢大约半帧。

为什么 concat 命令会导致这种不同步以及我该怎么办?

我认为这是由于修剪后的剪辑的音频和视频轨道的持续时间不匹配(修剪后音频通常比视频短)。然后我尝试在连接之前填充音频以匹配视频,但问题仍然存在。我还发现了一个轨道长度相同的示例,问题仍然存在,所以我认为 concat 命令是罪魁祸首,而不是 trim 命令。

相关内容