5

Android デバイスが必須のオーディオ エンコーダーをサポートしていない場合は、次のようになります: (X=エンコーダーの数値インデックス)

E/MediaProfiles(4048): 指定されたオーディオ エンコーダー X が見つかりません A/AudioSource(4048): Frameworks/base/media/libstagefright/AudioSource.cpp:58 CHECK(channels == 1 || channels == 2) が失敗しました。A/libc(4048): 0xdeadbaad (code=1) での致命的なシグナル 11 (SIGSEGV) ネイティブ コード。反応する例外はありません。アプリは強制終了です。

AAC AMR-NB と AMR-WB が実際にサポートされている場合、Android >3.x デバイスをクエリする方法はありますか? ドキュメント ( http://developer.android.com/guide/appendix/media-formats.html ) によると、これらはコア メディア フォーマットであり、常にサポートされています。(主要ブランドの)一部の実際の一般的な電話はそうではありません。

MediaCodec.createByCodecName(String name)および Get supported Codec for Android device は API16=Android 4.1 でのみ機能しますが、問題のデバイスは 4.0.x です。また、AMR-NB と AAC も記載されていません。

4

1 に答える 1

2

Android デバイスでは、メディア プロファイル/機能は media_profiles.xml (ICS/4.0 上) という構成ファイルに保存されます。

通常、このファイルはデバイスの /etc フォルダーにあります。

だからあなたができることは

  1. デバイスを PC に接続し、adb pull コマンドを使用して /etc/media_profiles.xml ファイルをプルします。
  2. AudioEncoderCap プロパティを調べます。アドバタイズされる機能ごとに複数のエントリがあります。例:

    AudioEncoderCap name="aac" enabled="true" minBitRate="8192" maxBitRate="96000" minSampleRate="8000" maxSampleRate="16000" minChannels="1" maxChannels="1"

  3. 上記のように「有効」フラグが「true」に設定されている場合、その機能はデバイスでサポートされている必要があります。サポートされていない場合、「有効」フラグは「false」に設定されます。

私の知る限り、jb(4.1)で導入されたメディアコーデックフレームワークは、この/同様の構成ファイルを読み取り、デバイス機能をアプリケーションレイヤーに公開します。

お役に立てれば。

ありがとう!

于 2012-11-16T09:11:33.617 に答える