deprecated pixel format used, make sure you did set range correctly

本文解决FFmpeg中因使用弃用的YUVJ格式而导致的警告问题。通过转换格式为兼容的YUV格式,可以避免警告并确保正常运行。提供两种解决方案,包括代码示例。

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

deprecated pixel format used, make sure you did set range correctly

udp传输模式可能报这个警告,

方法1:

ffmpeg - swscaler warning : deprecated pixel format used - Stack Overflow

AVPixelFormat pixFormat;
switch (_videoStream->codec->pix_fmt) {
case AV_PIX_FMT_YUVJ420P :
    pixFormat = AV_PIX_FMT_YUV420P;
    break;
case AV_PIX_FMT_YUVJ422P  :
    pixFormat = AV_PIX_FMT_YUV422P;
    break;
case AV_PIX_FMT_YUVJ444P   :
    pixFormat = AV_PIX_FMT_YUV444P;
    break;
case AV_PIX_FMT_YUVJ440P :
    pixFormat = AV_PIX_FMT_YUV440P;
    break;
default:
    pixFormat = _videoStream->codec->codec->pix_fmts;
    break;
}

方法2:

这个警告并不会导致解码速度变慢,所以无关痛痒。
报这个警告的原因是因为源视频,或者想生成的视频的格式是yuvj×××,这种格式已被弃用。将这样格式转化为可用的格式就行了。

原因就在src或aim这里

SwsContext* sws_ctx = sws_getContext(src_width, src_height,  
                                 src,  
                                 dst_width, dst_height,  
                                 AV_PIX_FMT_YUYV422,  
                                 aim,  
                                 NULL,  
                                 NULL,  
                                 NULL);



下面我只说src这里怎么操作:

AVPixelFormat ConvertDeprecatedFormat(enum AVPixelFormat format)
{
    switch (format)
    {
    case AV_PIX_FMT_YUVJ420P:
        return AV_PIX_FMT_YUV420P;
        break;
    case AV_PIX_FMT_YUVJ422P:
        return AV_PIX_FMT_YUV422P;
        break;
    case AV_PIX_FMT_YUVJ444P:
        return AV_PIX_FMT_YUV444P;
        break;
    case AV_PIX_FMT_YUVJ440P:
        return AV_PIX_FMT_YUV440P;
        break;
    default:
        return format;
        break;
    }
}


用这个函数,先把yuvj×××这个格式转化为yuv格式,然后再使用sws_getContext()的时候就没问题了。

原文链接:https://blog.csdn.net/qq_39203457/article/details/105002410

也可以参考:

[swscaler @ ...] deprecated pixel format used, make sure you did set range correctly - MyCPlusPlus - 博客园

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值