关闭

硬解码与软解码的选择

标签: ExoPlayer硬解码软解码Android
941人阅读 评论(0) 收藏 举报
分类:

前言

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

在上篇《快速集成一个视频直播功能》 中提到,“确定需求后进行了一堆调研,最后在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格式的视频,画面上没有那么高的追求,对于这样的需求,硬解码更符合公司的口味和用户的体验,至少可以节省更多的电量。

友情推荐:

这里写图片描述

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

视频软解码和硬解码的区别

对于视频的传输而言,解码的认识应该是基础的。 那么什么是软解码,什么又是硬解码呢?之间的差异在哪里呢。难道只是专有名词的不同吗?其实他两个的区别很明显 区别点 我们在计算机上播放的视频文件都...
  • qq_15807167
  • qq_15807167
  • 2016-08-20 17:35
  • 5539

ExoPlayer备忘录

ExoPlayer1.简述与应用范围ExpPlayer是一个应用于Android系统4.1以上的,开源的,App等级的媒体API,它的开源项目包含了library和示例。它用Java实现了解封装,用M...
  • henryjax
  • henryjax
  • 2016-05-04 10:46
  • 4375

视频软解码和硬解码的区别

对于视频的传输而言,解码的认识应该是基础的。 那么什么是软解码,什么又是硬解码呢?之间的差异在哪里呢。难道只是专有名词的不同吗?其实他两个的区别很明显 区别点 我们在计算机上播放的视频文件都...
  • qq_15807167
  • qq_15807167
  • 2016-08-20 17:35
  • 5539

硬解码和软解码

硬解码和软解码 1.硬件解码就是通过显卡的视频加速功能对高清视频进行解码。        因此硬解码能够将CPU从繁重的视频解码运算中释放出来,使播放设备具备流畅播放高清视频的能力。显卡的GPU/VP...
  • Jason_Fish
  • Jason_Fish
  • 2017-04-11 14:38
  • 854

手机视频硬解码和软解码的区别

在手机评测视频播放能力的时候经常会提到“硬解码”和“软解码”,但是很多人不太明白是什么意思,其实问题很简单。大家都知道PC都有CPU和GPU(显卡),在手机上也是有CPU和GPU。     手机...
  • u011467458
  • u011467458
  • 2017-03-21 15:25
  • 924

硬解码和软解码

硬件解码就是通过显卡的视频加速功能对高清视频进行解码。因此硬解码能够将CPU从繁重的视频解码运算中释放出来,使播放设备具备流畅播放高清视频的能力。显卡的GPU/VPU要比CPU更适合这类大数据量的、低...
  • biezhihua
  • biezhihua
  • 2016-11-10 19:17
  • 1445

Android视频播放软解与硬解的区别

硬解,用自带播放器播放,android中的VideoView 软解,使用音视频解码库,比如FFmpeg 一、硬解码硬解:就是调用GPU的专门模块编码来解,减少CPU运算,对CPU等硬件要求也相对低点。...
  • u010072711
  • u010072711
  • 2016-09-02 14:36
  • 8659

手机视频硬解码和软解码的区别

在手机评测视频播放能力的时候经常会提到“硬解码”和“软解码”,但是很多人不太明白是什么意思,其实问题很简单。大家都知道PC都有CPU和GPU(显卡),在手机上也是有CPU和GPU。     手机和电...
  • tiebanshao
  • tiebanshao
  • 2016-05-03 15:23
  • 1617

Android中软解码和硬解码的优先级

我们先来看一下Android系统中解码器的命名,软解码器通常是以OMX.google开头的。硬解码器通常是以OMX.[hardware_vendor]开头的,比如TI的解码器是以OMX.TI开头的。当...
  • mirkerson
  • mirkerson
  • 2014-07-11 13:51
  • 4882

iOS 扩展Ijkplayer解码方式

Ijkplayer框架中,解码方式的选择只有 智能硬解(硬解失败,自动转软解)、软解 两种,功能上讲,两种方式已够用,但偶尔也有需求让扩展成用户自选的三种解码方式:智能、硬解、软解。下文讲的就是如何在...
  • Nine_Yao
  • Nine_Yao
  • 2017-05-19 17:42
  • 1213
    个人资料
    • 访问:251383次
    • 积分:2878
    • 等级:
    • 排名:第14252名
    • 原创:44篇
    • 转载:0篇
    • 译文:0篇
    • 评论:321条
    QQ交流群

    Android路上

    611566797
    博客专栏
    我的公众号