在特定时间ffmpeg音频水印

时间:2017-05-09 05:29:21

标签: bash ffmpeg

我正在寻找一种方法,可以在特定时间将音频水印添加到视频文件(包含现有音频)。
类似于:ffmpeg -i mainAVfile.mov -i audioWM.wav -filter_complex "[0:a][1:a] amix=inputs=2:enable='between(t,9,10)' [aud]; [0:v][aud]" -c:v libx264 -vf "scale=1280:720:sws_dither=ed:flags=lanczos, setdar=16:9" -c:a libfdk_aac -ac 2 -ab 96k -ar 48000 -af "aformat=channel_layouts=stereo, aresample=async=1000" -threads 0 -y output.mp4

上面的命令给了我这个错误Timeline ('enable' option) not supported with filter 'amix'amerge效果不佳。我有点迷失了filter_complex语法,特别是在以下条件下

  • 在主AV文件上,音频和视频曲目都已过滤
  • 水印应该在第9秒和第10秒之间(我已经 生成1秒,10k音调文件)
  • 水印需要在正在进行的音频转码中存活

1 个答案:

答案 0 :(得分:1)

使用

ffmpeg -i mainAVfile.mov -i audioWM.wav
  -filter_complex 
      "[0:a]aformat=channel_layouts=stereo,aresample=async=1000[main];
       [1:a]atrim=0:1,adelay=9000|9000[wm];[main][wm]amix=inputs=2"
  -vf "scale=1280:720:sws_dither=ed:flags=lanczos,setdar=16:9" -c:v libx264    
  -c:a libfdk_aac -ac 2 -ar 48000 -b:a 96k
  -threads 0 -y output.mp4

最好在单个过滤器图中执行所有过滤。但我保持视频过滤器原样。