硬解码与软解码的选择

前言

事物都有两面性,软解码和硬解码的并存,存在即合理,没有哪个最好,以后两者都会更好,而对于如何选择,根据项目需要。

在上篇《快速集成一个视频直播功能》 中提到,“确定需求后进行了一堆调研,最后在B站的 ijkplayer 与 Google 的 ExoPlayer 中做出了选择”,当时毅然决然的选择 ExoPlayer 原因有很多,如有兴趣,可关注我的gitchat接下来要分享的内容,微信扫描二维码便可以进入报名,《如何更加安全、高效地选择开源项目》 ,会详细介绍如何更好的选择一个第三方开源。

不多说,本篇先抛开稳定性、集成性、兼容性、健全性之余讨论,只做硬解码与软解码的分析,这也是当时选择 ExoPlayer 的重要原因之一。

区别

举个例子,CPU 相当于公司的 CEO ,GPU相当于公司技术总监、产品经理之类,来了一个需求,如果采用软解码,那就是让 CEO 去画原型,去一线写代码,这期间还要忙着各种大小的事物处理,如果采用硬解码,那就是CEO 朝技术总监、产品经理发指令,让他们去完成一件事,并且定期查询完成的程度。

  • 硬解码:就是调用GPU的专门模块进行解码,由显卡核心GPU来对视频进行解码工作。
  • 软解码:通过软件让CPU来对视频进行解码处理。

视频的编解码是一个很消耗性能的操作,最简单的例子就是前几年玩游戏的时候,经常手机发烫,有些配置差一点的手机,看个视频手机就发烧发热。

优缺点

网上看到一句话,“硬解码是将原来全部交由CPU来处理的视频数据的一部分交由GPU来做,而GPU的并行运算能力要远远高于CPU,这样可以大大的降低对CPU的负载,CPU的占用率较低了之后就可以同时运行一些其他的程序了。”

如果仅仅是上述这样,那是不是用GPU就是有绝对优势?那么诸如ijkplayer等第三方的优势又何在呢?ijkplayer只是大名鼎鼎的FFmpeg的一个fork而已,FFmpeg的fork现在也多的泛滥,良莠不齐。

下面说下两者优缺点:

这里写图片描述

上面对比中一个是功耗一个是总功耗,这个也很容易理解,GPU的电路更复杂,并行运算能力要远远高于CPU,于是耗电量就更高,GPU功耗大,但运行速度提升更多,功耗 = 功率 * 时间,所以就算功率乘个4,但是时间除以个10,总耗能还是降低。

选择

对于硬解码和软解码的选择,这个真心说不上哪个更好,根据项目的需要,现在几乎所有的设备都支持硬解码和软解码,仅支持一种的Android移动设备已经属于古董级的,我是没见到过,之前更多的人愿意选择软解码,更大的原因是因为硬件解码支持的格式较少,而软解码对于格式是不受限制的。

现在随着硬件的不断提高,解码技术的不断成熟和完善,我是更倾向硬解码,但硬件提升的同时,CPU也在不断的优化和提高,现在也不需要像之前那样尽可能节省CPU,现在处于性能过剩的时代,CPU已经很难处于负荷状态,选择软解码或者硬解码都是没有谁对谁错,刚刚图上已经贴出和标记两者的优点,根据项目需要选择。

当时选择硬解码的ExoPlayer,是因为只需要播放m3u8格式的视频,画面上没有那么高的追求,对于这样的需求,硬解码更符合公司的口味和用户的体验,至少可以节省更多的电量。

友情推荐:

这里写图片描述

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值