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 だけなんでしょうかね。