7

MediaExtractorAPIとAPIを使用して、単純なオーディオ/ビデオ プレーヤーを作成したいと考えていMediaCodecます。

audioとをデコードしてレンダリングできますvideo。しかし、私はaudio - video同期を逃しています。

audioとの間の同期を制御する API が見つかりませんでしvideoた。デコードされたデータaudiovideoデータを同期する方法を教えてください。

4

1 に答える 1

9

Android ソースには、 APIplayerに基づくエンジン実装の例があります。にある をMediaCodec確認できます。SimplePlayerframeworks/av/cmds/stagefright/SimplePlayer.cpp

このプレーヤー エンジンの実装では、 からの出力は、MediaCodecここdequeued示すようにキューにプッシュされます。全体像を把握するには、439 ~ 450 行を確認してください。

バッファが利用可能になると、ここに簡単なメカニズムAV Syncが実装されます。508 ~ 521 行を参照してください。この例では、1 つのトラックのみが考慮されるため、現在の時刻はieから導出されます。nowUssystemTimeALooper::nowUs

audioコードでは、常にfirst-come-first-serveベースでレンダリングすることを検討できます。また、トラックについては、トラックからを派生させるvideoことができます。nowUsaudio

単純な実装はnowUs = getAudioLastPresentationTime()where であり、 toから最後に送信されたものgetAudioLastPresentationTimeを返します。presentationTimeUsaudio MediaCodecaudio renderer

于 2013-03-28T23:48:19.170 に答える