首页 > 编程知识 正文

QQ浏览器视频本地解码中(QQ视频解码中)

时间:2023-05-04 19:58:48 阅读:100039 作者:3546

作者|视频极致链科技移动团队的无忧小球

整理|包

说到移动端的视频解码,主要有两种,一种是用硬件解码,另一种是用软件解码。说到解码,就需要说说手机的CPU了,比如高通骁龙845、海斯麒麟980、三星的夏座9810、苹果A12。这些不是严格意义上的CPU,而是由CPU、GPU、DSP等芯片集成而成的SoC(片上系统)。

(图:高通骁龙845框图)

其中,DSP是我们硬件解码音视频的主角。DSP是数字信号处理,负责音视频解码的算法处理。他对视频的解码能力远远大于CPU,并且在里面固定了一些特定的算法,让它可以快速解锁容器,将解码后的视频流每一帧都变成YUV(YCbCr)格式,然后再转到GPU转到RGB,最后进行渲染。其中CPU不会是很大的负担,所以使用率不高,使用硬件解码视频基本不会引起手机发热。

(图:使用DSP解码的简单过程)

软解决方案就是DSP做的。所有的软解决方案都是把DSP做的事情交给CPU,负担很重。通常利用率在20以上,分辨率和码率的提高会进一步增加CPU的消耗。CPU不好的手机,几分钟后明显会发烫。软解有什么好处?因为DSP是硬件,算法已经完全固定(部分可以通过固件更新),所以只能解码自己支持的,如果编码处理不一样,可能就不成功了。软解决方案具有很强的可扩展性。它可以将所有需要解析的步骤和格式写入程序,然后解码出需要的内容。所以有时候硬件解码可能会出现绿屏或者花屏,而软解是正常的。目前主流的软解决方案是ffmpeg,用OpenGL ES等成像功能的SDK可以实现一个简单的播放器。

(图:使用软件解码的简单过程)

我来说说苹果移动设备的硬件解码。在iOS 8之前,所有的硬件解码都不能由开发者深度开发,所以只通过系统播放器AVPlayer或者通过访问系统私有api来播放视频是非常不方便的。

从iOS 8开始,苹果就开放了一个分析硬件的库,让开发者可以调用,也就是VideoToolBox。说到这里,我们可以先看看苹果SoC支持哪些方面的硬件解码。容器依然是MP4、MOV、M4A,其中视频流压缩格式支持A4-A6的H.264/AVC/MPEG-4 Part 10(直到profile 100且达到5.1级)、MPEG-4 Part 2和H.263自芯片A7以来,增加了H.264的轮廓110,允许每个颜色通道从8位编码增加到10位编码,这使得有可能具有更高级别的颜色细节。该功能通常用于电视台或媒体编辑行业。

从A11开始,苹果SoC中的DSP也支持了新的编码格式H.265,H.265旨在以有限的带宽传输更高质量的网络视频,并且只需原带宽的一半就能播放同样质量的视频,是目前日常使用习惯青睐移动设备的有利编码格式。

Mp4和MPEG-4不是同一个内容。mp4只是一个容器,里面包含了H.264这样的视频流和aac这样的音频流。MPEG-4是视频流的标准压缩格式。苹果以前没有办法播放flv容器的视频,只能通过软解码。如果这个flv包是标准的H.264和aac,那么开发者只需要依靠CPU解锁视频容器(比如ffmpeg的demuxer),获取H.264的视频流和aac的音频流,并将视频流交给VideoToolBox进行处理。那么视频解码就可以依靠DSP,这样会减轻CPU的负荷。最终实现视频解码。

(图:使用带视频工具箱的数字信号处理器进行视频流解码的简要流程)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。