1.概念

从数字视频诞生以来,硬解码和软解码的说法一直伴随着它的发展。数字视频的软解码是指在通用CPU上通过专门的播放软件解码并播放视频;而硬解码则是指在专用的硬件解码模块解码视频,然后将解码数据送至显示屏播放。严格来说,并不存在纯粹的硬解码,因为即使有硬件协处理模块存在,整个解码过程也需要软件来控制。所以本文所讨论的是约定俗称的软解码和硬解码。
2.历史
早在20世纪80年代,数字视频商业化应用(Sony的D1格式,http://en.wikipedia.org/wiki/Digital_video#History)已经出现。那时的数字视频是未经压缩地存储在磁带上,所占空间非常大,其相关产品极其昂贵,普通消费者难以承担,因此数字视频的概念没有普及。1992年数字视频压缩标准MPEG-1的发布,尤其后来的基于该标准的VCD标准发布以及相关产品的问世,极大地推动了数字视频在消费领域的发展,同时也使数字视频的概念在消费者中得到了普及。后来的MPEG-2和基于其上的DVD和数字电视的普及,让消费者欣赏到更高品质的视频节目。新世纪的H264标准和其它私有视频标准如RM,WMV,VP8格式等,极大促进了网络视频的快速发展。去年新一代标准H.265的推出,标志着数字视频技术和产业达到了一个新的高度。
在数字压缩标准(技术)不断进步的同时,它的编解码技术、手段也有不断的创新。数字视频压缩标准刚刚诞生的上世纪90年代初,通用CPU计算能力远远无法满足解码需求,所以那时的解码方式全部采用专门硬件解码芯片来解码,如VCD播放机、MPEG-1解压卡(可以插到386或者486电脑上用来播放VCD电影)。到了2000年左右,计算机的性能已经可以播放DVD节目,这时涌现出不少优秀的DVD播放软件,可以在个人计算机上流畅地软解码DVD数据。这一时期软解码和硬解码都非常流行。此后随着网络的发展,网络视频发展迅猛。网络视频的压缩格式多种多样,如RM、VP8、MPEG4、H.264、WMV、MPEG2。由于格式的多样,对于硬件实现来说,实现起来相对复杂,另外这一时期的网络终端是个人电脑,其运算能力也足以解码这些视频内容,所以软解码的优势比较明显。当下, ARM架构的通用CPU在移动设备领域取得了X86架构在个人电脑领域那样的地位。ARM架构的CPU主频也可以达到1.5GHZ以上,同时双核,四核甚至八核的CPU也得到了广泛的应用,其运算能力早已达到或者超过了以前的PC。视频软解方案也大量出现在移动设备中。
3.解码流程以及软硬解码的区别
数字视频软解码, 是指视频流数据完全通过通用CPU来实现播放。其大致流程如下:首先视频播放软件把视频流文件从存储介质中读取到内存中,然后通过一个封装格式解析模块,把文件中的视频数据和音频数据分开;接下来播放软件负责把视频数据传送到视频解码模块,音频数据传送到视频解码模块;视频解码模块也是一个运行在通用CPU上的纯粹的软件模块,它利用复杂的算法,实现对视频数据的解压缩;解压缩之后的数据被送到视频显示模块,由显示模块驱动硬件来显示视频内容。音频数据的处理方式类似。
数字视频的硬解码,则是在专用的解码硬件模块协助之下,CPU完成视频流数据的播放。它的流程是:首先通用CPU负责把视频流数据读到内存中,有运行在通用CPU上的数据封装格式解析模块把数据中视频和音频分开,其中音频数据被送到专用的硬件解码模块中去,由硬件解码模块负责把视频数据解压缩,把解压缩出来的数据又送回通用CPU,由后者用解压后的数据驱动硬件实现视频的显示。而音频可能是由通用CPU软解码,也可能有专门的硬件模块来进行音频解码。
从上述描述中可以看出,不管是硬件解码或者软件解码,通用CPU的参与必不可少,通用CPU负责视频流的播放流程。不同之处是极大运算量的解码算法是在通过CPU中完成,还是在专用硬件解码模块中完成。
4.软解码和硬解码的应用
目前压缩视频的软解码和硬解码均广泛存在,然而二者的应用领域和范围有一定差别。
软解码主要在下列设备广泛应用: 
(1)个人计算机。目前个人计算机上的视频全部是通过软解码的形式实现播放的,这个和个人应用以及网络应用中,存在大量的压缩格式有关,同时也和目前个人计算机超强的计算能力密不可分。
(2)智能手机。现在的智能手机芯片都具有很强的计算能力,同时也都有视频硬件解码模块,但是硬件解码模块支持的视频格式有限,同时受限于与之适配的专用播放软件,所以智能手机在播放网络视频时,大部分采用是软解码方式。
(3)平板电脑。平板电脑普遍采用与智能手机同样的芯片组,同时使用方式也与智能手机类似,所以在播放网络视频也主要采用软解码。
硬解码主要应用于下列设备:
(1)智能手机和平板电脑,如前所述,这些设备存在视频加速模块,在播放本地高清文件时,采用硬解码的情形还是比较多的。
(2)机顶盒。早期的机顶盒基本上是一个MIPS架构的CPU+硬件解码模块。所以在这种设备上只存在硬解码一种情形。不过最近比较新的机顶盒采用与智能手机相同档次的芯片,但是基于成本考虑,大部分机顶盒还是采用硬解码方案。不过随着芯片性能提升和价格的降低,机顶盒采用软解码的比例会慢慢提升。
(3)家用相机(摄像和回放功能)。具有摄像功能的相机,都具有回放功能,这些设备的视频解码都是应用硬解码实现。
(4)视频会议。视频会议强调实时性,同时视频编码格式唯一,解码一般是硬解码
5.趋势与展望
硬件解码的存在是为了弥补通用CPU的运算能力的不足。随着通用CPU的运算能力的提升,原来在通用CPU上无法完成的解码任务,也逐渐可以完成,这时硬件解码方案就显得不太重要了。目前的智能手机芯片软解码MPEG-1,MPEG-2视频数据非常流畅,部分手机软解码H.264视频数据也很流畅,所以在智能手机领域用软解码方式也越来越普遍。但是这并不是说明硬解码方式会慢慢淡出,因为人们的视频压缩比,视频解析度的需求也在不断提升,这就要求设备有更强大的计算能力,在通用CPU无法满足的情况下,硬件解码模块也是必不可少的。
去年H.265标准的推出带来了硬件解码与软件解码之间的一些争论,争论的焦点是在智能手机上到底H.265硬件解码会占主流地位,还是软件解码占主流地位。硬件解码支持者认为,智能手机芯片计算能力支持H.265高清播放还比较勉强,只有用硬件解码才能实现流畅的播放,从成本考虑不必仅仅为了支持H.265而对主芯片要求更高的性能。软解码支持者则从标准成熟度以及通用CPU的性能发展考虑,认为H.265作为一个比较新的标准,会经过不断的修订,如果用硬件解码方案,可能硬件无法随着修订案不断地更改,导致硬件无法解码有关视频,另外通用CPU的性能提升大致符合摩尔定律,性能提升很快。原来认为在ARM架构下软解码H.265视频是不太可能的事情,现在看来是可以实现的。用红米手机(小米公司出品的一款低价的智能手机,采用MTK6589芯片,四核cotrtex-A7 1.5G)播放H.265压缩格式的1080p的视频,已经非常流畅(播放软件采用的是北京瑞普图视科技有限公司开发的H.265播放apk,视频播放能到30fps以上)。目前高端手机普遍采用的是运算能力更强的高通骁龙800四核处理器,播放H.265视频更是没有问题。
本文摘自:http://blog.163.com/yzf918@126/blog/static/62265699201402655322797/

HEVC的软解码和硬解码相关推荐

  1. 软解码与硬解码区别linux,软解码和硬解码哪个好 软解码和硬解码有什么区别

    喜欢用手机看视频的同学应该都会接触到这样一个概念,手机软解码和硬解码.虽然这两个选项在播放器中再常见不过.不过还是很多机友不知道两者的区别再哪里.就针对这个问题百事网小编给大家普及一下相关的软解和硬解 ...

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

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

  3. android jni 硬解码,Android 硬解码 MediaCodec 遇到的(部分手机绿屏)API21

    MediaCodec 是android用来做音视频编解码 下面是遇到其它的问题(解码几分钟后一直dequeueInputBuffer-1) http://blog.csdn.net/qq3773663 ...

  4. 硬解码和软解码的区别

    我们在计算机上播放的视频文件都是经过压缩的,因为这样有利于节约存储空间:那么在播放过程,就需要进行一个反射的解压缩过程.在以前这项工作都是由CPU来完成的,对于普通分辨率的AVI.RMVB等文件,绝大 ...

  5. 硬解码与软解码的选择

    前言 事物都有两面性,软解码和硬解码的并存,存在即合理,没有哪个最好,以后两者都会更好,而对于如何选择,根据项目需要. 在上篇<快速集成一个视频直播功能> 中提到,"确定需求后进 ...

  6. MediaCodec在Android视频硬解码组件的应用

    https://yq.aliyun.com/articles/632892 云栖社区> 博客列表> 正文 MediaCodec在Android视频硬解码组件的应用 cheenc 2018- ...

  7. Android视频滤镜添加硬解码方案

    由于工作的需求,研究过了一段时间的Android 的音视频播放渲染以及编辑方面的知识,这里就自己一些浅薄的了解对所了解做一个简单的介绍和记录,如有不对的地方请指正!同时也会记录下硬件解码的情况下完成滤 ...

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

    关于"硬解码"与"软解码" 忧蓝 发布于: 2010-08-02 11:03 由于高清视频的分辨率远远高于一般格式视频,使得高清视频的码率非常高.再加上VC-1 ...

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

    由于高清视频的分辨率远远高于一般格式视频,使得高清视频的码率非常高.再加上VC-1和H.264编码的压缩率很高,解码运算的运算量很大.因此常规地直接用CPU解码(即常说的"软解") ...

最新文章

  1. IPMSM弱磁控制策略
  2. 如何在JavaScript中实现堆栈和队列?
  3. 局部变量、全局变量、堆、堆栈、静态和全局
  4. android JNI调用(Android Studio 3.0.1)(转)
  5. What we find changes who we become.
  6. DDD实战成绩管理---用户故事
  7. java.lang.OutOfMemoryError: PermGen space tomcat启动项目出错
  8. IT故事:软件测试点亮了我人生的烛光
  9. HI3518EV200初体验
  10. 新手怎么创建域名?创建域名后怎么样建站?
  11. 公安人员审问四名窃贼嫌疑犯
  12. js获取图片像素颜色,修改图片像素颜色
  13. 如何在Windows版iTunes中播放Ogg音乐文件
  14. 雷电网络:前景,挑战,路线
  15. 绿色IT十大攻略:营建企业绿色IT环境
  16. C语言中 指针变量 取地址符的用法 *指针变量名的用法
  17. FFmpeg命令行将mp3/wav/flac/ape转pcm
  18. 良知VS野心,苹果为何要翻新手机?
  19. Linux 电脑系统基本操作
  20. 用bim建模和用传统的图纸有什么差别?什么bim软件能提高建模效率?

热门文章

  1. 2022年上半年软考模拟卷
  2. 基于javaweb的校园班级同学通讯录管理系统(java+ssm+html+jsp+mysql)
  3. P2P网贷系统开发公司
  4. VB实现BMP图像文件的读取、显示与存储
  5. JVM优化及面试热点分析
  6. 中国金色系列珠光颜料市场深度研究分析报告
  7. BBR/Vegas/CUBIC拥塞控制算法对比
  8. 做邮件服务系统的一点心得
  9. rsync 匹配通配符 * 失败 link_stat failed: No such file or directory
  10. C语言DNA序列的编码,DNA (C语言代码)