You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FFmpeg按特定间隔为长视频重复添加音频片段

使用FFmpeg实现音频按固定间隔重复播放并合并到视频

核心思路

先创建「2分钟音频+1分钟静音」的循环单元,再无限循环该单元并截断至视频总时长(10分钟),最后与原视频合并。

方法一:分步处理(适合新手,中间文件可验证)

  1. 生成匹配原音频参数的1分钟静音文件
    先查看原音频的采样率和声道:

    ffmpeg -i audio.mp3
    

    假设原音频是44100Hz立体声,生成静音:

    ffmpeg -f lavfi -i anullsrc=r=44100:cl=stereo -t 60 silence.mp3
    
  2. 拼接音频与静音成3分钟循环单元

    ffmpeg -i audio.mp3 -i silence.mp3 -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" loop_unit.mp3
    
  3. 循环单元并截断至10分钟

    ffmpeg -i loop_unit.mp3 -filter_complex "aloop=loop=-1:size=0,trim=duration=600" repeated_audio.mp3
    
  4. 与视频合并(替换原视频音频)

    ffmpeg -i video.mp4 -i repeated_audio.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4
    

方法二:单命令完成(高效无中间文件)

直接用滤镜链一次性处理,无需生成中间文件:

ffmpeg -i video.mp4 -i audio.mp3 -filter_complex "
  # 重置音频时间戳,避免拼接异常
  [1:a]asetpts=N/SR/TB,
  # 生成1分钟静音(参数匹配原音频:r=采样率,cl=声道)
  aevalsrc=0:d=60:r=44100:cl=stereo [silence],
  # 拼接音频与静音成3分钟循环单元
  [1:a][silence]concat=n=2:v=0:a=1 [unit],
  # 无限循环单元并截断至10分钟
  [unit]aloop=loop=-1:size=0,trim=duration=600 [repeated_audio]
" -c:v copy -c:a aac -map 0:v -map [repeated_audio] output.mp4

额外需求:保留原视频音频并混合

如果需要同时保留原视频的音频,将两个音频混合:

ffmpeg -i video.mp4 -i audio.mp3 -filter_complex "
  [1:a]asetpts=N/SR/TB,
  aevalsrc=0:d=60:r=44100:cl=stereo [silence],
  [1:a][silence]concat=n=2:v=0:a=1 [unit],
  [unit]aloop=loop=-1:size=0,trim=duration=600 [repeated_audio],
  # 混合原视频音频与重复音频
  [0:a][repeated_audio]amix=inputs=2:duration=longest [mixed_audio]
" -c:v copy -c:a aac -map 0:v -map [mixed_audio] output.mp4

注意事项

  • 确保静音的采样率、声道与原音频完全一致,否则拼接会失败。
  • -c:v copy 参数会直接复制视频流,避免重新编码浪费时间;如果视频编码不兼容输出格式,可去掉该参数让FFmpeg自动重新编码。

内容的提问来源于stack exchange,提问作者biswa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 10:05:29