4

Stagefrightビデオデコーダーを(Androidのマルチメディアフレームワーク)に統合するタスクがあります。の新しいプラグインの作成について、次のことを検索して見つけましたStagefright

新しい形式のサポートを追加するには、次のことを行う必要があります。

  • コンテナーがまだサポートされていない場合は、新しい Extractor クラスを開発します。

  • StageFrightコアがデータを読み取るために必要なインターフェイスを実装する新しい Decoder クラスを開発します。

  • ファイルの新しい Decoder に読み取るファイルの MIME タイプを配列OMXCodec.cppで関連付けます。kDecoderInfo

    static const CodecInfo kDecoderInfo[] = {  
        {MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.decode"},
        {MEDIA_MIMETYPE_AUDIO_AAC, "AACDecoder"},
    };

上記のデータは、私がネットで見つけたすべてです。現在、ファイルを入力として受け取り、Android のネイティブ API を使用して画面にレンダリングするシンプルなアプリがあります。どなたか今後の進め方を教えてください。そして、これらすべてOMXCodec.cppと他のすべてがどこから現れ、私のプロジェクトのどのディレクトリにそれらを置くべきですか。同じことに関する解決策を提供してください。前もって感謝します。

4

1 に答える 1

10

Ice-Cream Sandwichあなたの質問から、Android またはそれ以前のバージョンに固有の推奨事項を見ているようです。最初に明確にする必要があるのは、Android のバージョン、つまりIce-Cream Sandwich前後のバージョンですJellyBean。コーデックの統合は、Android のリリースごとに異なります

およびそれ以降に固有の他の質問については、すでにコメントしましたJellyBean(参照:Android:デコーダーをマルチメディアフレームワークに統合する方法

Ice-Cream Sandwichコーデックを以前に統合したい場合は、質問で手順が既に利用可能です。デコーダーをリストに追加することに加えて、ここkDecoderInfoに示すように特定の癖を設定したい場合があります。

に関する質問についてはOMXCodec.cpp、このファイルが frameworks/base/media/libstagefright/in case ofIce-Cream Sandwichおよびframeworks/av/media/libstagefright/in case of にありJellyBeanます。

ビデオ デコーダーをフレームワークに統合するためのすべての手順に従っている場合Stagefright、最も簡単なテストは次の手順を実行することです。

  1. メディア ファイルを SD カードにコピーする

  2. で、このOMXCodec.cppステートメントのコメントを削除してログを有効にし、ディレクトリで//#define LOG_NDEBUG 0a を実行します。再構築されたものをデバイスにmmコピーします。libstagefright.so/system/lib

  3. logcatログのキャプチャを有効にして開始します。

  4. ギャラリーに移動し、ファイルを選択して、標準プレーヤーでファイルを再生できるようにします。

  5. OMXプレーヤーがコンポーネント名を検索してコンポーネントを選択したかどうかは、ログ ファイルを確認してください。見つかった場合、コーデックの への統合Stagefrightは成功です。それ以外の場合は、デバッグして問題を特定する必要があります。

追記:

  1. あなたのクエリに基づいて、あなたは Android のソースに慣れていないと思います。ディストリビューションについて理解するには、 androidxrefサイトを参照してくださいAOSP

  2. Extractor新しいメディア ファイル形式をサポートする予定がない限り、クラスをサポートする必要はありません。MediaExtractorファイル形式パーサーを抽象化し、メディア ファイル内のさまざまなトラックを逆多重化するのに役立ちます。

この情報があれば、コーデックを Android に統合して機能させることができるはずです。

于 2013-03-12T13:39:59.710 に答える