h264隔行编码,不支持宽度不为4的倍数情况

本文探讨了H264编码器在处理隔行扫描视频时的限制,特别是当视频尺寸不符合特定条件时的编码失败问题。具体而言,如果视频高度不是在特定条件下(取决于色彩空间和是否为隔行)的倍数,则无法进行编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

H264编码,隔行,不支持宽度不为4的情况。如编码参数为720x486,就编码失败了。

代码实现在x264编码器里.

错误信息为:

x264_log( h, X264_LOG_ERROR, "height not divisible by %d (%dx%d)\n", h_mod, h->param.i_width, h->param.i_height );

 

 

FFmpeg 代码 avcodec_open2() 函数中

x4->enc = x264_encoder_open(&x4->params);

x264_validate_parameters( h, 1 )

{

    #define X264_CSP_I422 0x0005 /* yuv 4:2:2 planar */

    #define PARAM_INTERLACED h->param.b_interlaced ==> 1



    int h_mod = (i_csp < X264_CSP_I422 ? 2 : 1) << PARAM_INTERLACED;

    if( h->param.i_height % h_mod )

    {

        x264_log( h, X264_LOG_ERROR, "height not divisible by %d (%dx%d)\n", h_mod, h->param.i_width, h->param.i_height );

        return -1;

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值