本申请涉及音视频同步,尤其涉及一种基于webrtc的减少音视频延迟的方法。
背景技术:
1、云桌面是基于分布式云计算存储技术,集成互联网精华应用,为互联网各个层次用户提供最简便、最丰富、最安全、最贴心的服务。目前流行的云桌面产品采用webrtc(webreal-time communications,网页实时通信)框架开发。
2、云桌面产品的一个关键技术指标是输入事件的响应时间,在云桌面产品中,需要减少延迟来快速响应客户端输入事件。
3、在使用webrtc技术开发虚拟桌面基础架构的云桌面产品中,会出现延迟增大的问题。通过分析发现是由于webrtc中使用的音视频同步算法导致,该算法是为视频会议等产品需求而设计,所以并未考虑其他情况下的音视频是否同步,这就导致云桌面产品在使用时会出现音视频不同步,视频延迟不稳定,影响用户体验的问题。
技术实现思路
1、为至少在一定程度上克服相关技术中的云桌面产品在使用时会出现音视频不同步,视频延迟不稳定的问题,本申请提供一种基于webrtc的减少音视频延迟的方法。
2、本申请的方案如下:
3、一种基于webrtc的减少音视频延迟的方法,应用在webrtc云桌面,包括:
4、在接收到音频数据时,将所述音频数据进行播放,并记录所述音频数据的声音时间线;
5、在接收到视频帧时,将所述视频帧自带的时间信息与记录的音频数据的声音时间线进行比较;
6、若所述视频帧自带的时间信息大于记录的音频数据的声音时间线,则确定当前视频缓冲队列中的缓冲视频数量;
7、若当前视频缓冲队列中的缓冲视频数量不为0,则将当前视频缓冲队列中的缓冲视频清除,并将所述视频帧放入视频缓冲队列;
8、若当前视频缓冲队列中的缓冲视频数量为0,则直接将所述视频帧放入视频缓冲队列;
9、在所述视频帧自带的时间信息到达所述音频数据的声音时间线时,将所述视频帧从视频缓冲队列中取出,并进行渲染。
10、优选地,所述方法还包括:
11、若所述视频帧自带的时间信息不大于记录的音频数据的声音时间线,则直接将所述视频帧进行渲染。
12、优选地,记录所述音频数据的声音时间线,包括:
13、确定所述音频数据的采样率和采样点数量,根据所述音频数据的采样率和采样点数量计算所述音频数据的声音时间长度,根据所述音频数据的声音时间长度在播放时记录所述音频数据的声音时间线。
14、优选地,根据所述音频数据的采样率和采样点数量计算所述音频数据的声音时间长度,包括:
15、根据所述音频数据的采样率确定1秒时间长度的音频数据对应的采样点数量;
16、根据音频数据的采样点数量,以及1秒时间长度的音频数据对应的采样点数量,计算所述音频数据的声音时间长度。
17、优选地,在接收到音频数据时,所述方法还包括:
18、对所述音频数据进行解码,将解码后的音频数据进行播放。
19、本申请提供的技术方案可以包括以下有益效果:本申请中的基于webrtc的减少音视频延迟的方法,应用在webrtc云桌面,包括:在接收到音频数据时,将音频数据进行播放,并记录音频数据的声音时间线;在接收到视频帧时,将视频帧自带的时间信息与记录的音频数据的声音时间线进行比较;若视频帧自带的时间信息大于记录的音频数据的声音时间线,则确定当前视频缓冲队列中的缓冲视频数量;若当前视频缓冲队列中的缓冲视频数量不为0,则将当前视频缓冲队列中的缓冲视频清除,并将视频帧放入视频缓冲队列;若当前视频缓冲队列中的缓冲视频数量为0,则直接将视频帧放入视频缓冲队列;在视频帧自带的时间信息到达音频数据的声音时间线时,将视频帧从视频缓冲队列中取出,并进行渲染。本申请中的技术方案,在接收到新的视频帧时,即时清除当前视频缓冲队列中已存在的缓冲视频,减少了历史进行音视频同步时产生的视频缓存帧,使得接收的视频帧可以直接进行渲染,无需等待历史缓冲队列中的视频帧执行,本申请中的技术方案既保证了声音不出现破音的问题,同时减少视频的延迟。
20、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
1.一种基于webrtc的减少音视频延迟的方法,应用在webrtc云桌面,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,记录所述音频数据的声音时间线,包括:
4.根据权利要求3所述的方法,其特征在于,根据所述音频数据的采样率和采样点数量计算所述音频数据的声音时间长度,包括:
5.根据权利要求1所述的方法,其特征在于,在接收到音频数据时,所述方法还包括: