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

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

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

java硬解码软解码 软解码与硬解码区别_java硬解码软解码

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

java硬解码软解码 软解码与硬解码区别_java硬解码软解码_02

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

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

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