7

我想使用MediaExtractorMediaCodecAPI 编写一个简单的音频/视频播放器。

我能够解码和渲染audioand video。但是,我错过了audio - video同步。

我找不到任何 API 来控制 和 之间的audio同步video。有人可以告诉我,如何同步解码audiovideo数据?

4

1 回答 1

9

在 Android 源代码中,有一个player基于MediaCodecAPI 的示例引擎实现。您可以检查SimplePlayer位于frameworks/av/cmds/stagefright/SimplePlayer.cpp

在这个播放器引擎实现中,来自 的输出MediaCodec被推dequeued入队列,如下所示。请检查第 439 - 450 行以获得完整的图片。

一旦缓冲区可用,这里就实现了一个简单AV Sync机制。请参阅第 508 -521 行。在这个例子中,只考虑一个轨道,因此,即当前时间是从ie导出的。nowUssystemTimeALooper::nowUs

audio在您的代码中,您可以考虑始终在first-come-first-serve基础上进行渲染,并且对于您的video轨道,您可以从轨道派生nowUsaudio

一个简单的实现可能是nowUs = getAudioLastPresentationTime()where,getAudioLastPresentationTime将返回从 t​​opresentationTimeUs发送的最后audio MediaCodec一个audio renderer

于 2013-03-28T23:48:19.170 回答