android播放器和视频拍摄中的硬解和软解以及硬编和软编的却别


转载

原文地址:https://blog.csdn.net/ltym2014/article/details/82354606

https://blog.csdn.net/lipengshiwo/article/details/81814160

视频解码硬解和软解的区别

硬解就是硬件解码,指利用GPU来部分代替CPU进行解码,软解就是软件解码,指利用软件让CPU来进行解码。两者的具体区别如下所示:
  硬件解码:是将原来全部交由CPU来处理的视频数据的一部分交由GPU来做,而GPU的并行运算能力要远远高于CPU,这样可以大大的降低对CPU的负载,CPU的占用率较低了之后就可以同时运行一些其他的程序了,当然,对于较好的处理器来说,比如i5 2320,或者AMD 任何一款四核心处理器来说,硬解和软件的区别只是个人偏好问题了吧。
  软解码:即通过软件让CPU来对视频进行解码处理;而硬解码:指不借助于CPU,而通过专用的子卡设备来独立完成视频解码任务。曾经的VCD/DVD解压卡、视频压缩卡等都隶属于硬解码这个范畴。而现如今,要完成高清解码已经不再需要额外的子卡,因为硬解码的模块已经被整合到显卡GPU的内部,所以目前的主流显卡(集显)都能够支持硬解码技术。

硬解

字面上理解就是用硬件解码。通过显卡的视频加速功能对高清视频进行解码。可以理解为有一个专门的电路板来进行视频的解码工作,是依靠GPU。
调用GPU的专门模块编码来解码,减少CPU运算。显卡核心GPU拥有独特的计算方法,解码效率非常高,这样不但能够减轻CPU的负担,还有着低功耗,发热少等特点。
但是,由于硬解码起步比较晚,软件和驱动对他的支持度很低,基本上硬解码内置什么杨的模块,就解码什么样的视频,面对网上各色各样的视频编码样式,兼容性不好。此外,硬解码的滤镜、字幕、画质方面都做的不够理想。
对于android设备,目前用得比较多的芯片就是高通、海思和联发科,这些芯片大都集成了很多的功能,CPU、GUP、DSP、ISP包括视频解码、音频解码等等
在Android中使用硬件解码直接使用MediaCodec就可以了,虽然MediaPlayer也是硬件解码,但是被封装得太死了,支持的协议很少。而MediaCodec就很好拓展,我们可以根据流媒体的协议和设备硬件本身来自定义硬件解码,代表播放器就是Google的ExoPlayer。

软解

字面上理解就是用软件解码。但是实际上还是要硬件支撑。这个硬件就是CPU。
在软解码过程中,需要对大量的视频信息进行运算,所以对CPU性能的要求非常高。尤其是对高清大码率的视频来说,巨大的运算量就会造成转换效率低,发热量高等问题。
我们最最常见的视频软解码开源库就是FFmpeg。目前基于FFmpeg的开源播放器有B站的ijkplayer
不过,软解码不需要过多的硬件支持,兼容性非常高,即使出现新的视频编码格式,只要安装好相应的解码器文件,就可以顺利播放。而且软解码拥有丰富的滤镜,字幕,画面处理优化等效果,只有你CPU够强悍,就能够实现更加出色的画面效果。

总结

在Android设备硬件支持的情况下优先使用Android设备的硬件解码,减少CPU的占用,更加省电。
在Android设备硬解不支持的情况下选择使用软解码,不管怎么样,视频至少能够播放,具有更好的适应性,但是增加了CPU的占用,更加费电,软硬结合才是王道,根据实际情况合理选择

Android短视频软编、硬编、滤镜、合成等功能解析

在Android上要实现一个录制功能,需要有几个方面的知识储备:自定义相机的开发、视频数据格式的了解、编码相关知识以及视频合成技术,同时如果需要美颜、磨皮等滤镜操作还需要一定的openGL的知识。

        视频的编码录制主要是软编和硬编两种方案:

  软编即采用CPU对相机采集的原始数据进行编码后再和音频一起合并成一个MP4等格式的文件。优点 是技术相对成熟,网上开源的编码以及合成库很多,实现相对较快,同时兼容性比较好。缺点 是CPU暂用率高,性能差的手机无法达到较大目标参数,同时引用了大量的第三方库,导致包很大。

       软编的具体实现方案如下图所示,流程相对清晰简单:

       camera采集YUV数据 ==> 滤镜 ==> x264编码器机型编码 ==> MP4打包合成

 

       硬编即采用手机提供的硬编接口,利用硬件芯片直接进行编码合成。优点 是速度快、效率高、CPU占用极少,即使长时间高清录制也不会发烫,同时由于使用系统API,库相对较小。缺点 是某些奇葩机型需要处理兼容性问题,同时Android上的硬编跟Surface以及openGL关系比较密切,网上相关知识较少,需要自己摸索踩坑。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM