7

Android ICS以降では、新しいOpenMax IL APIバージョンが使用されており、古いバイナリブロブが役に立たない/使用されていない状態になっています。これにより、ICSを正常に実行している古いデバイスでは、ビデオの再生が壊れてしまいます(たとえば、YouTube HQやIMBD)。これは、同じデバイスでffmpegが実行できることと比較すると、Androidのフォールバックソフトウェアデコーダーが機能しないためです(MXPlayer + arm6vfpをテストしました)。 ffmpegと720pの映画は素晴らしい再生でした)。

私はAndroidのソースコードを掘り下げて、ffmpegライブラリの素晴らしさを使用できるようにするためにコードを追加/置換できる場所と正確な内容を確認しようとしています。問題は、たとえばYouTubeアプリでビデオをデコードするためにどのコードが使用されているのか、またはそれがどのように決定されるのかが正確にわからないことです。

だから私が知る限り、私には2つの選択肢があります。

  1. 現在使用されているソフトウェアデコーダーを把握し、その外部インターフェイスをffmpegにラップして、現在使用されている低速のソフトウェアデコーダーを効果的に置き換えてみてください。最終結果は単一になります。そのため、デバイスにプッシュできます。

  2. Androidをだましてffmpegに基づいたOMXライブラリを考えさせる方法を理解し(私はAndroid用に正常にビルドしました:limoa)、これを考慮されるライブラリのリストのどこかに追加します(またはより良い:使用できないハードウェアコーデックを置き換えます)。

拡張機能として、これを介してカムコーダーのビデオエンコーディングも機能させたいので、真の統合ソリューションが非常に望まれます。問題は、どのように、どこで、そして何をするかということです。Androidのソースツリーを検索すると、さまざまな場所で「H264」や関連するものが多数表示されます。可能な限り低くて単純なものが必要なので、decode(buffer)ffmpeg(libavcodec)を使用するために架空の関数呼び出しをラップするだけです。

4

1 に答える 1

4

このプレゼンテーション(「 OpenMAXILを使用したハードウェアビデオコーデックのAndroid Stagefrightへの統合」)はまさにあなたがやりたいことのようです。あなたのプロジェクトで頑張ってください!

于 2012-08-09T19:03:28.987 に答える