【问题标题】:FFmpeg messes up image overlay's width after adding it to a videoFFmpeg 在将图像叠加层添加到视频后弄乱了它的宽度
【发布时间】:2023-03-17 09:58:01
【问题描述】:

我正在使用以下命令将给定图像叠加到视频上:

ffmpeg -y \
-i "Input.mp4" \
-loop 1 -t 17 -i "overlay.png" \
-filter_complex \
"[1:v]fade=in:st=3:d=1:alpha=1, \
fade=out:st=10:d=1:alpha=1 \
[ovr1]; \
[0][ovr1] overlay=(W-w)/2:H-h-10" \
-codec:a copy \
"Output.mp4"

该命令有效,但它会产生一个宽度与输入 overlay.png 不同的叠加层,但它具有相同的高度。

这里是overlay.png

下面是 FFmpeg 叠加后它在视频中的显示方式:

overlay.png 的大小是274x79,但在视频中它变成了大约324x79

我检查了这个建议使用scale的问题(ffmpeg overlay size),我将命令更改为以下内容:

ffmpeg -y \
-i "Input.mp4" \
-loop 1 -t 17 -i "overlay.png" \
-filter_complex \
"[1:v]scale=274:79 \
fade=in:st=3:d=1:alpha=1, \
fade=out:st=10:d=1:alpha=1 \
[ovr1]; \
[0][ovr1] overlay=(W-w)/2:H-h-10" \
-codec:a copy \
"Output.mp4"

但结果仍然相同(更大的宽度),我能够确认scale 确实有效,方法是将其编辑为scale=400:400 以检查其效果。

这是什么原因造成的?在将overlay.png 叠加到视频上后如何保持其原始大小?


编辑:

ffmpeg -i Input.mp4 显示如下:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Input.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2018-12-30T12:38:54.000000Z
    encoder         : HandBrake 1.1.0 2018040700
  Duration: 00:00:17.45, start: 0.000000, bitrate: 1179 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 720x480 [SAR 32:27 DAR 16:9], 1174 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2018-12-30T12:38:54.000000Z
      handler_name    : VideoHandler

【问题讨论】:

  • 您的视频似乎变形了 ffmpeg -i input.mp4 说什么?
  • @Gyan 我已经编辑了我的问题以添加ffmpeg -i Input.mp4 输出。

标签: ffmpeg


【解决方案1】:

您的视频为 720x480,但显示比例为 16:9,基本上是宽屏 SD NTSC 视频。

在覆盖图像之前,您需要使用 scale 和 setsar 滤镜使其成为方形像素视频。

所以,

ffmpeg -y \
-i "Input.mp4" \
-loop 1 -t 17 -i "overlay.png" \
-filter_complex \
"[0:v]scale=2*trunc(iw*sar/2):ih,setsar=1[0v]; \
[1:v]fade=in:st=3:d=1:alpha=1, \
fade=out:st=10:d=1:alpha=1[ovr1]; \
[0v][ovr1] overlay=(W-w)/2:H-h-10" \
-codec:a copy \
"Output.mp4"

【讨论】:

  • 感谢您的回答,但我收到以下错误:[libx264 @ 0000000002fd0500] width not divisible by 2 (853x480)
  • 更正表达式
  • 需要移动括号
  • 非常感谢,效果非常好!我也接受了答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 2015-09-07
  • 2017-10-16
  • 2019-11-17
  • 2020-11-24
相关资源
最近更新 更多