Ffmpeg:将 slider "image"在 "background"上从 0% 移动到 100% 与音频同步

标签 ffmpeg overlay filtering

我正在尝试使用以下代码创建视频:

`$`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 http://i.imgur.com/pmwnaLV.png
    • 这是一个 1280x720 像素的静帧,它只是一个带有 video.mp3 文件波形的背景
  • progress.png http://i.imgur.com/qXltKR2.png
    • 这只是一个 1280x100 像素的半透明图像,应该模拟动画(从 video.png 文件宽度的 0% 到 100%,以模拟“填满”动画。

我的问题如下:

  • 视频与音频不同步。进度条太远了,它没有在歌曲结束时结束,而是一直在继续……
  • 还有……它一直在继续!我让它创建了一个 1 小时的视频,并且它从未停止过。

我知道我在过滤器中遗漏了一些东西,但我不知道如何修复它。

有人可以帮我吗?

最佳答案

正如 Pranav 所说,在流的末尾使用 -shortest 来对持续时间问题进行排序。

现在要同步帧的进度,您必须计算出叠加的图片每秒需要移动多少。这很简单:您需要按“视频的宽度/视频的持续时间”移动图片

例如,如果您有 3 分钟的歌曲和 1280 的视频宽度:

  • 3 分钟 = 3x60 = 180 秒。
  • “视频宽度/视频时长”= 1280/180 = 7.11 像素/秒。

7.11 是用于代替 -W+(t)*5, 中的 5 的值。

我希望这已经足够清楚了。

关于Ffmpeg:将 slider "image"在 "background"上从 0% 移动到 100% 与音频同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510521/

相关文章:

iphone - ffmpeg 自动检测人像然后做必要的翻转

python - python 中的 3D 卷积

react-native - 使用ffmpeg进行 native react 的视频压缩

FFMPEG 垂直堆叠三个元素,两个图像和一个框

iphone - 删除 iPhone 上的 Mapkit 覆盖

android - Oreo (API 26) - drawOverlay + 绘制状态栏

sql - 查询过滤,在灵活性和易于执行之间找到平衡

java - Hibernate Criteria API - 过滤集合属性

amazon-web-services - Lambda 未连接到 ffmpeg

jquery - 使用 jQuery 覆盖帮助提示