https://api.vvhan.com/api/avatar/boy

技术博客分享

android端音视频同步

android端音视频同步

音视频流是相互独立的。其中音频解码后得到pcm裸流,通过扬声器播放;视频解码后得到yuv再转换为rgb像素格式,通过屏幕(SurfaceView)渲染显示。与音视频同步有关的概念: dts (decode timestamp 解码时间戳)和 pts (presentation timestamp 显示时间戳)。理论上音视频流的时间是呈线性的,为什么需要dts和pts呢?因为视频帧存在: I帧 (关键帧 根据该帧可以重现完整画面)、 P帧 (非关键帧 依赖上一个I帧)和 B帧 (非关键帧 依赖上一个与下一个I帧)。例如某个B帧解码顺序为:1 3 2,而播放顺序为1 2 3(其中1、3为I帧,2为B帧),这就需要引入dts和pts的概念了。