当前位置 : 主页 > 手机开发 > 无线 >

Ffmpeg:将滑块“图像”在“背景”上从0%移动到100%,与音频同步

来源:互联网 收集:自由互联 发布时间:2021-06-10
我正在尝试使用以下代码创建视频: `$`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.

我希望这很清楚.

网友评论