• 开发那些事儿:如何解决RK芯片视频处理编解码耗时很长的问题?


    流媒体视频直播包括以下几个步骤:采集—>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放器流播放。

    在流媒体处理编码的过程中,会有硬解码和软解码两种播放方式。两者的区别在于,硬解码是利用硬件设备上专门的解码芯片来加速解码。一般来说,硬解码的解码速度比较快,但同时也存在另一个问题,那就是兼容。由于硬解码由各个硬件厂家实现,质量参差不齐,所以很容易出现兼容性问题。

    软解码则是利用CPU的计算能力来解码,如果CPU的能力较弱,那么解码速度会较慢,而且设备也会出现发热等现象,但由于使用统一的算法,所以兼容性较好。对于同一平台,同一硬件环境,硬件编码速度快于软件编码,CPU占有率更低,所以能用硬件编码的条件下,尽量使用硬件编码。

    技术人员在测试产品时发现,在RK瑞芯微中使用mpp进行硬件编解码时,将解码后的yuv数据通过内存拷贝函数memcpy,拷贝时发现耗时很长,大约80-100ms ,这样就会导致解码数据速度跟不上,对播放效果会有影响。

    针对该情况,我们也提供了一个解决方案。此处的流程是264->yuv->jpeg,为了避免yuv数据拷贝耗时,新增接口入参为H.264数据,抽帧频率,出参为jpeg数据。因为yuv数据直接使用mpp的内存,该操作减少了内存搬移,所以也极大降低了编解码耗时,满足业务使用需求。

    作为一家起源于EasyDarwin开源框架的技术型企业,在开发过程中,我们也乐于和所有的技术开发爱好者们一起交流代码技术、分享开发经验,为大家提供一些小小的参考。

    TSINGSEE青犀视频聚焦于视频流媒体技术的研发与拓展,在视频能力与服务上,不断结合AI、大数据、边缘计算、物联网等新兴技术,丰富平台功能模块,触达用户的多样化需求。目前我们已经面向市场推出多元化的视频平台,如EasyCVR、EasyGBS、EasyDSS、EasyNVR等,能实现多类型设备接入、多协议支持、多格式视频流输出、多终端平台兼容。感兴趣的用户可以前往演示平台进行体验或部署测试。

  • 相关阅读:
    jQuery Validate input是动态变化的
    flexigrid随手记
    今日随笔:scrollTop与overflow
    滚动条自动滚到底
    团队项目计划会议
    电梯演讲视频+原型展示
    NABCD项目分析
    团队第一次会议纪要
    软件开发团队介绍
    2020年11月24日
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/16482184.html
Copyright © 2020-2023  润新知