Androidソースでは、MediaCodec
APIに基づいてエンジンを実装した例があります。player
frameworks/av/cmds/stagefright/SimplePlayer.cpp
にあるSimplePlayer
を確認することができます。
このプレーヤエンジンの実装では、MediaCodec
からの出力はdequeued
であり、hereのようにキューにプッシュされます。完全な画像を得るには、439〜450行目をチェックしてください。
バッファが利用可能になると、hereが実装された単純なAV Sync
メカニズムがあります。 508行目〜521行目を参照してください。この例では、1つのトラックしか考慮されていないため、nowUs
、つまり現在の時刻はsystemTime
から導き出される。すなわち、ALooper::nowUs
である。あなたのコードで
、あなたはfirst-come-first-serve
基づいて常にaudio
をレンダリング考えることができ、あなたのvideo
トラックのために、あなたはaudio
トラックからnowUs
を導き出すことができます。
単純な実装はgetAudioLastPresentationTime
がaudio renderer
へaudio
MediaCodec
から送信された最後のpresentationTimeUs
を返し、nowUs = getAudioLastPresentationTime()
である可能性があります。
動作サンプルを –
@ManojKにしてください。http://androidxref.com/4.2.2_r1/xref/frameworks/av/cmds/stagefright/SimplePlayer.cpp#508のリンクは、 'アンドロイド'プラットフォームで試してみてください。あなたが何か違うものを探しているかどうかを明確にしてください。 – Ganesh
ありがとう、私はjavaで任意のサンプルコードを望んでいた。とにかく私は上記のサンプルnはあなたが投稿したままにしようとします。 –