FFmpeg 异常:height not divisible by 2

在尝试用FFmpeg结合CV模型做视频预测时,为了提高预测效率,在对单张视频帧预测前使用Pillow对图像做了压缩,代码如下:

def img_thumbnail(img: Image.Image) -> \
        (Image.Image, int, int):
    """
    缩放图片
    :param img:
    :return: 返回图片对象的缩略图,宽,高
    """
    if img.size[0] > 360 or img.size[1] > 360:
        size = 360, 360  # 最高像素360
        img.thumbnail(size, Image.ANTIALIAS)
    return img, img.size[0], img.size[1]

之后对预测后的图片压缩成视频时,FFmpeg抛出如下异常:

...
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
[libx264 @ 0x5645875d8cc0] height not divisible by 2 (360x203)
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

直译过来就是:高度不能被2整除。从反馈的信息可以看到,压缩后的图片是360x203,即图像的像素高度是203,查阅资料得知H264编码需要视频的宽、高可被2整除参考
解决方法也比较简单,360x203实际上是640x360等比例缩放得到的,只要指定图片的像素为360x204即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值