gpt4 book ai didi

FFMPEG 从视频中提取 1 帧,从其他视频中提取连续帧,并用一个命令将后者覆盖在前者上

转载 作者:行者123 更新时间:2023-12-04 23:01:25 25 4
gpt4 key购买 nike

我有两个视频,A 和 B。我想:

  • 摘录一个 在某个时间点来自 A 的帧,将用作“背景”
  • 摘录连续帧数从 B,从同一时间点开始
  • 重新缩放 B 的每一帧并将其覆盖在“背景”(A 的帧)上

  • 因此,例如,我想从 A 中提取一张静止图像,并在其上叠加来自 B 的 20 个连续帧,一次一个,从而产生 20 个图像,它们都将具有相同的静止背景(来自 A 的帧),但每个具有不同的叠加层(一次来自 B 的一个连续帧)。
    我可以使用以下两个命令来做到这一点:
    ffmpeg -ss 730.250 -i A.mkv -frames:v 1 still.jpg

    ffmpeg -y
    -i still.jpg
    -ss 730.250 -i B.mkv -frames:v 20
    -filter_complex "[1:v]scale=iw/3:-1[tmp],[0:v][tmp]overlay[out]"
    -map [out] out%d.jpg
    但是我想知道这是否可能
  • 将上述命令组合成一个有效的 ffmpeg 命令(不是两个带有 && 运算符的命令)
  • 不保存still.jpg在磁盘上,但将提取的帧直接提供给过滤器

  • 我尝试了以下方法:
    ffmpeg -y
    -ss 730.250 -i A.mkv -frames:v 1 -f null -
    -ss 730.250 -i B.mkv -frames:v 20
    -filter_complex "[1:v]scale=iw/3:-1[tmp],[0:v][tmp]overlay[out]"
    -map [out] out%d.jpg
    哪个有效,但不是我想要的方式。 A 的帧没有保存在磁盘上但是得到的 20 幅图像不正确;叠加层与预期一致,但“背景”的行为与叠加层相同(每个背景由 A 的一个连续帧组成,一次一个,而不是在指定时间点的一个静止帧)。
    如何获得与前两个命令相同的结果?

    最佳答案

    使用修剪过滤器仅使用每个输入的所需持续时间。ffmpeg -y -ss 730.250 -i A.mkv -ss 730.250 -i B.mkv -filter_complex "[1:v]trim=end_frame=20,scale=iw/3:-1,settb=1/25,setpts=N/25/TB[tmp];[0:v]trim=end_frame=1,settb=1/25,setpts=0[base];[base][tmp]overlay[out]" -map [out] -vsync 0 -enc_time_base 1/25 out%d.jpg

    关于FFMPEG 从视频中提取 1 帧,从其他视频中提取连续帧,并用一个命令将后者覆盖在前者上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68946647/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com