gpt4 book ai didi

python - FFmpeg 裁剪 : 'Invalid too big or non positive size for width ' 230 4' or height ' 4096'

转载 作者:行者123 更新时间:2023-12-04 22:48:58 24 4
gpt4 key购买 nike

我正在尝试将视频裁剪为 1080:1920 格式,它适用于大多数视频,但有时会失败并出现如下错误:

Invalid too big or non positive size for width '2304' or height '4096'


这是我正在使用的代码:
import ffmpy

ffmpy.FFmpeg(inputs={"input.mp4": None}, outputs={"output.mp4": ["-y", "-vf", "crop=ih*(9/16):ih,scale=1080:1920", "-preset", "ultrafast"]})`

最佳答案

错误的原因是ih*(9/16) > frame_width .
我们不能裁剪超出框架边界的矩形。
例如:
假设 input.mp4 的分辨率是 100x200(100 是宽度)。ih = 200ih*(9/16) = 112.5我们不能裁剪 112x200 像素,因为帧宽度只有 100 像素...

为了重现问题,我们可以使用 FFmpeg(命令行工具)创建合成视频:

ffmpeg -y -f lavfi -i testsrc=size=100x200:rate=1:duration=5 input.mp4
(合成视频仅用于演示)。

执行 ffmpy.FFmpeg(inputs={"input.mp4": None}, outputs={"output.mp4": ["-y", "-vf", "crop=ih*(9/16):ih,scale=1080:1920", "-preset", "ultrafast"]}) 时,我们收到一条错误消息:

Invalid too big or non positive size for width '112' or height '200'



为了解决这个问题,我们可能会检查 height*9/16 <= width .
我们可以使用 OpenCV(或我们找到的任何其他包)获得视频分辨率( widthheight)。
现在我们可以查看 if height*9/16 <= width ,如果条件为假,则使用其他裁剪参数。

代码示例:
import ffmpy
import cv2

# Get video resolution using OpenCV
cap = cv2.VideoCapture('input.mp4')
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
cap.release()

crop_w = height*9/16

if crop_w <= width:
# We can do the cropping only when the cropped area is inside frame boundaries.
ff = ffmpy.FFmpeg(inputs={"input.mp4": None}, outputs={"output.mp4": ["-y", "-vf", "crop=ih*(9/16):ih,scale=1080:1920", "-preset", "ultrafast"]})
else:
ff = ffmpy.FFmpeg(inputs={"input.mp4": None}, outputs={"output.mp4": ["-y", "-vf", "crop=iw:iw*(16/9),scale=1080:1920", "-preset", "ultrafast"]})

ff.run()

注意:我们实际上不必复制代码的一部分(我使用复制进行演示)。

关于python - FFmpeg 裁剪 : 'Invalid too big or non positive size for width ' 230 4' or height ' 4096',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70660235/

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