rk3399pro 录像问题


aihuafeng66t
克里斯蒂亚诺诺 2024-01-11 18:34:37 52455 赞同 0 反对 0
分类: 资源 标签: 运维
rk3399pro 录像问题 rk3399pro 录像问题

问题描述:

在 app 中使用 :

 
  1.  
    mMediaRecorder.setVideoEncodingProfileLevel(MediaCodecInfo.CodecProfileLevel.AVCProfileHigh,
  2.  
    MediaCodecInfo.CodecProfileLevel.AVCLevel51);
 

来设置编码等级, 开始录像的时候报错,无法成功录像:

01-09 15:54:58.654   400  2268 W ACodec  : [OMX.rk.video_encoder.avc] stopping checking profiles after 32: 8/1
01-09 15:54:58.654   400  2268 E ACodec  : [OMX.rk.video_encoder.avc] configureCodec returning error -1010

01-09 15:54:58.683   400  1105 E StagefrightRecorder: Failed to create video encoder

 

经过debug 发现,在ACodec.cpp的 ACodec::verifySupportForProfileAndLevel 函数中

 
  1.  
    enum {
  2.  
        kMaxIndicesToCheck = 32, // used when enumerating supported formats and profiles
  3.  
    };
 

 

他会去 omx il中查找 支持的 profile and level:

 
  1.  
            status_t err = mOMXNode->getParameter(
  2.  
                    OMX_IndexParamVideoProfileLevelQuerySupported,
  3.  
                    &params, sizeof(params));
 

 

而 omx il 的代码中:

hardware\rockchip\omx_il\component\video\enc\Rkvpu_OMX_VencControl.c

kProfileLevels 数组有 48 个,大于 kMaxIndicesToCheck 的 32 个。

 
  1.  
    static const CodecProfileLevel kProfileLevels[] = {
  2.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel1  },
  3.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel1b },
  4.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel11 },
  5.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel12 },
  6.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel13 },
  7.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel2  },
  8.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel21 },
  9.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel22 },
  10.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel3  },
  11.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel31 },
  12.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel32 },
  13.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel4  },
  14.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel41 },
  15.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel42 },
  16.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel5  },
  17.  
        { OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel51 },
  18.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel1},
  19.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel1b},
  20.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel11},
  21.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel12},
  22.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel13},
  23.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel2},
  24.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel21},
  25.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel22},
  26.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel3},
  27.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel31},
  28.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel32},
  29.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel4},
  30.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel41},
  31.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel42},
  32.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel5},
  33.  
        { OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel51},
  34.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel1},
  35.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel1b},
  36.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel11},
  37.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel12},
  38.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel13},
  39.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel2},
  40.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel21},
  41.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel22},
  42.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel3},
  43.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel31},
  44.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel32},
  45.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel4},
  46.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel41},
  47.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel42},
  48.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel5},
  49.  
        { OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel51},
  50.  
    };
 


所以刚判断到 OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel1 的时候,就跳出来了:

01-09 15:54:58.654   400  2268 W ACodec  : [OMX.rk.video_encoder.avc] stopping checking profiles after 32: 8/1

 

解决方法:

所以可以 针对 h264 对 kMaxIndicesToCheck 这个值进行修改,或者通过其他办法修改,让他跑完整个数组。

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
克里斯蒂亚诺诺L1
粉丝 0 资源 831 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  123
统信桌面专业版【全盘安装UOS系统】介绍  117
银河麒麟桌面操作系统安装佳能打印机驱动方法  109
银河麒麟桌面操作系统 V10-SP1用户密码修改  102
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!