我正在尝试使用以下代码创建视频: `$`ffmpeg -loop 1 -r 5 -i video.png -r 5 -i progress.png -filter_complex "overlay=x='if(gte(t,0), -W+(t)*5, NAN)':y=H-h" -i video.mp3 -acodec copy video.mp4 我有以下文件 video.png 这是一
`$`ffmpeg -loop 1 -r 5 -i video.png -r 5 -i progress.png -filter_complex "overlay=x='if(gte(t,0), -W+(t)*5, NAN)':y=H-h" -i video.mp3 -acodec copy video.mp4
我有以下文件
> video.png
>这是一个1280×720像素的静止帧,它只是一个带有video.mp3文件波形的背景
> progress.png
>这只是一个1280×100像素的半透明图像,应该模拟动画(从video.png文件宽度的0到100%,以模拟“填充”动画.
我的问题如下:
>视频与音频不同步.进度条离开了,而不是在歌曲结尾处完成,它只是继续进行,一直持续……
>另外……它一直在继续!我离开它创建一个1小时的视频,它永远不会停止.
我知道我在过滤器中遗漏了一些东西,但我不知道如何解决它.
有人可以借给我一些帮助吗?
正如Pranav所说,在流的末尾使用-shortest来对持续时间问题进行排序.现在要同步帧的进度,你必须弄清楚你的叠加图片每秒需要移动多少.这很简单:您需要按照“视频宽度/视频持续时间”移动图片
例如,如果你有3分钟的歌曲和1280的视频宽度:
> 3分钟= 3×60 = 180秒.
>“视频宽度/视频持续时间”= 1280/180 = 7.11像素/秒.
7.11是在-W(t)* 5中使用的值而不是5.
我希望这很清楚.