硬解码与软解码的选择

标签: ExoPlayer 硬解码 软解码 Android
1384人阅读 评论(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格式的视频,画面上没有那么高的追求,对于这样的需求,硬解码更符合公司的口味和用户的体验,至少可以节省更多的电量。

友情推荐:

这里写图片描述

查看评论

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

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

“硬解码”与“软解码”的区别

☆什么是“软解码”,什么又是“硬解码”呢?   我们在计算机上播放的视频文件都是经过压缩的,因为这样有利于节约存储空间;那么在播放过程,就需要进行一个反射的解压缩过程。在以前这项工作都是由CPU...
  • xdwyyan
  • xdwyyan
  • 2015-01-04 20:08:17
  • 1305

关于“硬解码”与“软解码”

由于高清视频的分辨率远远高于一般格式视频,使得高清视频的码率非常高。再加上VC-1和H.264编码的压缩率很高,解码运算的运算量很大。因此常规地直接用CPU解码(即常说的“软解”)会极大地消耗CPU的...
  • zhongbeida_xue
  • zhongbeida_xue
  • 2016-05-25 10:46:41
  • 2393

硬解码和软解码

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

硬解码软解码

硬解码和软解码         视频解码有四个步骤,分别是VLD(流处理)、iDCT(频率转换) 、MoComp(运动补偿)和PostProc(显示后处理,解码去块滤...
  • kieven2008
  • kieven2008
  • 2012-08-02 15:27:47
  • 7984

Android 原生ExoPlayer 解析

1.简述与应用范围 ExpPlayer是一个开源的,App等级的媒体API,它的开源项目包含了library和示例。 ExoPlayer相较于MediaPlayer有很多优点: 1. 支...
  • rayxiang520
  • rayxiang520
  • 2017-01-14 17:48:45
  • 3543

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

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

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

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

请问android使用MediaCodec进行解码,就是硬解码吗?软解码和硬解码的优先级是怎样的?

在MediaCodec里有接口可以枚举所有解码器,每种编码可能都有多个解码器。 MediaCodec mediaCodec = MediaCodec.createDecoderByType(“vid...
  • xmc281141947
  • xmc281141947
  • 2016-11-18 17:20:33
  • 4106

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

在手机评测视频播放能力的时候经常会提到“硬解码”和“软解码”,但是很多人不太明白是什么意思,其实问题很简单。大家都知道PC都有CPU和GPU(显卡),在手机上也是有CPU和GPU。     手机和电...
  • tiebanshao
  • tiebanshao
  • 2016-05-03 15:23:58
  • 1940
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 27万+
    积分: 3066
    排名: 1万+
    我的公众号
    博客专栏