ffmpeg:填充并不总是透明的

dgi*_*gig 2 ffmpeg

我正在使用一个简单的 ffmpeg 命令来调整和填充图像以适应 960x540 帧。我希望填充是透明的,但我在不同的图像上有不同的行为。

命令:

ffmpeg -y -i image.PNG -vf \
"scale=iw*min(960/iw\,540/ih):ih*min(960/iw\,540/ih),pad=960:540:(960-iw)/2:(540-ih)/2:color=#00000000" \
new.png
Run Code Online (Sandbox Code Playgroud)

我截取的 PNG 屏幕截图似乎按预期获得了透明背景。JPG 似乎得到了黑色填充,即使我事先将它们转换为 PNG。

我似乎看到的区别是 rgb24 与 rgba。是这个问题吗?如果是这样,如何在填充之前更改该属性?

黑色填充:

Metadata:
    encoder         : Lavf57.25.100
    Stream #0:0: Video: png, rgb24, 960x540 [SAR 1926:1925 DAR 3424:1925], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Run Code Online (Sandbox Code Playgroud)

透明填充:

  Metadata:
    encoder         : Lavf57.25.100
    Stream #0:0: Video: png, rgba, 960x540, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Run Code Online (Sandbox Code Playgroud)

llo*_*gan 5

在使用 pad 之前将格式过滤器添加到过滤器链中:

-vf scale,format=rgba,pad
Run Code Online (Sandbox Code Playgroud)