python - 如何在 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 !")
从本质上讲,我希望能够完成该线程中所做的事情,但要使用视频。
非常感谢任何帮助
解决方案
您可以将ffmpeg-python与pad视频过滤器一起使用:
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)进行编码。
推荐阅读
- python - 如何从 OpenCV 的特征脸模型中获得“特征向量之间的距离”或“两张脸之间的相似度值”?蟒蛇语言
- python - 如何使用 gspread 缓存 Google 表格的授权?
- ruby-on-rails - 新 Rails 6 应用程序中巨大的 .yarn/ 文件夹是怎么回事?
- python - 如何从 python 中获取价值并使用 php 在网页中显示
- android - Android:将自定义状态传递给自定义布局内的子图像视图
- java - Spring Data Jpa OneToMany 同时保存子实体和父实体?
- python - 发生异常:导入 QtWidgets 时 ImportError DLL 加载失败:%1 不是有效的 Win32 应用程序
- c++ - 实现 DFS,在较短的输入下工作正常,但在较大的输入下会引发分段错误
- hashicorp-vault - Vault Admin Policy 不允许创建新策略
- python - 访问 Python 矩阵中的行和列