4

Android4.1 では、リアルタイム エンコーディング アプリケーションでキー フレームが要求されることがよくあります。しかし、MediaCodec オブジェクトを使用してそれを行う方法は? 現在の Android4.2 SDK ではサポートされていないようです。

4

3 に答える 3

2

エンコーダーの構成時に KEY_I_FRAME_INTERVAL キーを設定することにより、定期的なキー フレームを要求できます。以下の例では、2 秒ごとに 1 つリクエストしています。わかりやすくするために、フレーム レートやカラー フォーマットなどの他のキーは省略しましたが、それでも含める必要があります。

    encoder = MediaCodec.createByCodecName(codecInfo.getName());
    MediaFormat inputFormat = MediaFormat.createVideoFormat(mimeType, width, height);

    /* ..... set various format options here ..... */
    inputFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 2);

    encoder.configure(inputFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
    encoder.start();

ただし、カットシーンの開始時など、エンコード中にランダムなキーフレームを要求する方法が本当に求められているのではないかと思います。残念ながら、そのためのインターフェースは見たことがありません。エンコーダーを停止して再起動すると、再起動時に新しいキー フレームが作成される可能性があります。試す機会があれば、ここに結果を投稿します。

これがお役に立てば幸いです。

Thad Phetteplace - GLACI, Inc.

于 2013-04-25T17:48:58.190 に答える