硬解和软解

一、硬解码

硬解定义:使用GPU的专门模块来解码。

Android中硬件解码直接使用MediaCodec就可以,虽然MediaPlayer也是硬件解码,但是被封装得太死了,支持的协议很少。MediaCodec很好拓展,可以根据流媒体的协议和设备硬件本身来自定义硬件解码,代表播放器Google开源ExoPlayer

二、软解码

软解定义:使用CPU来运行视频编解码代码。

最常见的视频软解码开源是FFmpeg

目前基于FFmpeg的开源播放器有B站的ijkplayer。

三、软硬解码对比

1.耗电:硬解使用GPU解码,GPU的并行运算能力要远远高于CPU,可以大大地降低CPU的负载,更加省电;软解使用CPU解码,更加耗性能和耗电。
2.硬件支持:软解兼容性好,在哪都能用;硬解需要设备硬件支持。

总结

在Android设备硬件支持的情况下优先使用Android设备的硬件解码,减少CPU的占用,更加省电,在Android设备硬解不支持的情况下选择使用软解码。

参考

  1. Android 用MediaCodec实现视频硬解码
  2. Android视频硬解稳定性问题探讨和处理
  3. Android利用硬解硬编和OpenGLES来高效的处理MP4视频
  4. Android硬编解码接口MediaCodec使用完全解析(一)
  5. FFmpeg 硬件加速方案概览 (下)

你可能感兴趣的:(硬解和软解)