Toybrick

标题: 编码I帧模糊 [打印本页]

作者: jianglin2045    时间: 2020-10-26 10:46
标题: 编码I帧模糊
我在RK3300 Pro上面使用/usr/share/rockchip-mpp/example/编码例子发现:编码分辨率640x480格式(YUV片源->H264)时候I帧模糊P帧正常,做了测试码率越低模糊的越明显。
例程里就该了分辨率其它参数没有改变,请教一下这是什么元素引起的呢?

作者: jefferyzhang    时间: 2020-10-26 17:51
码率、DP值、GOP都是影响编码质量的重要因素。
264本来就是有损编码,你不可能要求4K编码1M码率还能跟原画一个样吧。

作者: jianglin2045    时间: 2020-10-26 19:46
jefferyzhang 发表于 2020-10-26 17:51
码率、DP值、GOP都是影响编码质量的重要因素。
264本来就是有损编码,你不可能要求4K编码1M码率还能跟原画 ...

您好 很高兴收到您的反馈
我在其它平台下(海思mpp和ffmpeg软编码)参数分辨率:640x480, gop:15,  fps:15, bps:819200 情况下编码都是比较正常。
在RK3399Pro用同样的参数,在画面相对静止的情况下,发现编码出来的画面的下半部分I帧模糊,P帧逐渐变清晰,到下一个I帧又模糊,这样导致画面下半部分闪烁的现象。不知道哪儿参数设置有问题吗?
谢谢!

参数如下:
EncCtx ctx;
        memset(&ctx, 0, sizeof(ctx));
        ctx.width = 640;
        ctx.height = 480;
        ctx.v4l2Format = ENCODE_TYPE_H264;
        ctx.size = size;
        ctx.fps = 15;
        ctx.gop = 15;
        ctx.bps = 819200;//width * height /16 * ctx.fps;
        ctx.mode = ENCODE_RC_MODE_CBR;
        ctx.quality = ENCODE_QUALITY_WORST;
        ctx.profile = ENCODE_PROFILE_HIGH;

作者: jefferyzhang    时间: 2020-10-26 21:32
jianglin2045 发表于 2020-10-26 19:46
您好 很高兴收到您的反馈
我在其它平台下(海思mpp和ffmpeg软编码)参数分辨率:640x480, gop:15,  fps:15, ...

qp值呢
作者: jianglin2045    时间: 2020-10-27 09:50
jefferyzhang 发表于 2020-10-26 21:32
qp值呢

您好,您是说ENCODE_QUALITY_CQP这个参数吗?
作者: jefferyzhang    时间: 2020-10-27 10:37
jianglin2045 发表于 2020-10-27 09:50
您好,您是说ENCODE_QUALITY_CQP这个参数吗?

就是qp
qp_init
qp_min
qp_max
类似这样的一组值。
如果你不会配置的话,稍微等一下,我联系了媒体部门做一次升级,搞成自动配置。

作者: jianglin2045    时间: 2020-10-27 10:54
jefferyzhang 发表于 2020-10-27 10:37
就是qp
qp_init
qp_min

这些值好像Mpp例程里配置不了吧?
作者: jefferyzhang    时间: 2020-10-27 11:14
jianglin2045 发表于 2020-10-27 10:54
这些值好像Mpp例程里配置不了吧?

当然可以,请仔细看sample,sample里都有
作者: Rereflyer    时间: 2020-10-27 14:00
你好,mpi_enc_test.c里面的配置是这样的,
    case MPP_VIDEO_CodingAVC : {
        /*
         * H.264 profile_idc parameter
         * 66  - Baseline profile
         * 77  - Main profile
         * 100 - High profile
         */
        mpp_enc_cfg_set_s32(cfg, "h264:profile", 100);
        /*
         * H.264 level_idc parameter
         * 10 / 11 / 12 / 13    - qcif@15fps / cif@7.5fps / cif@15fps / cif@30fps
         * 20 / 21 / 22         - cif@30fps / half-D1@@25fps / D1@12.5fps
         * 30 / 31 / 32         - D1@25fps / 720p@30fps / 720p@60fps
         * 40 / 41 / 42         - 1080p@30fps / 1080p@30fps / 1080p@60fps
         * 50 / 51 / 52         - 4K@30fps
         */
        mpp_enc_cfg_set_s32(cfg, "h264:level", 40);
        mpp_enc_cfg_set_s32(cfg, "h264:cabac_en", 1);
        mpp_enc_cfg_set_s32(cfg, "h264:cabac_idc", 0);
        mpp_enc_cfg_set_s32(cfg, "h264:trans8x8", 1);

        if (p->rc_mode == MPP_ENC_RC_MODE_FIXQP) {
            mpp_enc_cfg_set_s32(cfg, "h264:qp_init", 20);
            mpp_enc_cfg_set_s32(cfg, "h264:qp_max", 16);
            mpp_enc_cfg_set_s32(cfg, "h264:qp_min", 16);
            mpp_enc_cfg_set_s32(cfg, "h264:qp_max_i", 20);
            mpp_enc_cfg_set_s32(cfg, "h264:qp_min_i", 20);
        } else {
            mpp_enc_cfg_set_s32(cfg, "h264:qp_init", 26);
            mpp_enc_cfg_set_s32(cfg, "h264:qp_max", 51);
            mpp_enc_cfg_set_s32(cfg, "h264:qp_min", 10);
            mpp_enc_cfg_set_s32(cfg, "h264:qp_max_i", 46);
            mpp_enc_cfg_set_s32(cfg, "h264:qp_min_i", 24);
        }
    } break;
我也遇到了同样的问题, 编码H264出现I帧模糊,这个
qp_init
qp_min
qp_max
具体要设成多少,有没有规则可以参考?
作者: jefferyzhang    时间: 2020-10-27 14:11
Rereflyer 发表于 2020-10-27 14:00
你好,mpi_enc_test.c里面的配置是这样的,
    case MPP_VIDEO_CodingAVC : {
        /*

比较麻烦,要看场景,最不济把min max设一样就好了。动态设置的已经提交了,正在做升级包,还是请先按sample的设置,然后回头更新下mpp即可

作者: jianglin2045    时间: 2020-10-27 15:37
jefferyzhang 发表于 2020-10-27 14:11
比较麻烦,要看场景,最不济把min max设一样就好了。动态设置的已经提交了,正在做升级包,还是请先按samp ...

您好 更新的mpp什么时候上传呢?
作者: Rereflyer    时间: 2020-10-27 15:38
jefferyzhang 发表于 2020-10-27 14:11
比较麻烦,要看场景,最不济把min max设一样就好了。动态设置的已经提交了,正在做升级包,还是请先按samp ...

好的,谢谢!

更新mpp的话,里面的mpi_enc_test.c也会同步更新的吧,因为现在参数的配置函数:
MPP_RET test_mpp_enc_cfg_setup(MpiEncTestData *p) 在mpi_enc_test.c里面
作者: jefferyzhang    时间: 2020-10-27 16:48
jianglin2045 发表于 2020-10-27 15:37
您好 更新的mpp什么时候上传呢?

今天应该会弄好,很多依赖要重编,还要测试
作者: jefferyzhang    时间: 2020-10-27 17:35
jianglin2045 发表于 2020-10-27 15:37
您好 更新的mpp什么时候上传呢?

已经传上去了,直接apt update/upgrade 即可
作者: jefferyzhang    时间: 2020-10-27 17:35
Rereflyer 发表于 2020-10-27 15:38
好的,谢谢!

更新mpp的话,里面的mpi_enc_test.c也会同步更新的吧,因为现在参数的配置函数:

已经传好了,直接apt update/upgrade即可
作者: jianglin2045    时间: 2020-10-27 19:39
本帖最后由 jianglin2045 于 2020-10-27 19:51 编辑
jefferyzhang 发表于 2020-10-27 17:35
已经传上去了,直接apt update/upgrade 即可

您好 我试过了还是同样的问题,我在github上面的mpp编译动态库 + test程序(mpi_enc_test.c)验证I帧正常。
然后我怀疑是库的问题使用mpi_enc_test程序 + apt get下载的库出现I帧模糊现象。
现在怀疑动态库的问题。
作者: jefferyzhang    时间: 2020-10-27 22:25
jianglin2045 发表于 2020-10-27 19:39
您好 我试过了还是同样的问题,我在github上面的mpp编译动态库 + test程序(mpi_enc_test.c)验证I帧正常。
...

动态库和头文件是要匹配的,不能交叉混用。
作者: jianglin2045    时间: 2020-10-28 09:41
jefferyzhang 发表于 2020-10-27 22:25
动态库和头文件是要匹配的,不能交叉混用。

是的 我知道混合不能用我只是验证而以,但昨天刚更新下来的还是出现I帧模糊现象不是qp值的问题。
作者: jefferyzhang    时间: 2020-10-28 10:10
jianglin2045 发表于 2020-10-28 09:41
是的 我知道混合不能用我只是验证而以,但昨天刚更新下来的还是出现I帧模糊现象不是qp值的问题。 ...

1. 用更新下来的自带mpi_enc_test也会模糊么?
2. 把qp全部设成32还会模糊么?
作者: jianglin2045    时间: 2020-10-28 14:31
jefferyzhang 发表于 2020-10-28 10:10
1. 用更新下来的自带mpi_enc_test也会模糊么?
2. 把qp全部设成32还会模糊么? ...

再次感谢您的回复。昨天更新的可以了, 是我这里误操作。
谢谢您的支持!!!
作者: Ptolemaeus    时间: 2021-3-12 08:09
rk1126能用吗?




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3