FFmpeg - 将一个视频叠加到另一个视频上?
FFmpeg - Overlay one video onto another video?
I understand that this is a very open ended question. I have done some initial reading into FFmpeg, but now require some guidance.
问题
- 我有一个视频
input.mov
。
- 我想在
overlay.wov
上叠加另一个视频。
- 结果应该是单个视频 (
output.mov
)。
备注
- 初步阅读了 FFmpeg and read this question。
谢谢 - C.
编辑
- 后端是 Go/Ruby。愿意使用新语言。
- 应保留第一个视频的音频。
- 设置叠加开始的时间间隔会很好。
当前解决方案
ffmpeg -i input.mov -i overlay.mov -filter_complex "[0:0][1:0]overlay[out]" -shortest -map [out] -map 0:1 -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18 output.mov
这几乎可以工作,但是:
- 即使两个视频 (
input.mov
& overlay.mov
) 的长度相同,叠加层也会被剪短。
- 我无法在除
0:00
之外的任何时间间隔开始覆盖。
如果你只想要一个 ffmpeg 命令,试试
ffmpeg -i input.mov -i overlay.mov \
-filter_complex "[1:v]setpts=PTS-10/TB[a]; \
[0:v][a]overlay=enable=gte(t\,5):shortest=1[out]" \
-map [out] -map 0:a \
-c:v libx264 -crf 18 -pix_fmt yuv420p \
-c:a copy \
output.mov
这会在第 5 秒开始叠加,叠加视频的起点是 00:15
。
setpts=PTS-10/TB
是 setpts=PTS+(overlay_delay-video_trim_in)/TB
overlay=enable=gte(t\,5)
是 overlay=enable=gte(t\,overlay_delay)
I understand that this is a very open ended question. I have done some initial reading into FFmpeg, but now require some guidance.
问题
- 我有一个视频
input.mov
。 - 我想在
overlay.wov
上叠加另一个视频。 - 结果应该是单个视频 (
output.mov
)。
备注
- 初步阅读了 FFmpeg and read this question。
谢谢 - C.
编辑
- 后端是 Go/Ruby。愿意使用新语言。
- 应保留第一个视频的音频。
- 设置叠加开始的时间间隔会很好。
当前解决方案
ffmpeg -i input.mov -i overlay.mov -filter_complex "[0:0][1:0]overlay[out]" -shortest -map [out] -map 0:1 -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18 output.mov
这几乎可以工作,但是:
- 即使两个视频 (
input.mov
&overlay.mov
) 的长度相同,叠加层也会被剪短。 - 我无法在除
0:00
之外的任何时间间隔开始覆盖。
如果你只想要一个 ffmpeg 命令,试试
ffmpeg -i input.mov -i overlay.mov \
-filter_complex "[1:v]setpts=PTS-10/TB[a]; \
[0:v][a]overlay=enable=gte(t\,5):shortest=1[out]" \
-map [out] -map 0:a \
-c:v libx264 -crf 18 -pix_fmt yuv420p \
-c:a copy \
output.mov
这会在第 5 秒开始叠加,叠加视频的起点是 00:15
。
setpts=PTS-10/TB
是 setpts=PTS+(overlay_delay-video_trim_in)/TB
overlay=enable=gte(t\,5)
是 overlay=enable=gte(t\,overlay_delay)