1)NTP:network time protocol 网络时间协议,同步网络中各个计算机的时间的协议。
2)基于RTP/RTCP的音视频同步:声音超前视频20ms或落后90ms,人是感受不到不同步情况。
(1) rtp 提供 序列号、时间戳、 同步源标识符,提供时间信息、实现流同步。
序列号:检测接收包的序列号,判断丢包情况,恢复发送顺序(排序)。
时间戳:重新建立音视频的时序关系,是媒体间同步的关键参考参数。表示 rtp 包中,第一个字节数据产生的时间。
时间戳的增量:增加的不是1毫秒,而是一个采样时间间隔的时间。例如:音频采样率为8000,则表示1秒钟采样8000次,即1ms采样8次,则每次采样时间间隔是1 / 8 ms。
1s的时间戳为8000, 如1s播放20帧,则相邻两帧的时间戳为 8000 \ 20 = 400,则时间戳增量为 400。
90000 ( 90K ) 是用于视频同步的时间尺度,每秒90K的时钟tick。使用90000作为视频的采样率。
如果25fps,采样率为90000,则每一帧的时间增量为40000,时间戳增量为 90k / 25 = 3600。
H264中sps里面记录的帧率是实际帧率的2倍,包括slice里面的pic_order_cnt_lsb也是2倍递增,可能是编码按照分场(顶场,底场)编码所致。
(2) rtcp 提供 流量控制、拥塞控制。
(3) 接收端同步控制:音频流、视频流存在主从关系,选择一个作为主媒体流、另一个为从媒体流。从媒体流参考主媒体流。
选择音频流为主媒体流。主媒体流:按照正常的顺序和速度播放;从媒体流:根据主媒体流的播放时间戳调正播放媒体帧及速度。
(4) 存在音频流、视频流,传输时使用 两条 rtp 通道传输。
3)HLS ( Http Live Stream )
4)dts: decoding time stamp 编码时间戳。
pts: present time stamp 展示时间戳。
如果编码帧频是30,那么时间戳间隔就该是90000 / 30 = 3000