手机解码是什么意思啊


手机解码是什么意思啊

整理|包包
说到移动端解码视频 , 主要就是两种 , 一种是使用硬件进行解码 , 另一种就是使用软件来解码 。说到解码就需要说一下手机的CPU , 比如说市面上的高通骁龙845 , 海思麒麟980 , 三星猎户座9810还有苹果A12 , 这些其实严格意义上并不是CPU , 而是SoC(SystemonaChip) , 它由CPU、GPU、DSP等芯片集成在一起 。
(图:高通骁龙845模块图)
其中DSP就是我们硬解音视频的主角 。DSP就是数字信号处理(DigitalSignalProcessing) , 专门负责音视频解码方面的算法处理 。他对视频解码的能力远大于CPU , 里面固定了一些特定的算法 , 使之能快速的解开容器 , 并将解出来的视频流每帧转YUV(YCbCr)格式 , 然后交给GPU转成RGB并最终渲染出来 。其中CPU不会做大负担的事 , 所以使用率不高 , 使用硬解视频基本不会造成手机发热 。
(图:使用DSP解码简略流程)
软解就是DSP做的事全部软解就是DSP做的事全部交给CPU做 , CPU负担较大 , 通常使用率要在20以上 , 分辨率和码率的提升会进一步加大CPU的消耗 。CPU较差的手机没几分钟就会明显发热 。那软解的优势在哪儿呢?因为DSP作为硬件 , 算法已经完全固定下来(部分可以通过固件更新) , 所以只能解码它所支持的 , 如果对编码处理不同有可能就无法解码成功 。而软解则可扩展性强 , 它可以将所需要解析的步骤、格式等全部写入程序中 , 然后需要什么就对应进行解码 。所以有些时候硬解可能会发生绿屏或者花屏 , 而软解则正常 。目前主流的软解就是ffmpeg , 配合OpenGLES等用于成像功能的SDK就可以实现简单的播放器 。
(图:使用软件解码简略流程)
我这儿再说说苹果移动设备方面的硬解吧 。系统iOS8以前所有的硬解都无法让开发者深入开发 , 只能通过系统播放器AVPlayer来播放视频 , 或者通过访问系统私有api , 很不方便 。
从A11开始苹果SoC中的DSP也对新的编码格式H.265进行了支持 , H.265旨在在有限带宽下传输更高质量的网络视频 , 仅需原先的一半带宽即可播放相同质量的视频 , 这个对目前日常使用习惯向偏向移动设备是一个利好的编码格式 。
平常我们所说的mp4和MPEG-4不是一个内容 , mp4只是一个容器 , 它包含有视频流VideoStream比如H.264和音频流AudioStream比如aac , 而MPEG-4就是视频流的一个标准压缩格式 。苹果设备以前没有办法播放flv容器的视频 , 只能完全通过软解 , 而如果这个flv封装的是一个标准的H.264和aac,那么开发者只需要靠CPU去解开该视频的容器(如ffmpeg的demuxer) , 拿到H.264的视频流和aac的音频流 , 将视频流交给VideoToolBox处理 , 则视频的解码可以依靠DSP , 也就降低了CPU的负荷 , 最终使用DSL或OpenGLES进行成像(使用GPU) 。
(图:借助VideoToolBox实现视频流使用DSP解码简略流程)