1

皆さん、

MediaCodec および MediaExtractor クラスを使用してビデオを再生するアプリケーションを作成しました。このアプリケーションは、 https://vec.io/posts/android-hardware-decoding-with-mediacodecのサンプルに基づいています。

ビデオは問題なく再生されるようです。ただし、向きが変わるとすぐに、ビデオは最初から始まります。これは、アクティビティが再作成され、バックグラウンド スレッド、エクストラクタ、およびデコーダがすべてもう一度インスタンス化されるためです。

私のニーズでは、向きを無効にすることはできません。

MediaCodec に関連する他のメッセージを調べましたが、開発者が画面の向きをどのように扱っているかを見つけることができませんでした (向きを無効にすることは私にとってオプションではありません)。

私が考えていたのは、アクティビティの破棄中にエクストラクタのシーク位置を保持することでした。このようにして、アクティビティのレクリエーションで、正しい位置を探すことができました。ただし、extractor でシーク位置を返すメソッドが見つかりませんでした (場所をシークするメソッドはありますが)。

画面の向きでビデオを連続再生する方法について誰かが教えてくれるかどうか疑問に思っています。

よろしくお願いいたします。

よろしく、
ピーター

4

1 に答える 1

1

まだ解決策を使用できる場合、または他の誰かがこの問題に遭遇した場合:

次の行でマニフェストを拡張することにより、アクティビティの自動再構築を防ぐことができますandroid:configChanges="orientation|screenSize"

<activity
    android:name="com.example.yourproject.mediacodecactivity"
    android:configChanges="orientation|screenSize"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

MediaCodec に関するものではなく、stackoverflow に関するこのトピックに関する多くの質問があります (さらに問題が発生した場合は、この質問を参照してください)。

于 2014-05-02T09:28:39.523 に答える