在短视频与直播APP中,采集端作为音视频的生产者,如果采集端产生的音视频源本身就无法保证同步,那么后面不管经过什么处理,都很难再让用户看到音视频同步的画面了,因此,在采集端保证音视频同步上尤其重要。
基本概念
时间基
时间基是指时间刻度。因为时间信息是以整数存储的,而我们常使用的秒是浮点数,为了存储浮点数则把浮点数使用分数表达。时间基就是其中的分母,时间值是分子,得出浮点型的时间。
分类:
- tbr,time base of rate: 通常所说的帧率。
- tbn,time base of stream: 视频流的时间基。
- tbc,time base of codec: 视频解码的时间基。
不同场景的时间戳对应不同的时间基,对于视频渲染则使用视频流的时间基。
音视频同步方式
- 视频同步到音频。适用于音频各种参数固定,即其PTS是可以简单计算的,所以很方便地与视频帧的PTS对比进行同步。
- 音频同步到视频。在音视频流长度不一致时,要考虑对音频进行丢帧和补帧。
- 音频和视频都同步到系统时钟。
基本思路:
- 展示第一帧视频帧后,获得要显示的下一个视频帧的PTS;
- 设置一个定时器;
- 当定时器超时后刷新新的视频帧。
- 循环反复。