ios - 如何在ffmpeg中添加具有相同视频纵横比的视频开头的介绍图像?
问题描述
我有一张图片和一个视频。我想在实际视频之前添加图像作为视频,这样我就可以使用介绍帧流式传输视频 5 秒。
我找到了一个命令并完全满足了我的要求,但是在视频末尾添加的命令图像中,我需要视频的开头。让我在下面分享命令:
ffmpeg -i 1.mp4 -loop 1 -t 5 -i 2.jpg -f lavfi -t 5 -i anullsrc -filter_complex "[0]split[base][full];[base]trim=0:5,drawbox=t=fill[base];[1][base]scale2ref=iw:ih:force_original_aspect_ratio=decrease:flags=spline[2nd][base];[base][2nd]overlay='(W-w)/2':'(H-h)/2'[padded];[full][0:a][padded][2:a]concat=n=2:v=1:a=1[v][a]" -c:v libx264 -c:a aac -strict -2 -map "[v]" -map "[a]" output.mp4
图像应根据视频分辨率动态调整大小。最好的解决方案将由衷地感激。
解决方案
ffmpeg -i 1.mp4 -loop 1 -t 5 -i 2.jpg -f lavfi -t 5 -i anullsrc -filter_complex "[0:v]trim=0:5,drawbox=t=fill[base];[1][base]scale2ref=iw:ih:force_original_aspect_ratio=decrease:flags=spline[2nd][base2];[base2][2nd]overlay='(W-w)/2':'(H-h)/2'[padded];[padded][2:a][0:v][0:a]concat=n=2:v=1:a=1[v][a]" -c:v libx264 -c:a aac -map "[v]" -map "[a]" output.mp4
- 不需要拆分过滤器。
- 不要重复使用标签。每个输出标签必须是唯一的。例如,您使用
[base]
了多次。所以我改名为下一个[base2]
。 - 视频的顺序由 concat 过滤器的顺序决定。我重新安排了它,所以
[padded][2:a]
以前播放过[0:v][0:a]
。 -strict -2
自 2015 年以来就不再需要(用于 AAC 编码器)。除非您的 FFmpeg 非常旧,否则您不需要它。
推荐阅读
- jquery - 使用Jquery提交表单数据后如何将空值修复到我的后端
- python - Python CSV:列内的逗号、单引号和双引号
- ruby-on-rails - SessionsController 中的 DropboxError - 创建
- html - 我在代码中使用 Bootstrap 4 轮播。Bootstrap 4 轮播不工作
- wordpress - Wordpress Plugin doesn't have the excepted behaviour
- django - 如何在 Django 的自定义帐户模型中覆盖 user.groups 以实现“虚拟”组?
- haskell - 简化代码(需要帮助细化这个问题的标题......)
- reactjs - 如何从数组中获取数据?无法从数组中获取 const 中的数据
- python - 获取多进程中使用的函数的返回值
- elixir - 在 Elixir 中迭代一个数组