2

をデコードするために新しいMediaCodec APIonを使用しています。開発者ページのコード スニペットを使用して、(media_codec.xml から取得した) 名前でデコーダーをインスタンス化し、サーフェスを渡し、コーデックを構成しました。Jelly Beanh264 stream

私が直面している問題は、dequeOutputBuffer が常に -1 を返すことです。
負のタイムアウトで無期限に待機しようとしましたが、うまくいきませんでした。
-1 を取得するたびに、getOutputBuffers を使用してバッファーを更新しました。

カスタム アプリを使用してメディア ソースからのデータを解析し、デコーダーに提供する場合にも、同じ問題が発生することに注意してください。

上記の入力は役に立ちます

4

4 に答える 4

0

他の誰かがこの問題に直面している場合 (私が今日行ったように)、 MediaCodecを使い始めたときに、出力コーデックを使い終わった後に必ずリリースしてください:

mediaCodec.releaseOutputBuffer(index, render); 

そうしないと、コーデックはすぐに使用可能なバッファを使い果たします。

于 2013-10-15T08:56:49.807 に答える
0

出力バッファでデータを取得する前に、いくつかの入力バッファをフィードする必要がある場合があります。

于 2015-04-09T16:13:54.850 に答える
0

-1 is INFO_TRY_AGAIN_LATER, meaning the output buffer queue is still being prepared and you just need to call dequeueOutputBuffer again.

Try using a work loop that calls dequeueOutputBuffer in a loop similar to ExoPlayer:

    while (drainOutputBuffer(positionUs, elapsedRealtimeUs)) {}
    if (feedInputBuffer(true)) {
      while (feedInputBuffer(false)) {}
    }

where drainOutputBuffer is a method that calls dequeueOutputBuffer.

于 2015-04-25T07:46:29.063 に答える