Audio FFMPEG:在组合多个过滤器时指定输出流类型

Audio FFMPEG:在组合多个过滤器时指定输出流类型,audio,video,ffmpeg,Audio,Video,Ffmpeg,我目前有3个独立的ffmpeg命令,它们执行以下操作: 在视频上覆盖水印:ffmpeg-i samplegreen.webm-i foregrounds/myimage.png-r 30-filter_complex“Overlay=(W-W)/2:H-H”-af“adelay=700”输出。mp4 将1)的结果叠加到海滩视频上:ffmpeg-i backgrounds/beachsonemp4.mp4-i output.mp4-filter_complex“[1:v]chromakey=0x0

我目前有3个独立的
ffmpeg
命令,它们执行以下操作:

  • 在视频上覆盖水印:
    ffmpeg-i samplegreen.webm-i foregrounds/myimage.png-r 30-filter_complex“Overlay=(W-W)/2:H-H”-af“adelay=700”输出。mp4
  • 将1)的结果叠加到海滩视频上:
    ffmpeg-i backgrounds/beachsonemp4.mp4-i output.mp4-filter_complex“[1:v]chromakey=0x005d0b:0.1485:0.03[ckout];[0:v][ckout]Overlay[o]”-map[o]-map 1:a-shortest somefolder/sample_video.mp4
  • 将2)结果的音频与另一个音频文件合并:
    ffmpeg-i somefolder/sample_video.mp4-i backgrounds/beachsonemp4.mp3-filter_complex'[0:a][1:a]amerge=inputs=2[a]'-map 0:v-map'[a]'-c:v copy-ac 2-shortest another folder/sample_video.mp4
  • 现在,所有这些都按预期工作,但是,我正在尝试将它们组合到一个命令中,组合所有过滤器,如下所示:

    ffmpeg -i samplegreen.webm -i foregrounds/myimage.png -r 30 -i backgrounds/beachsunsetmp4.mp4 -i backgrounds/beachsunsetmp4.mp3 -filter_complex \
        "[0]overlay=(W-w)/2:H-h[output_1]; \
         [output_1]chromakey=0x005d0b:0.1485:0.03[ckout]; \
         [2:v][ckout]overlay[output_2]; \
         [output_2][3:a] amerge=inputs=2 [output_3]" \
        -af "adelay=700" -map [output_3] shortest final.mp4
    
    它失败,出现以下错误(
    已解析的\u叠加\u 2'过滤器输出焊盘0(视频)和已解析的\u叠加\u 3'过滤器输入焊盘0(音频)
    ):

    所有这些都表明。。。有没有一种方法可以指定我想使用前面过滤器输出的音频流?或者用其他方法将所有这些过滤器组合成一个命令

    谢谢


    任何帮助都将不胜感激

    除concat等少数过滤器外,过滤器只能接收视频输入或音频输入


    这是联合指挥部

    ffmpeg \
     -i samplegreen.webm \
     -i foregrounds/myimage.png \
     -i backgrounds/beachsunsetmp4.mp4 \
     -i backgrounds/beachsunsetmp4.mp3 \
     -filter_complex \
     "[0][1]overlay=(W-w)/2:H-h,chromakey=0x005d0b:0.1485:0.03[ckout]; \
      [2][ckout]overlay=shortest=1[v]; \
      [0]adelay=700:all=1[0a]; \
      [0a][3]amerge=inputs=2[a]" \
     -map '[v]' -map '[a]' \
     -shortest -r 30 -ac 2 \
    output.mp4
    

    谢谢你!现在唯一的问题是,视频长度为33秒,而单独执行所有命令时,视频长度仅为13秒。有什么想法吗?谢谢你的快速回复,这真的帮了我很大的忙!修改了最后的过度担心,因为反应太晚,但这起作用了!再次感谢!
    [matroska,webm @ 0x7fecca000000] Invalid stream specifier: output_2:a.
        Last message repeated 1 times
    Stream specifier 'output_2:a' in filtergraph description [0]overlay=(W-w)/2:H-h[output_1];      [output_1]chromakey=0x005d0b:0.1485:0.03[ckout];      [2:v][ckout]overlay[output_2];      [output_2:a][3:a] amerge=inputs=2 [output_3] matches no streams.
    
    ffmpeg \
     -i samplegreen.webm \
     -i foregrounds/myimage.png \
     -i backgrounds/beachsunsetmp4.mp4 \
     -i backgrounds/beachsunsetmp4.mp3 \
     -filter_complex \
     "[0][1]overlay=(W-w)/2:H-h,chromakey=0x005d0b:0.1485:0.03[ckout]; \
      [2][ckout]overlay=shortest=1[v]; \
      [0]adelay=700:all=1[0a]; \
      [0a][3]amerge=inputs=2[a]" \
     -map '[v]' -map '[a]' \
     -shortest -r 30 -ac 2 \
    output.mp4