整理|包包
说到移动端解码视频,主要就是两种,一种是使用硬件进行解码,另一种就是使用软件来解码。说到解码就需要说一下手机的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解码简略流程)
本文来自“修夏”用户投稿,该文观点仅代表作者本人,不代表华夏信息网立场,本站不对文章中的任何观点负责,内容版权归原作者所有、内容只用于提供信息阅读,无任何商业用途。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站(文章、内容、图片、音频、视频)有涉嫌抄袭侵权/违法违规的内容,请发送邮件至1470280261#qq.com举报,一经查实,本站将立刻删除、维护您的正当权益。如若转载,请注明出处:http://www.xxxwhg.com/zh/102440.html