软解和硬解

  • 硬解是需要机器中的专门的解码芯片来完成,质量因厂家的技术能力而定,部分厂商技术实力强,兼容性和解码效果做的比较好,而有些厂商技术实力稍差,兼容性和解码效果做的就不尽如意。软解就是用CPU来解码,需要CPU的性能与处理能力较强,但对流媒体格式兼容性比较好。简单来说,硬解的清晰度好,对网络要求高,软解的流畅度好和对流媒体的支持性好。(copy自百度)

方便理解为:

  • 软解
    CPU处理解码
  • 硬解
    专门的硬件芯片去处理解码

获取设置支持的编解码器

通过MediaCodecList来获取,MediaCodecList是api21以上添加的,需要判断下当前版本

public class MainActivity extends AppCompatActivity {private static final String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {MediaCodecList list = new MediaCodecList(MediaCodecList.REGULAR_CODECS);MediaCodecInfo[] supportCodes = list.getCodecInfos();Log.i(TAG, "解码器列表:");for (MediaCodecInfo codec : supportCodes) {if (!codec.isEncoder()) {String name = codec.getName();if (name.startsWith("OMX.google")) {Log.i(TAG, "软解->" + name);}}}for (MediaCodecInfo codec : supportCodes) {if (!codec.isEncoder()) {String name = codec.getName();if (!name.startsWith("OMX.google")) {Log.i(TAG, "硬解->" + name);}}}Log.i(TAG, "编码器列表:");for (MediaCodecInfo codec : supportCodes) {if (codec.isEncoder()) {String name = codec.getName();if (name.startsWith("OMX.google")) {Log.i(TAG, "软编->" + name);}}}for (MediaCodecInfo codec : supportCodes) {if (codec.isEncoder()) {String name = codec.getName();if (!name.startsWith("OMX.google")) {Log.i(TAG, "硬编->" + name);}}}}}
}

可以看到打印出的支持列表:

解码器列表:
软解->OMX.google.opus.decoder
软解->OMX.google.vp8.decoder
软解->OMX.google.h264.decoder
软解->OMX.google.amrnb.decoder
软解->OMX.google.amrwb.decoder
软解->OMX.google.aac.decoder
软解->OMX.google.vorbis.decoder
硬解->OMX.MTK.AUDIO.DECODER.MP3
硬解->OMX.MTK.AUDIO.DECODER.ADPCM.MS
硬解->OMX.MTK.AUDIO.DECODER.ADPCM.DVI
硬解->OMX.MTK.AUDIO.DECODER.GSM
硬解->OMX.MTK.AUDIO.DECODER.RAW
硬解->OMX.MTK.AUDIO.DECODER.G711.ALAW
硬解->OMX.MTK.AUDIO.DECODER.G711.MLAW
硬解->OMX.MTK.AUDIO.DECODER.FLAC
硬解->OMX.MTK.AUDIO.DECODER.WMA
硬解->OMX.MTK.AUDIO.DECODER.WMAPRO
硬解->OMX.MTK.AUDIO.DECODER.APE
硬解->OMX.MTK.AUDIO.DECODER.ALAC
硬解->OMX.MTK.VIDEO.DECODER.MPEG2
硬解->OMX.MTK.VIDEO.DECODER.HEVC
硬解->OMX.MTK.VIDEO.DECODER.MPEG4
硬解->OMX.MTK.VIDEO.DECODER.H263
硬解->OMX.MTK.VIDEO.DECODER.AVC
硬解->OMX.MTK.VIDEO.DECODER.VPX
硬解->OMX.MTK.VIDEO.DECODER.VP9
硬解->OMX.MTK.VIDEO.DECODER.VC1
硬解->OMX.MTK.VIDEO.DECODER.DIVX
硬解->OMX.MTK.VIDEO.DECODER.DIVX3
硬解->OMX.MTK.VIDEO.DECODER.XVID
硬解->OMX.MTK.VIDEO.DECODER.S263
编码器列表:
软编->OMX.google.aac.encoder
软编->OMX.google.amrnb.encoder
软编->OMX.google.amrwb.encoder
软编->OMX.google.flac.encoder
软编->OMX.google.vp8.encoder
硬编->OMX.MTK.VIDEO.ENCODER.MPEG4
硬编->OMX.MTK.VIDEO.ENCODER.H263
硬编->OMX.MTK.VIDEO.ENCODER.AVC
硬编->OMX.MTK.VIDEO.ENCODER.VPX
硬编->OMX.MTK.AUDIO.ENCODER.VORBIS
硬编->OMX.MTK.AUDIO.ENCODER.ADPCM.MS
硬编->OMX.MTK.AUDIO.ENCODER.ADPCM.DVI

Android获取设备支持的编解码器相关推荐

  1. Android获取设备状态栏status bar高度的正确姿势

    Android获取设备状态栏高度的正确姿势 正确代码方式: int height = 0;int resourceId = getApplicationContext().getResources() ...

  2. Android获取设备ID号

    Android获取设备ID号 Android有多种方式可以获取设备ID,但是每一种总会有一点限制,为此,整合几种方式在一起,这样就万无一失了 public class DeviceIdFactory ...

  3. Android 获取设备号

    前言 最近在对接口的时候 根据后台要求生成设备唯一id 作为key android 获取设备号比较简单 这里记录一下 实现 /*** 获取设备号* @param context* @return*/p ...

  4. Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

    Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...

  5. Android -- 获取设备硬件信息

    Android – 获取设备硬件信息 通过 Build 获取指定字段信息: 信息 方法 例子 主板 Build.BOARD PAR 系统定制商 Build.BRAND HUAWEI 硬件名称 Buil ...

  6. android设备id完美解决方法,安卓获取渠道名渠道id Android获取设备唯一标识的终极解决方法,防止安卓7.0时崩溃问题...

    一,先说获取渠道名(这里以友盟为例) /* * 4.5.1新加渠道名字段,用来传给后台去统计各个渠道下载量 * */ public static String getSource() { //获取渠道 ...

  7. Android 获取设备各种信息以及其它

    做手机开发,想必都希望获取手机号码吧,android中有一个类android.telephony.TelephonyManager提供这个功能. TelephonyManager tm = (Tele ...

  8. android获取设备唯一标识完美解决方案

    转自:https://blog.csdn.net/aa1733519509/article/details/50053553 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码. ...

  9. android异常信息,Android 获取设备信息 异常

    /**获取设备信息 * @param c * @return */ public static void setDeviceInfo(Context c,RequestParams params){ ...

最新文章

  1. 独家 | 基于Python的遗传算法特征约简(附代码)
  2. 小学生四则运算出题程序 无操作界面java版 简单的运用java中一些基本操作
  3. html5如何传递值,如何将var中的值传递到另一个var
  4. uni-app 用户地理位置授权
  5. oracle导出建表主键,oracle主键自动生成 配合hibernate的生成策略详解
  6. AI实战 | Tensorflow自定义数据集和迁移学习(附代码下载)
  7. Python机器学习:梯度下降法006随机梯度下降法
  8. navigationcontroller和navigationbar和navigationitem之间的区别以及不用nib实现点击屏幕关闭虚拟键盘20130911...
  9. 6.2 JAVA方法的三种调用格式
  10. IT行业都有哪些职位
  11. iOS IPA包路径,分析百度统计崩溃日志
  12. python 通达信数据_如何利用程序(如python) 从新浪财经或者雅虎财经获取到所有A股数据(历史日线数据,实时股票数据)?...
  13. 简论H.266与H.265、AV1、H.264对比
  14. 海底捞和饿了么合作了,你会来一份“火锅外卖”吗?
  15. 2019年安徽大学ACM/ICPC实验室新生赛(公开赛)
  16. 【日语学习】日语 N2 词汇核心动词 200 个
  17. STM VCP移植笔记
  18. 点,线,面,透视(手绘课)
  19. Ubuntu 通过mentohust 锐捷连接校园网
  20. operator=的用法

热门文章

  1. 2022-08-15 顾宇佳 学习笔记(数据库)
  2. L. Spicy Restaurant(多源BFS+递推)
  3. 将一个十进制数转化为二进制数,统计二进制数中1的个数
  4. kotlin 回调函数、let、also、run 、with、apply 使用总结
  5. 周易六十四卦——雷山小过卦
  6. 蜻蜓FM信息流推荐探索与实践
  7. 华为p50官方首曝鸿蒙,华为P50,会是鸿蒙系统的首发手机吗?
  8. Linux工具学习之【git】
  9. 动网论坛php源码无法安装,轻松搞定动网论坛与网站的整合
  10. 深入理解C++中的循环引用问题及解决方法