繁体   English   中英

从Mediacodec同步解码的音频和视频数据

[英]Synchronise Decoded Audio and Video data from Mediacodec

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

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

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

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

在这个播放器引擎的实现,从输出MediaCodecdequeued ,如图所示推入一个队列这里 请查看第439-450行以获得完整的图片。

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

在您的代码中,您可以考虑始终以first-come-first-serve呈现audio ,对于video轨道,您可以从audio轨道中获取 nowUs

一个简单的实现可以是nowUs = getAudioLastPresentationTime() ,其中, getAudioLastPresentationTime将返回从audio MediaCodec发送到audio renderer的最后一个presentationTimeUs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM