用于从两个不同视频和两个不同音频创建最终视频的 ffmpeg 命令

ffmpeg command for create final video from two different videos and two different audios

我有两个视频和两个音频

1:- 视频 1 - 长度:- 60 秒 ||音频 1 - 长度:- 15 秒

2:- 视频 - 长度:- 86 秒 ||音频 2 - 长度:- 18 秒

一起播放video1和audio1,如果audio1结束了再播放那个音频直到video1结束。这将是 最终视频 1

同理,

同时播放video2和audio2,如果audio2结束则重新播放该音频直到video2结束。这将是 最终视频 2

之后 连接 最终视频 1 和最终视频 2 并创建单个视频作为输出。

提前致谢。

  1. 因为您的输入是任意的,所以您需要在连接之前使它们相同。

    ffmpeg -i video1 -stream_loop -1 -i audio1 -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:-1:-1,setsar=1,fps=25,format=yuv420p[v]" -map "[v]" -map 1:a -ac 2 -ar 44100 -shortest temp1.mp4
    ffmpeg -i video2 -stream_loop -1 -i audio2 -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:-1:-1,setsar=1,fps=25,format=yuv420p[v]" -map "[v]" -map 1:a -ac 2 -ar 44100 -shortest temp2.mp4
    
  2. 连接。

    制作input.txt:

    file 'temp1.mp4'
    file 'temp2.mp4'
    

    运行 ffmpeg:

    ffmpeg -f concat -i input.txt -c copy -movflags +faststart output.mp4
    

作为请求的“单行命令”(但首先制作 input.txt):

ffmpeg -i video1 -stream_loop -1 -i audio1 -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:-1:-1,setsar=1,fps=25,format=yuv420p[v]" -map "[v]" -map 1:a -ac 2 -ar 44100 -shortest temp1.mp4 && ffmpeg -i video2 -stream_loop -1 -i audio2 -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:-1:-1,setsar=1,fps=25,format=yuv420p[v]" -map "[v]" -map 1:a -ac 2 -ar 44100 -shortest temp2.mp4 && ffmpeg -f concat -safe 0 -i input.txt -c copy -movflags +faststart output.mp4