自己定義プロトコルをテストするために、研究プロジェクトのためにハードウェアアクセラレーションH.264デコードが必要です。
Webで検索しているので、Androidでハードウェアアクセラレーションによるビデオデコードを実行する方法をいくつか見つけました。
一部の人々 "say" libstagefrightが唯一の方法であり、クアルコムの人たちは明らかに成功を収めています。
現在、どの方法が機能するのかわかりません。私は今少し混乱しています。すべてが機能するのであれば、ハードウェアに依存しない方法を好むでしょう。
Galaxy Tab 7.7(3.2&Enxyos)でH/Wアクセラレーションのいくつかのビデオプレーヤーをテストしたところ、VLC、Mobo、Rock、vplayer、rock、moboは正常に動作しますが、VLCは機能せず、vplayerにレンダリングがあるようですパフォーマンスを犠牲にするバグ。
とにかく、Rockplayerで「操作」を行い、data\data\com.redirecting\rockplayerのすべての.soライブラリを削除しました。ハードウェアデコードが正常に機能しているときにソフトウェアデコードがクラッシュしました。彼らはどうやってそれをしたのだろうか。ハードウェアアクセラレーションはハードウェアプラットフォームに依存しない可能性があるようです。
誰かがこの問題を解決できますか?または、追加情報またはより詳細な情報を参考にしてください。
上記の質問に答えるために、Androidに関連するいくつかの概念を紹介しましょう
OpenMAX
AndroidはコーデックインターフェースにOpenMAXを使用します。したがって、すべてのネイティブコーデック(ハードウェアアクセラレーションまたはその他)はOpenMAXインターフェースを提供します。コーデック
NDK
Android allow Java NDKを使用して、アプリケーションが基盤となるC/C++ネイティブライブラリと対話できるようにします。これにはJNI(Java Native Interface)が必要です。
あなたの質問に来ていますHow to tap native decoder to decode raw video bitstream?
Android 4.0バージョン以下では、Androidは、Javaレイヤーの基になるビデオデコーダーへのアクセスを提供しませんでした。 OMXデコーダーと直接やり取りするネイティブコードを作成することは可能ですが、OMXの仕組みとNDKを使用してこのOMXをアプリケーションにマッピングする方法に関する知識が必要になるため、簡単ではありません。
4.1(Jelly Beanバージョン)では、Androidは、Java APIを介して、アプリケーションレベルでハードウェアアクセラレータデコーダへのアクセスを提供しているようです。 http://developer.Android.com/about/versions/Android-4.1.html#Multimedia
MediaExtractor および MediaCodec (これらはNDKでも利用可能です-AMediaExtractorおよびAMediaCodec-ここで.mp4を再生するためのサンプルを参照してください native-codec =)
プラットフォームのMediaPlayerに代わるGoogleが支援するオープンソースプロジェクトです。パイプラインの各コンポーネントは、サンプルソース(カスタムプロトコルからH.264フレームを抽出する方法)からレンダリング(Surface、SurfaceTextureなど)まで拡張可能です。
ニース 使用方法を示すデモアプリ が含まれています。