如何使用 FFMPEG 按顺序播放水印视频

如何使用 FFMPEG 按顺序播放水印视频

我想使用 ffmpeg 在输出视频中逐个播放水印视频。

以下命令将 4 个视频设置为图像上的水印并创建输出视频,但水印视频并行播放。

String[] cmd={"-i","/storage/emulated/0/Download/trasprent_bg.png","-i",videourl_1.mp4,"-i",videourl_2.mp4,"-i",videourl_3.mp4,"-i",videourl_4.mp4,"-i",image_collage.png,"-filter_complex","[1:v]scale=500:500,crop=266:266[tfg];[2:v]scale=500:500,crop=266:266[bfg];[3:v]scale=500:500,crop=266:266[threefg];[4:v]scale=500:500,crop=266:266[fourfg];[5:v]scale=-1:-1[colage];[0:v][tfg]overlay=2:2[o1];[o1][bfg]overlay=272:2[o2];[o2][threefg]overlay=2:272[o3];[o3][fourfg]overlay=272:272[o4];[o4][colage]overlay=0:0","-an","videoCrop37.mp4"};

请帮我。

答案1

您需要更改其他视频的时间戳。

字符串[] cmd = {“-loop”,“1”,“-i”,“/storage/emulated/0/Download/trasprent_bg.png”,“-i”,videourl_1.mp4,“-i”,videourl_2.mp4,“-i”,videourl_3.mp4,“-i”,videourl_4.mp4,“-i”,image_collage.png,“-filter_complex”,“[1:v]scale=500:500,crop=266:266[tfg];[2:v]scale=500:500,crop=266:266,setpts=PTS+X/TB[bfg];[3:v]scale=500:500,crop=266:266,setpts=PTS+Y/TB[ threefg];[4:v]scale=500:500,crop=266:266,setpts=PTS+Z/TB[fourfg];[5:v]scale=-1:-1[colage];[0:v][tfg]overlay=2:2:eof_action=pass[o1];[o1][bfg]overlay=272:2:eof_action=pass[o2];[o2][threefg]overlay=2:272:eof_action=pass[o3];[o3][fourfg]overlay=272:272:eof_action=pass:shortest=1[o4];[o4][colage]overlay=0:0","-an","videoCrop37.mp4"};

对于第 2、3 和 4 个视频,setpts=PTS+T/TB已添加过滤器,其中 T 是该视频开始时间的延迟(以秒为单位)。如果 4 个视频的持续时间分别为 6、3、11、5 秒,则 X=6、Y=9(6+3)和 Z=20(6+3+11)。

相关内容