2016-08-26 20 views
2

多くのAndroidデバイスは、H.264ビデオコーデックのハードウェアアクセラレーションをサポートしていますが、VP8/VP9コーデックはサポートしていません。より高品質のユーザーエクスペリエンスを提供するために、可能な限りハードウェアアクセラレーションされたコーデックを選択したいと考えています。したがって、特定のデバイスがH.264ハードウェアアクセラレーションをサポートしているかどうかをランタイム検出したい場合、これにより、webRTCピア接続のセッションネゴシエーションにSDPで使用される特定のコーデックが設定されます。すなわち、H.264がハードウェアでサポートされている場合、VP8/VP9とは対照的に、より高い優先順位のコーデックとして設定されます。これについてのいかなる考えも非常に高く評価されます。Android H.264ハードウェアアクセラレーション機能の検出方法

+0

同様の方法で、VP8/VP9ハードウェアコーデック(http://wiki.webmproject.org/hardware/socsを参照)をサポートするデバイスが多数あります。実行時にこれをどのように検出しますか? – SBG

答えて

5

MediaCodecList APIを使用して、使用可能なエンコーダとデコーダを反復処理します。 OMX.google.で始まるエンコーダーはSWコーデックです。他のコーデックは、HWコーデックと見なすことができます。最も簡単なのはおそらくfindEncoderForFormat(およびfindDecoderForFormat)を使用し、これがどのような名前を返すかを確認することです。詳細が必要な場合は、手動でリストを反復処理できます。デバイス上のHWエンコーダがある場合

+0

大変感謝しています! – SBG

0

はジャスティンUbertiさんのコメントhereによると、あなたはだけは、AndroidのWebRTCでH.264を取得します。したがって、WebRTCをH.264よりも優先するように設定することができます.HWエンコーダがある場合、HW H.264が使用されます。そうでなければ、VP8/VP9です。

関連する問題