首页 > 解决方案 > 如何在 python 中为视频添加白色背景?

问题描述

我正在寻找一种通过添加白色背景而不是更改其比例来调整视频大小的方法。

(比例为 250x300 像素的视频将通过在视频的每一侧添加白色条带转换为 300x300 像素)

我已经尝试使用 ffmpeg 实现我在这个线程上找到的代码,但我对图像/视频处理非常陌生: 线程

def Reformat_Image(ImageFilePath):

from PIL import Image
image = Image.open(ImageFilePath, 'r')
image_size = image.size
width = image_size[0]
height = image_size[1]

if(width != height):
    bigside = width if width > height else height

    background = Image.new('RGBA', (bigside, bigside), (255, 255, 255, 255))
    offset = (int(round(((bigside - width) / 2), 0)), int(round(((bigside - height) / 2),0)))

    background.paste(image, offset)
    background.save('out.png')
    print("Image has been resized !")

else:
    print("Image is already a square, it has not been resized !")

从本质上讲,我希望能够完成该线程中所做的事情,但要使用视频。

非常感谢任何帮助

标签: pythonvideo

解决方案


您可以将ffmpeg-pythonpad视频过滤器一起使用:

import ffmpeg

input = ffmpeg.input('in.avi')
output = ffmpeg.output(input, 'out.mp4', vcodec='libx264', vf='pad=w=iw+50:h=ih:x=25:y=0:color=white')

output.run()

测试:

在命令行中 使用FFmpeg进行in.avi测试:

ffmpeg -y -r 10 -f lavfi -i mandelbrot=rate=10:size=250x300 -t 5 -c:v rawvideo -pix_fmt bgr24 in.avi

Python 执行结果(最后一帧out.mp4):

在此处输入图像描述

评论:

  • 该示例构建in.avi为原始视频格式(未压缩)。
  • 该示例out.mp4使用 x264 编解码器(x264 / H.264,默认编码参数为 FFmpeg)进行编码。

推荐阅读