2016-04-12 15 views
0

MediaFormat(ビデオ形式)の場合、KEY_REPEAT_PREVIOUS_FRAME_AFTERとは何を意味しますか? からdocAndroid MediaFormat:KEY_REPEAT_PREVIOUS_FRAME_AFTER設定

「表面入力」モードでビデオエンコーダを設定する場合にのみ適用されます。関連する値はlongであり、以来、新しいフレームが利用可能になっていない場合、エンコーダに以前に提出されたフレームが繰り返される(1回)マイクロ秒単位の時間を与える。 定数値:

"リピート-前フレーム-後、" 私は典型的な使用が見つかりました:format.setInteger(MediaFormat.KEY_REPEAT_PREVIOUS_FRAME_AFTER, 1000000/FRAME_RATE);

をしかし、私はそれを理解していません。あなたは私を説明することができますか?長い間、どんな状況に適していますか?

ありがとうございます。

答えて

2

Android MediaCodecについて知っているように、エンコーダのサーフェス入力を設定すると、エンコーダは、サーフェスが更新されたときにフレームをエンコード出力します。

これは、サーフェスが静止している場合(つまり、ランチャー画面に留まるなど)、新しいフレームを出力するようにエンコーダに通知されません。

出力ストリームが連続であると予想されるため、効率的ですが、一部のアプリケーションではそれを気に入らない場合があります。次に、KEY_REPEAT_PREVIOUS_FRAME_AFTER値を設定する必要があります。

申し訳ありませんが、マイクロ秒単位で(1000000/frameRate)の提案式を確認してみましょう。

frameRateは、1秒間にNフレームを更新することを意味する、いわゆるFPS(フレーム/秒)です。

frameRateを60fpsに設定すると、1000000/60マイクロ秒〜= 16msで1フレームを生成する必要があることがわかります。 16ms後にサーフェスが更新されなかった場合、KEY_REPEAT_PREVIOUS_FRAME_AFTERを設定しない限り、エンコーダはエンコードされたフレームを出力しません。

つまり、この値については最適な設定はありません。アプリケーションの使用状況によって異なります。

この説明は役に立ちましたか。

+0

完璧!どうもありがとうございます。 – t0m

関連する問題