Invalid size ‘1464x600’. Width and height must both be divisible by 16. (request...

2026年06月04日 15:31 31.69 秒 success

错误信息

Invalid size ‘1464x600’. Width and height must both be divisible by 16. (request id: 20260604152119902494758BH24yA84)

AI 解决方案

🔧 报错分析

1. 🌐 错误翻译


原文:Invalid size ‘1464x600’. Width and height must both be divisible by 16.
译文:无效的尺寸“1464x600”。宽度和高度必须都能被16整除。

2. 🎯 原因分析


  • 根本原因:您尝试设置的图像或视频分辨率(1464x600)不符合处理引擎(如视频编解码器、图像处理库)的强制性对齐要求。

  • 具体位置:错误发生在设置输出尺寸的环节。1464 除以 16 不是整数(1464 ÷ 16 = 91.5),因此无效。许多编解码器(如H.264/H.265)和底层硬件要求帧尺寸是16的倍数,以确保在编码、解码或并行处理时的块大小兼容性和效率。
  • 3. 💡 解决方案


    需要将宽度或高度调整为最接近的16的倍数。以下是几种修改方案:

    方案一:仅调整宽度

    # 将宽度从1464调整为最接近的16的倍数:1456 或 1472
    new_size = (1456, 600)  # 或者 (1472, 600)
    

    方案二:同时调整宽度和高度以保持比例(推荐)

    # 保持原始宽高比 (1464:600 ≈ 2.44:1)
    target_width = 1472  # 最接近的16的倍数
    # 按比例计算高度 (四舍五入到最近的16的倍数)
    original_ratio = 1464 / 600
    target_height = round((target_width / original_ratio) / 16) * 16
    new_size = (target_width, int(target_height))  # 结果:(1472, 608)
    

    方案三:在常见工具中的处理方式

    # FFmpeg 示例:使用scale滤镜强制对齐
    ffmpeg -i input.mp4 -vf "scale=1472:608" output.mp4
    

    4. 🛡️ 预防措施


  • 预先验证尺寸:在设置尺寸前,添加检查逻辑确保宽度和高度都是16的倍数。

  •    if width % 16 != 0 or height % 16 != 0:
           print(f"警告:尺寸({width}x{height})需要调整为16的倍数。")
           width = (width // 16) * 16
           height = (height // 16) * 16
       

  • 使用智能缩放工具:依赖OpenCV、FFmpeg等工具的自动对齐参数或滤镜(如 scale-vf 参数)。

  • 查阅文档:在使用特定库或编码器前,查阅其关于尺寸约束的官方文档。