查看安卓设备的音视频解码器信息

方法一:

在APP中调用接口

复制代码
import android.media.MediaCodecInfo;
import android.media.MediaCodecList;

    public void showDecoder() {
        MediaCodecList codecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
        MediaCodecInfo[] codecInfos = codecList.getCodecInfos();
        for (MediaCodecInfo codecInfo : codecInfos) {
            if(!codecInfo.isEncoder()) {
                String[] types = codecInfo.getSupportedTypes();
                String name = codecInfo.getName();
                String logString = "codec name = " + name + ", supported types: " ;
                for(String type : types) {
                    logString = logString + type + ", ";
                }
                Log.i("MediaCodec", logString);
            }
        }
    }

这里的MediaCodecInfo有一些非常实用的接口,除了上面用到的isEncoder()和getSupportedTypes(),还有isSoftwareOnly(),isVendor(),isHardwareAccelerated()等。

我在设备中打印出的日志如下,其中,OMX开头的就是硬解

复制代码
10-10 14:01:57.596  8821  8821 I MediaCodec  : codec name = c2.qti.alac.sw.decoder, supported types: audio/alac,
10-10 14:01:57.596  8821  8821 I MediaCodec  : codec name = c2.qti.ape.sw.decoder, supported types: audio/x-ape,
10-10 14:01:57.596  8821  8821 I MediaCodec  : codec name = c2.qti.dsd.sw.decoder, supported types: audio/dsd,
10-10 14:01:57.596  8821  8821 I MediaCodec  : codec name = c2.qti.amrwbplus.hw.decoder, supported types: audio/amr-wb-plus,
10-10 14:01:57.596  8821  8821 I MediaCodec  : codec name = c2.qti.amrwb+.hw.decoder, supported types: audio/amr-wb+,
10-10 14:01:57.596  8821  8821 I MediaCodec  : codec name = c2.qti.wma.hw.decoder, supported types: audio/x-ms-wma,
10-10 14:01:57.597  8821  8821 I MediaCodec  : codec name = c2.qti.alac.hw.decoder, supported types: audio/alac,
10-10 14:01:57.597  8821  8821 I MediaCodec  : codec name = c2.qti.ape.hw.decoder, supported types: audio/x-ape,
10-10 14:01:57.597  8821  8821 I MediaCodec  : codec name = c2.android.aac.decoder, supported types: audio/mp4a-latm,
10-10 14:01:57.597  8821  8821 I MediaCodec  : codec name = OMX.google.aac.decoder, supported types: audio/mp4a-latm,
10-10 14:01:57.597  8821  8821 I MediaCodec  : codec name = c2.android.amrnb.decoder, supported types: audio/3gpp,
10-10 14:01:57.597  8821  8821 I MediaCodec  : codec name = OMX.google.amrnb.decoder, supported types: audio/3gpp,
10-10 14:01:57.597  8821  8821 I MediaCodec  : codec name = c2.android.amrwb.decoder, supported types: audio/amr-wb,
10-10 14:01:57.597  8821  8821 I MediaCodec  : codec name = OMX.google.amrwb.decoder, supported types: audio/amr-wb,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = c2.android.flac.decoder, supported types: audio/flac,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = OMX.google.flac.decoder, supported types: audio/flac,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = c2.android.g711.alaw.decoder, supported types: audio/g711-alaw,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = OMX.google.g711.alaw.decoder, supported types: audio/g711-alaw,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = c2.android.g711.mlaw.decoder, supported types: audio/g711-mlaw,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = OMX.google.g711.mlaw.decoder, supported types: audio/g711-mlaw,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = c2.android.mp3.decoder, supported types: audio/mpeg,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = OMX.google.mp3.decoder, supported types: audio/mpeg,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = c2.android.opus.decoder, supported types: audio/opus,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = OMX.google.opus.decoder, supported types: audio/opus,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = c2.android.raw.decoder, supported types: audio/raw,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = OMX.google.raw.decoder, supported types: audio/raw,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = c2.android.vorbis.decoder, supported types: audio/vorbis,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = OMX.google.vorbis.decoder, supported types: audio/vorbis,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = c2.qti.avc.decoder, supported types: video/avc,
10-10 14:01:57.598  8821  8821 I MediaCodec  : codec name = OMX.qcom.video.decoder.avc, supported types: video/avc,
10-10 14:01:57.599  8821  8821 I MediaCodec  : codec name = c2.qti.avc.decoder.low_latency, supported types: video/avc,
10-10 14:01:57.599  8821  8821 I MediaCodec  : codec name = OMX.qcom.video.decoder.avc.low_latency, supported types: video/avc,
10-10 14:01:57.599  8821  8821 I MediaCodec  : codec name = c2.qti.avc.decoder.secure, supported types: video/avc,
10-10 14:01:57.599  8821  8821 I MediaCodec  : codec name = OMX.qcom.video.decoder.avc.secure, supported types: video/avc,
10-10 14:01:57.599  8821  8821 I MediaCodec  : codec name = c2.qti.hevc.decoder, supported types: video/hevc,
10-10 14:01:57.599  8821  8821 I MediaCodec  : codec name = OMX.qcom.video.decoder.hevc, supported types: video/hevc,
10-10 14:01:57.599  8821  8821 I MediaCodec  : codec name = c2.qti.hevc.decoder.low_latency, supported types: video/hevc,
10-10 14:01:57.599  8821  8821 I MediaCodec  : codec name = OMX.qcom.video.decoder.hevc.low_latency, supported types: video/hevc,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = c2.qti.hevc.decoder.secure, supported types: video/hevc,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = OMX.qcom.video.decoder.hevc.secure, supported types: video/hevc,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = c2.qti.vp9.decoder, supported types: video/x-vnd.on2.vp9,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = OMX.qcom.video.decoder.vp9, supported types: video/x-vnd.on2.vp9,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = c2.qti.vp9.decoder.low_latency, supported types: video/x-vnd.on2.vp9,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = OMX.qcom.video.decoder.vp9.low_latency, supported types: video/x-vnd.on2.vp9,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = c2.qti.vp9.decoder.secure, supported types: video/x-vnd.on2.vp9,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = OMX.qcom.video.decoder.vp9.secure, supported types: video/x-vnd.on2.vp9,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = c2.qti.av1.decoder, supported types: video/av01,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = c2.qti.av1.decoder.low_latency, supported types: video/av01,
10-10 14:01:57.600  8821  8821 I MediaCodec  : codec name = c2.qti.av1.decoder.secure, supported types: video/av01,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = c2.qti.flac.sw.decoder, supported types: audio/flac,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = c2.qti.aac.hw.decoder, supported types: audio/mp4a-latm,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = c2.android.av1-dav1d.decoder, supported types: video/av01,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = c2.android.avc.decoder, supported types: video/avc,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = OMX.google.h264.decoder, supported types: video/avc,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = c2.android.h263.decoder, supported types: video/3gpp,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = OMX.google.h263.decoder, supported types: video/3gpp,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = c2.android.hevc.decoder, supported types: video/hevc,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = OMX.google.hevc.decoder, supported types: video/hevc,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = c2.android.mpeg4.decoder, supported types: video/mp4v-es,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = OMX.google.mpeg4.decoder, supported types: video/mp4v-es,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = c2.android.vp8.decoder, supported types: video/x-vnd.on2.vp8,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = OMX.google.vp8.decoder, supported types: video/x-vnd.on2.vp8,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = c2.android.vp9.decoder, supported types: video/x-vnd.on2.vp9,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = OMX.google.vp9.decoder, supported types: video/x-vnd.on2.vp9,
10-10 14:01:57.601  8821  8821 I MediaCodec  : codec name = c2.android.av1.decoder, supported types: video/av01,

方法二:

有源码的话,直接查看/frameworks/av/media/libstagefright/omx/SoftOMXPlugin.cpp

其中

复制代码
static const kComponent kComponents[] = {
    { "OMX.google.aac.decoder", "aacdec", "audio_decoder.aac" },
    { "OMX.google.aac.encoder", "aacenc", "audio_encoder.aac" },
    { "OMX.google.amrnb.decoder", "amrdec", "audio_decoder.amrnb" },
    { "OMX.google.amrnb.encoder", "amrnbenc", "audio_encoder.amrnb" },
    { "OMX.google.amrwb.decoder", "amrdec", "audio_decoder.amrwb" },
    { "OMX.google.amrwb.encoder", "amrwbenc", "audio_encoder.amrwb" },
    { "OMX.google.h264.decoder", "avcdec", "video_decoder.avc" },
    { "OMX.google.h264.encoder", "avcenc", "video_encoder.avc" },
    { "OMX.google.hevc.decoder", "hevcdec", "video_decoder.hevc" },
    { "OMX.google.g711.alaw.decoder", "g711dec", "audio_decoder.g711alaw" },
    { "OMX.google.g711.mlaw.decoder", "g711dec", "audio_decoder.g711mlaw" },
    { "OMX.google.mpeg2.decoder", "mpeg2dec", "video_decoder.mpeg2" },
    { "OMX.google.h263.decoder", "mpeg4dec", "video_decoder.h263" },
    { "OMX.google.h263.encoder", "mpeg4enc", "video_encoder.h263" },
    { "OMX.google.mpeg4.decoder", "mpeg4dec", "video_decoder.mpeg4" },
    { "OMX.google.mpeg4.encoder", "mpeg4enc", "video_encoder.mpeg4" },
    { "OMX.google.mp3.decoder", "mp3dec", "audio_decoder.mp3" },
    { "OMX.google.vorbis.decoder", "vorbisdec", "audio_decoder.vorbis" },
    { "OMX.google.opus.decoder", "opusdec", "audio_decoder.opus" },
    { "OMX.google.vp8.decoder", "vpxdec", "video_decoder.vp8" },
    { "OMX.google.vp9.decoder", "vpxdec", "video_decoder.vp9" },
    { "OMX.google.vp8.encoder", "vpxenc", "video_encoder.vp8" },
    { "OMX.google.vp9.encoder", "vpxenc", "video_encoder.vp9" },
    { "OMX.google.raw.decoder", "rawdec", "audio_decoder.raw" },
    { "OMX.google.flac.decoder", "flacdec", "audio_decoder.flac" },
    { "OMX.google.flac.encoder", "flacenc", "audio_encoder.flac" },
    { "OMX.google.gsm.decoder", "gsmdec", "audio_decoder.gsm" },
};
相关推荐
火柴就是我18 小时前
学习一些常用的混合模式之BlendMode. dst
android·flutter
遥不可及zzz18 小时前
解决 Google Play 提示的 16KB 内存页面大小对齐问题:通过升级 Android Gradle 插件(AGP)
android
SmartRadio18 小时前
在MT8791 5G硬件平台上舍弃安卓系统-运行OpenWRT系统
android·5g·mt8791
虫小宝19 小时前
导购APP高可用数据库设计:主从分离与分库分表在返利系统中的应用
android·数据库
我命由我1234519 小时前
Android Jetpack Compose - TopAppBar、BottomAppBar、Scaffold
android·java·java-ee·kotlin·android studio·android jetpack·android-studio
REDcker19 小时前
Android WebView 升级 - WebViewUpgrade 库使用详解
android·华为·harmonyos·webview
我命由我1234520 小时前
Android Studio - Android Studio 去除 import 的未使用的类
android·java·ide·学习·java-ee·android studio·学习方法
ii_best20 小时前
安卓/ios脚本开发辅助工具按键精灵横纵坐标转换教程
android·开发语言·ios·安卓
BD_Marathon20 小时前
SpringMVC——5种类型参数传递
android·java·数据库
a31582380620 小时前
Android 大图显示策略优化显示(二)
android·java·开发语言·javascript·kotlin·glide·图片加载