在多媒体播放过程中,音频数据的处理不仅要保证其解码和输出的连续性,还需要与视频帧保持时间上的严格对齐,以实现良好的观看体验。Android 多媒体框架中的 NuPlayerRenderer
是负责最终渲染音视频数据的核心组件之一。
一、Audio数据处理
NuPlayerRenderer 是 Android 原生多媒体播放器 NuPlayer 中用于控制音视频渲染的部分,它管理着音频和视频的输出队列,并协调两者的时间戳,确保同步。其实上一篇文章已经介绍了 Audio Buffer 的处理流程,这里主要针对音/视频同步操作进行再次分析。
NuPlayerRenderer
源码位置:/frameworks/av/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
postDrainAudioQueue_l
void NuPlayer::Renderer::postDrainAudioQueue_l(int64_t delayUs) {……sp<AMessage> msg = new AMessage(kWhatDrainAudioQueue, this);msg->setInt32("drainGeneration", mAudioDrainGeneration);msg->post(dela