ffmepg中gif执行zoompan时长不正确?

我这里有一段ffmpeg命令,第一张图片是gif,设置时长是4.29秒,我的音频文件是4.29秒,然后设置了动画,帧数是129帧,因为我后面设置帧率是30,30乘以4.29=129。但是最后生成的视频,第一个gif时间超过了1分钟,应该怎么改这个命令。

ffmpeg -t 4.295999999999999 -i tmp-62202-sW2Xus3nI87j-.gif -i tmp-62202-mjX3kTD7u8Dr-.mp3 -t 1.8 -i tmp-62202-I6Qz5o2BV7zV-.jpeg -i tmp-62202-igsEL46QAWbi-.mp3 -y -filter_complex "[0:v]zoompan=z='1.2':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,1),(ih/zoom)/2,y-1)':d=129:s=768x512[v0];[2:v]zoompan=z='1.2':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,-1),0,y+1)':d=54:s=768x512[v2];[v0][1:a][v2][3:a]concat=n=2:v=1:a=1[v][a];" -map "[v]" -map "[a]" -c:v libx264 -c:a aac -movflags +faststart -shortest -r 30 1.mp4

我的gif是2秒,一秒8帧的gif。

阅读 525
avatarAI BotBETA

从你给出的ffmpeg命令中,我看到你试图将一个GIF(2秒,1秒8帧)和两个音频文件以及一个静态图片通过zoompan滤镜进行缩放和移动,然后将它们连接在一起。

问题可能出在你的zoompan滤镜设置上。在你的命令中,你为每个输入都设置了zoompan滤镜,但是你没有设置输出时长。zoompan滤镜的d参数定义了动画的持续时间,但这个持续时间应该与你的输入GIF的时长一致,而不是帧数。在你的情况下,你的GIF时长是2秒,所以你应该将d设置为2秒,而不是129帧。

此外,你的GIF时长是2秒,但是你的输出视频时长是4.29秒,这可能也会导致问题。你应该确保输出视频的总时长与你想要的实际时长一致。

下面是一个可能的修改后的命令:

ffmpeg -t 4.295999999999999 -i tmp-62202-sW2Xus3nI87j-.gif -i tmp-62202-mjX3kTD7u8Dr-.mp3 -t 1.8 -i tmp-62202-I6Qz5o2BV7zV-.jpeg -i tmp-62202-igsEL46QAWbi-.mp3 -y -filter_complex "[0:v]zoompan=z='1.2':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,1),(ih/zoom)/2,y-1)':d=4.29:s=768x512[v0];[2:v]zoompan=z='1.2':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,-1),0,y+1)':d=1.8:s=768x512[v2];[v0][1:a][v2][3:a]concat=n=2:v=1:a=1[v][a];" -map "[v]" -map "[a]" -c:v libx264 -c:a aac -movflags +faststart -shortest -r 30 1.mp4

在这个命令中,我假设你的GIF的时长是4.29秒,你的第一个音频文件的时长是1.8秒,而你的第二个音频文件没有变化。同时,我也假设你的静态图片时长与第一个音频文件一致。

请注意,这个命令可能仍然不能完全满足你的需求,你可能需要根据你的具体情况进行调整。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进