美文网首页
手机 软解码和硬解码 解惑

手机 软解码和硬解码 解惑

作者: wnido | 来源:发表于2017-11-27 17:39 被阅读212次

    什么是【解码】

    为了节约存储空间,我们在设备上播放的视频文件都是经过压缩的;在播放过程,需要进行一个反射的解压缩过程,这就是 解码


    什么是【软解码】 和【硬解码】

    • 软解码
      在解码工过程中借助【软件】提供的算法来完成取指、分析、运算解码等工作,全部通过【CPU】实现。
    • 硬解码
      在解码工过程中借助【硬件】提供的算法来完成取指、分析、运算解码等工作,使用【非 CPU】,如显卡 GPU 、专用的 DSP 、FPGA 、ASIC 芯片等实现

    【软解码】和【硬解码】的比较

    软解码的解码过程完全由 CPU 完成的,所以 对 CPU 的性能要求非常高。如果 CPU 性能不行, 解码速度跟不上,那我们所看到的画面就是不流畅、有卡顿的,以当前市场的手机设备,软解 4K 的视频,就非常明显看到这种现象。同时,由于 CPU 是非常耗电的, CPU 的使用率越高, 耗电量越高, 所以软解码是非常耗电的

    而硬解码是通过 GPU 等类似具备 图形处理功能的芯片完成解码过程,而 GPU 是基于大的吞吐量、并发计算设计,对数据相关性不大的重复运算,有时加速比能达到几百倍甚至更高,所以,使用 GPU 实现视频解码, 速度远快于软解码。 另外,GPU 耗电量是远小于 GPU ,所以硬解码耗电量是非常小的

    但由于,GPU 本身限于 GPU 开发平台,只能对 GPU 本身支持的编码格式才能进行解码,所以只有 符合硬解的编码格式的视频才能使用硬解码,例如 H264 格式。

    软解码

    high.png

    硬解码

    low.png

    这里举例的视频是 【720P】 ,所以比较并不是很明显。 不过,还是可以看出硬解码比软解码对 CPU 的使用率小很多:

    - 软解码: CPU 使用率 67%
    - 硬解码: CPU 使用率 7%
    

    同时,帧率硬解码比软解码要高很多,也意味着硬解画面会更流畅:

    - 软解码: FPS 是 20 (1s 中渲染 20 帧画面)
    - 硬解码: FPS 是 25 (1s 中渲染 25 帧画面)
    

    综上所述

    建议:对于符合硬解码的编码格式,例如【H264】,采用【硬解码】进行解码;不符合硬解码的编码格式视频,才采用软解码
    这样,不仅仅降低对 CPU 的负荷,让画面更流畅,还大大降低耗电量。



    补充说明

    为什么有用户在开启和关闭硬解码之后发现明显的画质区别?

    视频解码的步骤分为:

    1. VLD ( 流处理 )
    2. iDCT ( 频率转换 )
    3. MoComp ( 运动补偿 )
    4. PostProc (显示后处理,解码去块滤波 Deblocking )

    首先,无论是硬件解码还是软件解码,所进行的解码过程和解码结果都是完全一样的。
    他们的区别就是视频解码的工作是由 CPU 完成,还是由 GPU 来完成而已。
    因此,在理论上硬件解码和软件解码的效果应该是完全一样的

    但在最后一个解码步骤 PostProc ( 显示后处理,解码去块滤波操作 Deblocking )
    Deblocking 的意思为解码去块,能够消除 H.264 压缩编码可能产生的马赛克现象,真实地还原视频图像。
    Deblocking 对 CPU 提出了较高的要求,在 CPU 性能不够时 , 开启 GPU 硬件加速就会关闭解码去块滤波操作 (Deblocking) ,这时播放一些影片会看到较明显的马赛克现象,明显影响画面质量。

    换句话说,确实存在, 在 CPU 性能不够的时候,启用 硬解码 ,会关闭解码去块滤波操作 (Deblocking) ,明显影响画面质量

    但基于当前手机设备,大多数 CPU 的性能足够满足于硬解码的需求,所以,出现这种情况的手机设备必然是低端机、远次于目前市场的微量手机
    另外,我们对 iOS 和 Android 各种机型实际测试中,也未曾发现开启硬解后,画质明显下降的现象。

    相关文章

      网友评论

          本文标题:手机 软解码和硬解码 解惑

          本文链接:https://www.haomeiwen.com/subject/ycbdbxtx.html