为了节省储存空间,大部分视频文件在进行播放之前都会经过压缩。相反,在播放的过程中就需要进行一个反射的解压缩过程,最早这项工作是由CPU完成的,像一些普通分辨率的AVI、Rmvb等文件,绝大多数CPU都可以胜任,但是发展到现在人们开始偏向于1080p超清视频需求之后,数据解压缩的工作量翻倍增长。再加上技术不断发展,在小视频程序开发过程中,经常会遇到关于硬编解和软编解之间的选择问题。至于如何选择,根据情况才能做出选择。
1.推流编码
推荐Android4.3或以上使用硬件编码,以下使用软件编码,ios使用全硬件编码方案。
2.播放解码
Android和ios播放器大都使用软件解码方案,虽然在一定程度上牺牲功耗,但是在细节方面表现还是不错的。
3.软编码和硬编码的作用
软解码:使用CPU进行编码
硬编码:使用非CPU进行编码
图片来源于网络4.软编码和硬编码的比较
软编码:实现直接、简单和参数调整方便,但CPU负载较重,性能比起硬编码来说较低,软编码可以在运行时确定,低码率下的质量会比硬编码的质量要好一些。
硬编码:性能好,在低码率下质量低于软编码器,而硬编码是不能够改变的,但是部分产品在GPU硬件平台上移植了优秀的软编算法,质量基本等同于软编码。
视频编解码是一个非常消耗性能的操作,比如我们日常在用手机玩游戏时,经常会遇到手机发热发烫地问题。虽然分析了视频编解码的相关参数,但是实际情况最好的编解码效果是根据机型进行适配的。由于ios的设别类型较少,可以做到每个机型针对性的测试和优化,但是对于Android来说,就很难做到将机型进行针对性调优,再加上安卓市场每年都会推出很多机型,如果在编写代码时固定之后,就会使得后期的维护和迭代困难。
软编码是一种设计,而硬编码不过是一种具体的实现。小视频程序开发不只是需要一个软件的实现,更加需要软件能够很好的修改从而方便扩展。我们常说的对程序进一步重构,目的就在于实现对象之间的松耦合,使程序能够应对多种情况下的变化,具有一定的扩展性。硬编码和软编码只是一种表现在实际情况中的一种问题,而这种思想可以应用于多个方面。
本文声明原创,转载请注明出处。
网友评论