我创建了一个工具来创建电影网格,就像在 Brady Bunch 的开头一样。这是一个很酷,有趣的效果。
问题是,ffmpeg的是选择最短的影片,以确定的叠加视频最大长度,但依然采用了全第一条音轨的长度来确定整体输出影片的长度。
因此,当最短的视频结束时,我所有的视频都停止移动,但音频会在第一部电影的全长播放。
如何 (1) 将输出电影的长度设置为最长的输入电影或 (2) 将音频长度也与最短的电影长度相匹配?
基于这个 ffmpeg 示例用法,它表现出相同的音频问题:
ffmpeg
-i 1.avi -i 2.avi -i 3.avi -i 4.avi
-filter_complex "
nullsrc=size=640x480 [base];
[0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft];
[1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright];
[2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft];
[3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright];
[base][upperleft] overlay=shortest=1 [tmp1];
[tmp1][upperright] overlay=shortest=1:x=320 [tmp2];
[tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3];
[tmp3][lowerright] overlay=shortest=1:x=320:y=240
"
-c:v libx264 output.mkv
Run Code Online (Sandbox Code Playgroud) ffmpeg ×1