shonen.hateblo.jp

やったこと,しらべたことを書く.

Android Emulator のコーデックがオーディオコーデックしか無い

無いのかな。

概要

Android API16 以降には android.media.MediaCodec というクラスが居る。
ローレベルなコーデックにアクセスするためのインターフェースで、 ffmpegとかの特別なライブラリを必要とせず動画を展開・圧縮できる。

使い方は書かない。というか、勉強中なので書けない。

問題

以下のコードで、コーデック一覧を取得できる。

    private void hoge() {
        MediaCodecList mcl = new MediaCodecList(MediaCodecList.ALL_CODECS);

        for (MediaCodecInfo mci : mcl.getCodecInfos()) {
            Log.d(TAG, mci.getName());
            for (String type : mci.getSupportedTypes()) {
                Log.d(TAG, mci.getName() + " supports " + type);
            }
        }

    }

Pixel x86(API29) のプロファイルのエミュレータで上のコードを実行していたが、 以下の通り、video/* が無い。

2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.aac.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.aac.decoder supports audio/mp4a-latm
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.amrnb.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.amrnb.decoder supports audio/3gpp
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.amrwb.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.amrwb.decoder supports audio/amr-wb
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.flac.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.flac.decoder supports audio/flac
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.g711.alaw.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.g711.alaw.decoder supports audio/g711-alaw
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.g711.mlaw.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.g711.mlaw.decoder supports audio/g711-mlaw
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.gsm.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.gsm.decoder supports audio/gsm
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.mp3.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.mp3.decoder supports audio/mpeg
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.opus.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.opus.decoder supports audio/opus
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.raw.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.raw.decoder supports audio/raw
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.vorbis.decoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.vorbis.decoder supports audio/vorbis
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.aac.encoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.aac.encoder supports audio/mp4a-latm
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.amrnb.encoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.amrnb.encoder supports audio/3gpp
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.amrwb.encoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.amrwb.encoder supports audio/amr-wb
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.flac.encoder
2020-02-24 16:17:39.678 3015-3172/com.example.mediaprac D/MyMedia: OMX.google.flac.encoder supports audio/flac

Android TV であれば、エミュレータ上に存在するようだ。

2020-02-24 16:31:46.385 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.aac.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.aac.decoder supports audio/mp4a-latm
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.amrnb.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.amrnb.decoder supports audio/3gpp
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.amrwb.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.amrwb.decoder supports audio/amr-wb
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.flac.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.flac.decoder supports audio/flac
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.g711.alaw.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.g711.alaw.decoder supports audio/g711-alaw
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.g711.mlaw.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.g711.mlaw.decoder supports audio/g711-mlaw
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.gsm.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.gsm.decoder supports audio/gsm
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.mp3.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.mp3.decoder supports audio/mpeg
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.opus.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.opus.decoder supports audio/opus
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.raw.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.raw.decoder supports audio/raw
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.vorbis.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.vorbis.decoder supports audio/vorbis
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.aac.encoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.aac.encoder supports audio/mp4a-latm
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.amrnb.encoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.amrnb.encoder supports audio/3gpp
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.amrwb.encoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.amrwb.encoder supports audio/amr-wb
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.flac.encoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.flac.encoder supports audio/flac
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.h264.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.h264.decoder supports video/avc
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.h263.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.h263.decoder supports video/3gpp
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.hevc.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.hevc.decoder supports video/hevc
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.mpeg4.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.mpeg4.decoder supports video/mp4v-es
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.vp8.decoder
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.vp8.decoder supports video/x-vnd.on2.vp8
2020-02-24 16:31:46.389 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.vp9.decoder
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.vp9.decoder supports video/x-vnd.on2.vp9
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.h264.encoder
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.h264.encoder supports video/avc
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.h263.encoder
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.h263.encoder supports video/3gpp
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.mpeg4.encoder
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.mpeg4.encoder supports video/mp4v-es
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.vp8.encoder
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.vp8.encoder supports video/x-vnd.on2.vp8
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.vp9.encoder
2020-02-24 16:31:46.390 4864-4880/com.example.mediaprac D/MyMedia: OMX.google.vp9.encoder supports video/x-vnd.on2.vp9

スマートフォンだから出てこない、という訳ではない。実機上でも動かしてみたが、動画コーデックは発見できた。

何で Android TV だけなんでしょうかね。