视频解码分为软解和硬解。
软解:通过软件让CPU进行视频解码处理
硬解:通过GPU运算进行视频解码处理(GPU通常是指显卡)
所谓“软解”就是通过软件让CPU进行视频解码处理;而“硬解”是指不依赖于CPU,通过专用的设备(子卡)单独完成视频解码,比如曾经的VCD/DVD解压卡、视频压缩卡都被冠以“硬解”的称号。现在实现高清硬解不需要额外的子卡,也不需要额外的投入,因为硬解码模块被整合在了GPU内部,而目前主流的显卡(包括整合显卡)都能支持硬解码。
“硬解”其实更需要软件的支持,只是基本不需要CPU参与运算,从而为系统节约了很多资源开销。通过降低CPU占用率,可以给用户带来很多实惠:
●
GPU硬解码高清视频的优势:
1.
不需要太好的CPU,单核足矣,CPU方面节约不少资金;
2.
硬解码基本相当于免费附送,不到500元的整合主板都能完美支持;
3.
硬解码让CPU占用率超低,系统有能力在看HDTV的同时进行多任务操作;
4.
CPU需要倾尽全力才能解码HDTV,而GPU只需动用0.1亿晶体管的解码模块就能完成任务,功耗控制更好;
●
GPU硬解码高清视频的劣势:
1.
起步较晚,软件支持度无法与软解相提并论;
2.
面对杂乱无章的视频编码、封装格式,硬解码无法做到全面兼容;
3.
软解拥有大量画面输出补偿及画质增强技术,而硬解这方面做得还远远不够;
4.
硬解码软件设置较为复杂,很多朋友根本不知道该如何正确使用GPU硬件解码。
虽然硬解码拥有种种缺点,但依然倍受广大用户追捧,因为低成本和节能环保这两大致命诱惑让人难以抗拒。随着时间的推移,现在硬解码的缺点基本被改进,只是很多人还不懂得如何用好硬解码。
软解码好一点,支持的格式全面,硬解码就是只支持你手机能播放的格式,软解码不如说你想播放RMVB格式视频但是用手机自带播放器播放不了
这时就要用到软解码也就是通过软件实现视频播放
这就是软解码,再比如你要播放mp4格式视频你手机自带播放器本来就支持这就是硬解码,有的软件还带智能解码,就是软件能自动调用解码程序
能硬解码的就默认用自带的播放器播放,不支持的格式用软件解码后播放,至于用哪个解码方式省点那要取决于你播放的视频格式以及你手机支持什么格式
回答完毕!不懂请追问!
硬件解码跟软件解码我们通常称为硬解跟软解,是通过移动设备观看视频时会碰到的一个概念。
首先来说下两者的区别:
硬件解码:硬件解码从字面意思很容易理解,就是通过硬件进行视频的解码工作,其中硬件解码是由GPU来进行的,使用GPU解码能够降低CPU的工作负荷,降低功耗。
软件解码:软件解码则是通过软件本身占用的CPU进行解码,所以会增加CPU工作负荷,提升功耗,
硬解及软解的优点跟缺点:
硬解优点:播放出来的视频较为流畅,并且能够延长移动设备播放视频的时间;
硬解缺点:所解码视频格式收到GPU影响,无法部分全部视频,画质也不够清晰。
软解优点:软解能够解码所有视频格式文件,且画质更加清晰;
软解缺点:由于软解加大CPU工作负荷,会占用过多的移动CPU资源,如果CPU能力不足,则软件也将受到影响。
软解码的画质会好一些,建议手机看视频用软解码。
我们在计算机上播放的视频文件都是经过压缩的,因为这样有利于节约存储空间;那么在播放过程,就需要进行一个反射的解压缩过程。在以前这项工作都是由CPU来完成的,对于普通分辨率的AVI等文件,绝大多数的CPU都可以胜任;但是发展到高清视频(1080i/p)之后,数据解压缩的工作量比以前翻了数倍。
随着技术的发展,工程师们发现显卡的GPU/VPU要比CPU更适合这类大数据量的、低难度的重复工作。视频解码工作从处理器那里分离出来,交给显卡去做,这就叫做“硬解码”,例如NVDIA的PureVideo、AMD的UVD技术等等;与之对应的,以前那种纯粹依靠CPU来讲稿的方式则是“软解码”。不过受到技术条件的限制,纯粹的“硬解码”在现阶段是不存在的,CPU依然在发挥一部分作用,只不过硬解码时GPU/VPU已经成为运算的主力。
二者的区别:
硬解码:由显卡核心GPU来对高清视频进行解码工作,CPU占用率很低,画质效果比软解码略差一点,需要对播放器进行设置。
优点:播放流畅、低功耗
缺点:受视频格式限制、功耗大、画质没有软解码好
软解码:由CPU负责解码进行播放
优点:不受视频格式限制、画质略好于硬解
缺点:会占用过高的资源、对于高清视频可能没有硬解码流畅(主要看CPU的能力)
万能解码器、完美解码播放器、暴风影音解码器、DVD解码器、Divx解码器都是不错的视频解码器
1、万能解码器:万能解码器具有CPU 资源占用少的特点,还具有优化画面的功能,是一款Windows 平台多媒体播放的必备工具。安装了本解码器之后,可使用任何支持任何播放器来播放各种格式的媒体文件。以及各种主流转换器进行WMV/DVD/FLV/AVI/RMVB格式转换。
2、完美解码播放器是一款集成了视频播放和编码解码包于一体的多功能播放软件。能实现各种格式流行视频、HDTV回放及编码的全能型影音解码器,完美解码还自带Media Player Classic、KMPlayerBSPlayer三款流行播放器,支持简、英语言平台下安装,推荐安装环境是Windows XP、DirectX 9.0C、Windows Media Player 10/11,不支持Windows9x,如需在Vista系统下使用,请在安装前先关闭Vista的UAC功能。
3、暴风影音解码器是一个最新版本的完整解码器,能够支持大部分的视频格式文件。包括AVI、VCD、DVD、MPG、MP4、RMVB、TS、TP、EVO、M2TS、MKV、OGM、MOV、SCM、CSF、FLV等,另外还能够支持高清加速和迅雷边下边播。几乎支持市场上所有的视频文件,而且可独立播放。非常实用。
4、DVD解码器:完全免费,DVD解码器新版增加了对dvd视频的支持。若您的电脑没有安装任何解码器又苦于无法观看DVD视频,安装本解码器绝对是您的首选。此解码器没有任何附加组件,仅使用少量核心解码器,即可让您的电脑支持DVD。即使您没有安装任何播放器,也可以使用Microsoft Windows Media Player等视频播放软件来播放DVD视频。
5、Divx解码器:是一项由DivXNetworks公司发明的,类似于MP3的数字多媒体压缩技术。DivX基于MPEG-4标准,可以把MPEG-2格式的多媒体文件压缩至原来的10%,更可把VHS格式录像带格式的文件压至原来的1%。通过DSL或cable Moden等宽带设备,它可以让你欣赏全屏的高质量数字电影。
一、解码的上的:播放视频(废话)
二、解码流程:
第一步:组册组件
av_register_all()
例如:编码器、解码器等都属于组件
第二步:打开封装格式(其实就是打开一个文件)
例如:.mp4、.mov、.wmv文件等等...
avformat_open_input();
第三步:查找视频流
如果是视频解码,那么查找视频流,如果是音频解码,那么就查找音频流
avformat_find_stream_info();
第四步:查找视频解码器
1、查找视频流索引位置
2、根据视频流索引,获取解码器上下文
3、根据解码器上下文,获得解码器ID,然后查找解码器
第五步:打开解码器
avcodec_open2();
第六步:读取视频压缩数据-循环读取
没读取一帧数据,立马解码一帧数据
第七步:视频解码-播放视频-得到视频像素数据
第八步:关闭解码器-解码完成
有一个简单的 demo 供大家一起探讨,欢迎指正。