MTK平台H264编码profile_idc和level_idc的小问题

3 篇文章 0 订阅

问题一:MTK平台H264编码相关:      

      第三方软件反馈使用我们终端h264编码level_idc和视频分辨率和h264规范不一样,不标准,所以测试了一下、确认一下问题,一查还真查出来了大问题。测试三款mtk平台的终端Android5.1、Android6.1系统都一样存在这个问题。就是无论录像多少分辨率它硬编码的level_idc用于是41,搞笑了,正常按照h264规范录制视频分辨率要和leved_idc匹配的。

MTK Android6.1录像视频SPS解析level_idc:

       

       

高通平台Android5.1 H264录像SPS解析level_idc:

     

       

MTK这个bug系统ROM能不能解决?

     硬编码:

      无解,profile_Idc和level_idc的填充在mtk的平台 *.so库中,除非在系统中增加对视频的SPS的解码,置换相应的位后再编码为相应格式,不现实。硬编码系统增加log打印到MediaCodecSource::initEncoder()后就无什么相关log,应该就到mtk平台自带的*.so库了。

      查了一些资料,最后说这些也不算是bug,H264也标准也允许你这么做。

       profile_idc和level_idc是指比特流所遵守的配置和级别。

       constraint_set0_flag 等于1是指比特流遵从H264某节中的所有规定。constraint_set0_flag 等于0是指该比特流可以遵从也可以不遵从某节中的所有规定。当profile_idc等于100、110、122或144时,constraint_set0_flag、constraint_set1_flag和constraint_set2_flag都应等于0。

     软编码:

        软件编码有没有这个问题未测试,看了一下代码,软编码Android5.1有对profile_idc和level_idc的填充部分,如果有问题系统应该可以做处理。代码大概流程图如下:

      

问题二:MTK  平台H264解码相关:

         测试发现,同一个视频使用“Elecard StreamEye Tools”解析出来的profile_idc和level_idc和使用MTK平台Android5.1系统解析出来不一样!又搞笑了……怀疑MTK之前平台的H264编解码不完善(也可能Android5.1、Android6.1系统太老了)!

“Elecard StreamEye Tools”软件解析:

         

         

   MTK Android5.1解析视频的profile_idc和level_idc:

 /storage/emulated/0/Movies/mate20_1920x1080.mp4

[OMX.MTK.VIDEO.DECODER.AVC] AVC profile = 66 (Baseline), level = 50

/storage/emulated/0/Movies/mate20_1280x720.mp4

[OMX.MTK.VIDEO.DECODER.AVC] AVC profile = 66 (Baseline), level = 50

      两个视频MTK平台解析出来和“Elecard StreamEye Tools”工具不一样,怀疑MTK对H264规范支持不完善。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值