CN114710687A - 音视频同步方法、装置、设备及存储介质 - Google Patents
音视频同步方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114710687A CN114710687A CN202210284202.8A CN202210284202A CN114710687A CN 114710687 A CN114710687 A CN 114710687A CN 202210284202 A CN202210284202 A CN 202210284202A CN 114710687 A CN114710687 A CN 114710687A
- Authority
- CN
- China
- Prior art keywords
- audio
- video
- delay information
- information
- synchronization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000009877 rendering Methods 0.000 claims abstract description 83
- 230000001360 synchronised effect Effects 0.000 claims abstract description 21
- 230000001960 triggered effect Effects 0.000 claims abstract description 19
- 238000004891 communication Methods 0.000 claims abstract description 13
- 239000000872 buffer Substances 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 18
- 238000001514 detection method Methods 0.000 claims description 16
- 230000003139 buffering effect Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 230000003247 decreasing effect Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 230000000694 effects Effects 0.000 description 10
- 235000013599 spices Nutrition 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000001934 delay Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000000737 periodic effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 208000003028 Stuttering Diseases 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000012636 effector Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 235000016709 nutrition Nutrition 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4307—Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请实施例提供了音视频同步方法、装置、设备及存储介质,应用于客户端,所述客户端与云端进行通信连接,所述方法包括:客户端接收云端发送的音视频数据包的音视频信息以及音视频同步信息,根据音视频同步信息触发同步逻辑;根据触发后的同步逻辑获取音视频渲染延迟信息,并根据音视频渲染延迟信息和音视频信息得到音视频数据包的相对延迟信息;根据音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,以便客户端基于音频目标延迟信息和视频目标延迟信息调整缓存大小进行音视频同步。通过将所接收的信息作为输入计算得到音视频同步所需的相对延迟信息,不需要依赖NTP/RTP时间校准,以及可对于不同的办公场景动态进行开启关闭。
Description
技术领域
本申请涉及多媒体技术领域,特别是涉及一种音视频同步方法、一种音视频同步装置、相应的一种电子设备以及相应的一种计算机存储介质。
背景技术
近年来,办公、教育、娱乐的模式逐渐偏向于线上化,对于高质量的音视频通话、视频会议、直播以及视频播放需求越来越广泛。作为桌面/应用的重要应用场景,音视频通话、直播和视频播放的用户体验问题为在云桌面/云应用使用的桌面传输协议所要克服的重点。
其中,音视频同步能够影响到多媒体产品的直观用户体验,是音视频媒体数据传输和渲染播放的最基本质量保障。在音视频同步以往的相关方案中,主要是基于时间差进行周期性的音视频同步校准,将客户端侧的时间与服务端的时间进行对齐,然而这种方式主要是依赖RTP(Real-time Transport Control Protocol,实时传输协议)/NTP(NetworkTime Protocol,网络时间协议)时间教准过程实现,此同步机制无法适用于云桌面的TCP(Transmission Control Protocol,传输控制协议)传输。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种音视频同步方法、一种音视频同步装置、相应的一种电子设备以及相应的一种计算机存储介质。
本申请实施例公开了一种音视频同步方法,应用于客户端,所述客户端与云端进行通信连接,所述方法包括:
所述客户端接收所述云端发送的音视频数据包的音视频信息以及音视频同步信息,根据所述音视频同步信息触发同步逻辑;其中,所述音视频同步信息用于表示当前场景符合预设音视频同步开启条件;
根据触发后的同步逻辑获取音视频渲染延迟信息,并根据所述音视频渲染延迟信息和所述音视频信息得到音视频数据包的相对延迟信息;
根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,以便客户端基于所述音频目标延迟信息和所述视频目标延迟信息调整缓存大小进行音视频同步。
可选地,所述客户端包括端口模块,所述云端包括云桌面/云应用操作系统与云桌面/云应用服务端;所述客户端接收所述云端发送的音视频信息,包括:
通过所述端口模块接收所述云桌面/云应用服务端发送的音视频信息;所述音视频信息为所述云桌面/云应用操作系统响应用户操作产生的媒体数据。
可选地,所述客户端接收所述云端发送的音视频同步信息,包括:
所述客户端接收由所述云端在判定当前场景符合预设音视频开启条件后所发送的音视频同步信息;所述预设音视频同步开启条件包括在音视频播放和/或语音通话场景下存在传输的视频流且用户输入操作的次数在预设时间段内小于预设阈值。
可选地,所述客户端包括端口模块,所述云端包括云桌面/云应用服务端;所述客户端接收由所述云端在判定当前场景符合预设音视频开启条件后所发送的音视频同步信息,包括:
通过所述端口模块接收所述云桌面/云应用服务端发送的音视频同步信息;所述音视频同步信息为所述云桌面/云应用服务端内的场景检测模块在判定当前场景符合预设音视频开启条件后生成。
可选地,所述客户端包括端口模块和媒体兼容模块;所述根据触发后的同步逻辑获取音视频渲染延迟信息,并根据所述音视频渲染延迟信息和所述音视频信息得到音视频数据包的相对延迟信息,包括:
在触发后的同步逻辑中,通过所述端口模块从所述媒体兼容模块实时获取音视频渲染延迟信息,并通过所述端口模块根据所实时读取的音视频渲染延迟信息和所接收的音视频信息得到音视频数据包的相对延迟信息。
可选地,所述音视频数据包的相对延迟信息包括当前时刻的音视频相对延迟信息;所述根据所述音视频渲染延迟信息和所述音视频信息得到音视频数据包的相对延迟信息,包括:
根据所述音视频信息计算得到当前所接收的音频数据包的当前音视频相对延迟信息;
根据所述音视频渲染延迟信息计算得到音视频的目标延迟信息;
采用所述当前音视频的目标延迟信息之差,与所述当前所接收的音频数据包的音视频相对延迟信息的和,得到当前时刻的音视频相对延迟信息。
可选地,所述音视频信息包括针对当前所接收的音视频数据包的视频到达时间、音频到达时间、视频采集时间以及音频采集时间;所述根据所述音视频信息计算得到当前所接收的音频数据包的当前音视频相对延迟信息,包括:
采用针对当前所接收的音视频数据包的视频到达时间与音频到达时间之差,与视频采集时间与音频采集时间之差的差值,计算得到当前所接收的音频数据包的当前音视频相对延迟信息。
可选地,所述根据所述音视频渲染延迟信息计算得到音视频的目标延迟信息,包括:
获取上一次同步生效后的视频总延迟信息和音频总延迟信息,以及采用所述音视频渲染延迟信息分别计算得到期望视频目标延迟信息与期望音频目标延迟信息;
将所述上一次同步生效后的视频总延迟信息与期望视频目标延迟信息中的较大者作为当前视频目标延迟信息,以及将上一次同步生效后的音频总延迟信息与期望音频目标延迟信息中的较大者作为当前音频目标延迟信息;
采用所述当前视频目标延迟信息和所述当前音频目标延迟信息的差值,计算得到音视频的目标延迟信息。
可选地,所述音视频渲染延迟信息包括音频渲染延迟信息、视频渲染延迟信息以及视频解码延迟信息;所述采用所述音视频渲染延迟信息分别计算得到期望视频目标延迟信息与期望音频目标延迟信息,包括:
采用所述视频渲染延迟信息与所述视频解码延迟信息之和,计算得到期望视频目标延迟信息;
以及,采用预设音频抖动缓冲区的当前缓存延迟与所述音频渲染延迟信息之和,计算得到期望视频目标延迟信息。
可选地,所述客户端包括端口模块,所述根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,包括:
通过所述端口模块根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息。
可选地,所述根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,包括:
按照预设时间间隔,不断基于所述当前时刻的音视频相对延迟信息,得到针对下一次音视频数据包的下一次音频目标延迟信息和下一次视频目标延迟信息,以便客户端基于下一次音频目标延迟信息和下一次视频目标延迟信息调整缓存大小进行音视频同步;
其中,所述当前时刻的音视频相对延迟信息基于当前音频的目标延迟信息和当前视频的目标延迟信息确定;所述基于所述当前时刻的音视频相对延迟信息,得到针对下一次音视频数据包的下一次音频目标延迟信息和下一次视频目标延迟信息,包括:
在所述当前时刻的音视频相对延迟信息大于零时,减小所述当前时刻的音视频相对延迟信息得到下一次音频目标延迟信息,或者增大所述当前视频的目标延迟信息得到下一次视频目标延迟信息;
和/或,在所述当前时刻的音视频相对延迟信息小于零时,增大所述当前时刻的音视频相对延迟信息得到下一次音频目标延迟信息,或者减小所述当前视频的目标延迟信息得到下一次视频目标延迟信息。
本申请实施例公开了一种音视频同步装置,应用于客户端,所述客户端与云端进行通信连接,所述装置包括:
音频同步信息接收模块,用于接收所述云端发送的音视频数据包的音视频信息以及音视频同步信息,根据所述音视频同步信息触发同步逻辑;其中,所述音视频同步信息用于表示当前场景符合预设音视频同步开启条件;
相对延迟信息获取模块,用于根据触发后的同步逻辑获取音视频渲染延迟信息,并根据所述音视频渲染延迟信息和所述音视频信息得到音视频数据包的相对延迟信息;
目标延迟信息确定模块,用于根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,以便客户端基于所述音频目标延迟信息和所述视频目标延迟信息调整缓存大小进行音视频同步。
可选地,所述客户端包括端口模块,所述云端包括云桌面/云应用操作系统与云桌面/云应用服务端;所述音频同步信息接收模块包括:
音视频信息接收子模块,位于所述端口模块,用于接收所述云桌面/云应用服务端发送的音视频信息;所述音视频信息为所述云桌面/云应用操作系统响应用户操作产生的媒体数据。
可选地,所述音频同步信息接收模块包括:
音视频同步信息接收子模块,用于接收由所述云端在判定当前场景符合预设音视频开启条件后所发送的音视频同步信息;所述预设音视频同步开启条件包括在音视频播放和/或语音通话场景下存在传输的视频流且用户输入操作的次数在预设时间段内小于预设阈值。
可选地,所述客户端包括端口模块,所述云端包括云桌面/云应用服务端;所述音视频同步信息接收子模块包括:
音视频同步信息接收单元,位于所述端口模块,用于接收所述云桌面/云应用服务端发送的音视频同步信息;所述音视频同步信息为所述云桌面/云应用服务端内的场景检测模块在判定当前场景符合预设音视频开启条件后生成。
可选地,所述客户端包括端口模块和媒体兼容模块;所述相对延迟信息获取模块包括:
延迟信息获取子模块,位于所述端口模块,用于在触发后的同步逻辑中,从所述媒体兼容模块实时获取音视频渲染延迟信息,并通过所述端口模块根据所实时读取的音视频渲染延迟信息和所接收的音视频信息得到音视频数据包的相对延迟信息。
可选地,所述音视频数据包的相对延迟信息包括当前时刻的音视频相对延迟信息;所述相对延迟信息获取子模块包括:
当前音视频相对延迟信息确定单元,用于根据所述音视频信息计算得到当前所接收的音频数据包的当前音视频相对延迟信息;
音视频的目标延迟信息确定单元,用于根据所述音视频渲染延迟信息计算得到音视频的目标延迟信息;
音视频相对延迟信息确定单元,用于采用所述当前音视频的目标延迟信息之差,与所述当前所接收的音频数据包的音视频相对延迟信息的和,得到当前时刻的音视频相对延迟信息。
可选地,所述音视频信息包括针对当前所接收的音视频数据包的视频到达时间、音频到达时间、视频采集时间以及音频采集时间;所述当前音视频相对延迟信息确定单元包括:
当前音视频相对延迟信息确定子单元,用于采用针对当前所接收的音视频数据包的视频到达时间与音频到达时间之差,与视频采集时间与音频采集时间之差的差值,计算得到当前所接收的音频数据包的当前音视频相对延迟信息。
可选地,所述音视频的目标延迟信息确定单元包括:
期望音视频目标延迟信息确定子单元,用于获取上一次同步生效后的视频总延迟信息和音频总延迟信息,以及采用所述音视频渲染延迟信息分别计算得到期望视频目标延迟信息与期望音频目标延迟信息;
当前音视频目标延迟信息确定子单元,用于将所述上一次同步生效后的视频总延迟信息与期望视频目标延迟信息中的较大者作为当前视频目标延迟信息,以及将上一次同步生效后的音频总延迟信息与期望音频目标延迟信息中的较大者作为当前音频目标延迟信息;
音视频的目标延迟信息确定子单元,用于采用所述当前视频目标延迟信息和所述当前音频目标延迟信息的差值,计算得到音视频的目标延迟信息。
可选地,所述客户端包括端口模块,所述目标延迟信息确定模块包括:
目标延迟信息确定子模块,位于所述端口模块,用于根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息。
可选地,所述目标延迟信息确定子模块包括:
目标延迟信息确定单元,用于按照预设时间间隔,不断基于所述当前时刻的音视频相对延迟信息,得到针对下一次音视频数据包的下一次音频目标延迟信息和下一次视频目标延迟信息,以便客户端基于下一次音频目标延迟信息和下一次视频目标延迟信息调整缓存大小进行音视频同步。
可选地,所述当前时刻的音视频相对延迟信息基于当前音频的目标延迟信息和当前视频的目标延迟信息确定;所述目标延迟信息确定单元包括:
目标延迟信息确定子单元,用于在所述当前时刻的音视频相对延迟信息大于零时,减小所述当前时刻的音视频相对延迟信息得到下一次音频目标延迟信息,或者增大所述当前视频的目标延迟信息得到下一次视频目标延迟信息;
目标延迟信息确定子单元,还用于在所述当前时刻的音视频相对延迟信息小于零时,增大所述当前时刻的音视频相对延迟信息得到下一次音频目标延迟信息,或者减小所述当前视频的目标延迟信息得到下一次视频目标延迟信息。
本申请实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述音视频同步方法的步骤。
本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述音视频同步方法的步骤。
本申请实施例包括以下优点:
本申请实施例中,客户端可通过接收云端发送的音视频数据包的音视频信息以及音视频同步信息,根据所接收的音频同步信息触发同步逻辑,所触发的同步逻辑可根据音视频渲染延迟信息和音视频信息得到音视频数据包的相对延迟信息,以便基于相对延迟信息得到用于调整缓存大小进行音频视频同步的音频目标延迟信息和视频目标延迟信息。针对于TCP传输可借鉴音视频相对延迟的概念,客户端通过将所接收的信息作为输入计算得到音视频同步所需的相对延迟信息,不需要依赖NTP/RTP时间校准,能够适用于针对云桌面/云应用的桌面传输协议中的TCP音视频传输路径,以及可基于表示当前场景符合预设音视频同步开启条件的音频同步信息,对于不同的办公场景动态进行开启关闭,不会在不需要同步的场景下引入额外的延迟;进一步地,还能够在保证同步和低延迟的前提下,增加对抗弱网抖动的能力。
附图说明
图1是本申请实施例提供的音视频同步的系统框架示意图;
图2是本申请的音视频同步方法实施例的步骤流程图;
图3是本申请实施例提供的音视频同步的流程示意图;
图4是本申请实施例提供的音视频同步的应用场景图;
图5是本申请的音视频同步装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为便于用户理解本发明,下面对本发明下述各实施例中涉及到的术语或名词做出解释:
RTP:Real-time Transport Control Protocol,实时传输协议;
NTP:Network Time Protocol,网络时间协议;
TCP:Transmission Control Protocol,传输控制协议;
Spice网络协议:是一种开源网络协议,提供与虚拟桌面设备的远程交互实现,主要应用在桌面虚拟化;
Webrtc:Web Real-Time Communication,网页即时通信,是支持网页浏览器进行实时语音对话或视频对话的API;
UDP:User Datagram Protocol,用户数据报协议;
SR包:为RTP报文段所发送的报文类型,以便接收方做好音视频同步工作;
NTP:Network Time Protocol,网络时间协议;
VCM:Video Compress Manager,视频压缩管理器提供的访问接口;
音频NetEq:Network Equalizer,网络均衡器,本质上可以是音频的抖动缓冲器Jitter Buffer,用于均衡网络抖动的效果器。
音视频同步能够影响到多媒体产品的直观用户体验,是音视频媒体数据传输和渲染播放的最基本质量保障。若音视频不同步可能造成延迟、卡顿等严重影响用户体验的现象,通常来说,音视频同步维护的是媒体数据的时间线顺序,即发送端在某一刻采集的音视频数据,接收端在另一时刻进行同时播放和渲染。
音视频同步的相关方案中,主要是基于时间差进行周期性的音视频同步校准,将客户客户端的时间与服务端的时间进行对齐。具体的,采用Spice网络协议的客户端所基于用于创建流媒体应用的框架Gstreamer的音视频同步逻辑,表现为在音视频开始播放时,服务器Server将会发送其服务端的单调时间monotic time到客户端,客户端会使用本地的monotic time与服务端下发的monotic time做差值offset,作为用于进行时间校准的seed,实现客户客户端的时间与服务端时间的对齐。
其中,每当视频帧到达,即当客户端接收到视频帧时,将会采用其本地的monotictime减去用于进行时间校准的seed,得到能够与服务端对齐的校准时间,此校准时间和视频帧自带的mm_time(multimedia time)进行比较,确定所接收到的视频帧解码后的渲染延迟或者丢帧逻辑的处理;每当音频帧达到,即当客户端接收到音视帧时,每隔预设时间间隔,例如每隔1秒钟检测渲染此音频帧渲染前的循环缓冲区Ringbuffer的水位,并利用此水位换算的延迟时间与音频带有的mm_time信息周期性的修正时间校准seed,从而基于对时间校准seed的周期性校正影响视频渲染快慢的逻辑。
然而,这种基于时间差进行周期性的音视频同步校准,将客户客户端的时间与服务端的时间进行对齐的音视频同步方式,其所采用的Spice基于mm_time周期性校准的音视频同步方案在网络不好,例如当网络存在较大抖动,由于网络发生拥塞所造成的排队延迟影响端到端延迟的情况下,这种校准方式会存在较大误差,且音视频会由于缺乏抗抖动能力不能流畅播放,存在卡顿,噪音等问题,严重影响用户体验。且Webrtc音视频同步是在应用层RTCP/RTP协议和UDP传输基础上,依赖于SR包中NTP和RTP时间校准实现,其最终计算的音视频目标延迟分别作用于视频VCM和音频NetEq两个jitter buffer上,通过调整缓存时间达到同步效果,但在云桌面的TCP传输中,并不存在RTP/NTP时间教准过程,上述音视频同步的方式并不适用于云桌面的TCP传输。此外,对于云桌面/应用上可能存在很多不需要同步的场景,例如在办公时听音乐为并不需要同步的场景,但在上述音视频同步方式中通常一直存在音视频同步,将会引入额外的延迟而降低用户体验。即上述所提出的Spice原生同步方案与Webrtc音视频同步方案的这两种同步方式,均不满足云桌面的需求。
本申请实施例的核心思想在于在Webrtc和Spice的音视频同步机制的基础上结合所会用的桌面传输协议自身的特性,在尽可能低的视频延迟下保证音画同步,并能够根据场景的不同动态开启与关闭同步的机制。不同于Spice原生逻辑中不断将客户端的时间与服务端对齐,本申请实施例所提出的音视频同步方案借鉴Webrtc音视频相对延迟的概念,客户端通过将所接收的信息作为输入计算得到音视频同步所需的相对延迟信息,不需要依赖NTP/RTP时间校准,能够适用于云桌面/云应用使用的桌面传输协议中的TCP音视频传输路径,以及可基于表示当前场景符合预设音视频同步开启条件的音频同步信息,对于不同的办公场景动态进行开启关闭,不会在不需要同步的场景下引入额外的延迟;进一步地,还能够在保证同步和低延迟的前提下,增加对抗弱网抖动的能力。
参照图1,示出了本申请实施例提供的音视频同步的系统框架示意图,音视频同步涉及到云端101与客户端102,其中客户端102与云端101进行通信连接。
云端101包括云桌面/云应用操作系统Guest OS 11和云桌面/云应用服务端Server 12,以及在Guest OS 11内部运行的进程Session VDI。其中,Guest OS(OperatingSystem,操作系统)11指的是云上桌面的操作系统,Session VDI(Virtual DesktopInfrastructure,虚拟桌面基础架构)指的是在针对云应用/云桌面的桌面传输协议体系中为每个用户创建的独立的会话控制,且能够与云端Guest OS中虚拟硬件驱动进行交互的进程;云桌面/云应用服务端Server 12指的是运行在云端,且为负责基于云桌面/云应用所使用的桌面传输协议与云桌面/云应用客户端Client进行网络传输的模块。
客户端102,即云桌面/云应用客户端Client包括端口模块(例如端侧SDK 13)和媒体兼容模块14,此客户端与云端进行通信连接。其中,客户端指的是在桌面传输协议体系中,只具有基本的计算处理、输入输出能力,且可连接到远程服务器并高效的展现用户界面的客户端,该客户端具有运行在本地PC(Personal Computer,个人计算机)上的软终端应用、电脑提供的瘦终端、安全浏览器等不同形式,而端侧SDK(Software Development Kit,软件开发工具包,其可以提供一套统一的API接口和工具)13为用于与Server12进行交互的模块,即客户端可基于端侧SDK 13与云端实现通信连接。
参照图2,示出了本申请的音视频同步方法实施例的步骤流程图,应用于客户端,所述客户端与云端进行通信连接,具体包括如下步骤:
步骤201,客户端接收云端发送的音视频数据包的音视频信息以及音视频同步信息,根据音视频同步信息触发同步逻辑;
在本申请实施例中,对于TCP传输可借鉴音视频相对延迟的概念,客户端通过将所接收的信息作为输入计算得到音视频同步所需的相对延迟信息,不需要依赖NTP/RTP时间校准,能够适用于针对云桌面/云应用的桌面传输协议中的TCP音视频传输路径,以及可基于表示当前场景符合预设音视频同步开启条件的音频同步信息,对于不同的办公场景动态进行开启关闭,不会在不需要同步的场景下引入额外的延迟。
在本申请的一种实施例中,客户端所作为输入用于计算相对延迟信息的信息:客户端为了计算相对延迟所需要的输入,通过接收云端发送的音视频数据包的音视频信息以及音视频同步信息实现,其中所接收的音视频同步信息可用于表示当前场景符合预设音视频同步开启条件,以触发同步逻辑,对用于进行音视频同步的相对延迟信息进行计算。
客户端包括端口模块,云端包括云桌面/云应用操作系统与云桌面/云应用服务端,此时可通过端口模块接收云桌面/云应用服务端发送的音视频信息,所接收的音视频信息为云桌面/云应用操作系统响应用户操作产生的媒体数据。在实际应用中,云端可向客户端发送音视频数据包的音视频信息,具体将Guest OS内部运行的播放器或者视频通话类应用所产生的音频和视频数据下发至会话控制进程Session-VDI,且可结合云桌面/云应用服务端Server内部的场景检测模块向客户端发送音视频同步所需的输入。
客户端包括端口模块,云端包括云桌面/云应用服务端,客户端所接收的云端发送的音视频同步信息,主要是通过端口模块接收云桌面/云应用服务端发送的音视频同步信息实现,其中,所接收的音视频同步信息为云桌面/云应用服务端内的场景检测模块在判定当前场景符合预设音视频开启条件后生成,即是通过云桌面/云应用服务端Server内部的场景检测模块在判定当前场景符合预设音视频开启条件后所发送的音视频同步信息,其预设音视频同步开启条件包括在音视频播放和/或语音通话场景下存在传输的音视频流,即存在音视频播放,视频通话时检测到摄像头采集的视频流,且用户键鼠操作的次数在单位时间内小于某个阈值,在满足音视频开启条件时,可将Avsync(Audio VideoSynchronization,音画同步)signal设置为True以生成音视频同步信息。在另一种情况下,若不满足音视频开启条件,则将Avsync signal设置为False。
具体的,云端内部所包含的场景检测模块包括模式切换模块、音频检测模块以及Input输入模块等。模式切换模块可根据视频区域、高比例更新和网络拥塞状况,将其模式在视频流和命令流之间切换;音频检测模块可用于通过系统级API(ApplicationProgramming Interface,应用程序编程接口)检测麦克风/扬声器状态,以判断当前是处于播放、语音通话还是无声音场景;Input输入模块用于判断用户输入操作,例如但不限于键盘操作、鼠标操作、控制板触控操作等的频繁程度,其频繁程度可基于在预设时间段内的操作次数确定,以及判断是否存在上行摄像头采集视频数据流,即是否存在视频流。
作为一种示例,假设在音视频播放的场景下,表现为模式切换模块切换到视频流,音视检测模块判定为播放场景,即存在音视频播放,在伴随着视频流和音频的数据下发时,若此时用户键鼠操作的次数在单位时间内内大于某个阈值,例如用户存在频繁的键鼠操作,则认为用户的注意力不在视频观看上,将会Avsync signal置为False,优先保证云桌面的办公交互体验;若此时用户输入操作的次数在预设时间段内小于预设阈值(为某个经验值),例如存在用户的键鼠操作频率很低,则可认为此时用户注意力在观看视频上,此时可将Avsync signal设置为True,以触发同步逻辑进行音视频同步。作为又一种示例,在办公的同时进行音乐播放的场景下,表现为模式切换模式在频繁的键鼠操作和较低的帧率时会切换到命令流场景,且音频检测模块判定为播放场景,那么此时可将Avsync signal设置为False,将不进行音频同步。作为又一种示例,假设在视频通话的场景下,表现为音频检测模块判定为语音通话模式,模式切换模块切换到视频流,同理可根据键鼠操作的频繁程度确定Avsync signal应当设置为True还是False,其不同于视频播放场景,此时若Input输入模块检测到camera视频采集数据,其还需要进行上行语音和视频的同步。那么,所生成音视频同步信息的预设音视频同步条件,示例性地,表现为音视频播放和/或语音通话模式、存在视频流且用户的键盘、鼠标、控制板触控操作不频繁。
需要说明的是,依赖于上述各个场景检测模块配合得到的Avsync signal,其为True时表示当前场景需要音视频同步,其为False表示当前场景禁止音视频同步,其为实时的过程,且同步的线程可每秒钟触发一次,在音视频同步之前将先查看Avsync signal的状态,以基于在需要音视频同步的前提下进行同步。此外,Avsync signal的同步逻辑也直接在端侧SDK内部进行,而不需要Server下发,此设计可依据实际需要调整,具体的调整策略在此不加以限制。
步骤202,根据触发后的同步逻辑获取音视频渲染延迟信息,并根据音视频渲染延迟信息和音视频信息得到音视频数据包的相对延迟信息;
客户端可基于端侧SDK的音频和视频通道接收云端发送的音视频数据包,且在触发同步逻辑后具体可通过媒体兼容模块得到音视频渲染延迟信息和服务器下发的音视频信息得到音视频数据包的相对延迟信息,具体可表现为通过端侧SDK从媒体兼容模块实时获取音视频渲染延迟信息,并通过端口模块根据所实时读取的音视频渲染延迟信息和所接收的音视频信息得到音视频数据包的相对延迟信息,以便进行音视频同步。
其中,客户端所接收到的音视频数据包的音视频信息包括针对当前所接收的音视频数据包的视频到达时间、音频到达时间、视频采集时间、音频采集时间以及音频Jitterbuffer的缓存数据量,视频采集时间以及音频采集时间可分别基于视频采集时间戳videomm_time(单位为ms)与音频采集时间戳audio mm_time(单位为ms)确定。
媒体兼容模块为在客户端负责与不同OS系统(跨平台)的API交互以进行音视频数据渲染(包括视频解码)的主要模块,同步模块集成在Server与SDK的音频通道以及视频通道SDK中为的是具备跨平台的能力,那么当Server与SDK的音频通道以及视频通道中同步逻辑触发时需要从媒体兼容模块实时获取最新的音频渲染延迟信息,此时基于媒体兼容模块得到的音视频渲染延迟信息包括音频渲染延迟信息、视频渲染延迟信息以及视频解码延迟信息,其中音频渲染延迟信息可用于后续计算期望音频目标延迟信息,视频解码延迟信息以及视频渲染延迟信息可用于后续计算期望视频目标延迟信息。
所触发的同步逻辑,可对用于进行音视频同步的相对延迟信息进行计算,以通过所借鉴的Webrtc音视频相对延迟的概念实现音视频同步。
具体的,可参照图3,示出了本申请实施例提供的音视频同步的流程示意图。所用于进行音视频同步的相对延迟信息指的是当前时刻的音视频相对延迟信息,在客户端通过端侧SDK的音频和视频通道每接收到一个数据包时,可通过端侧SDK根据音视频信息计算得到当前所接收的音频数据包的当前音视频相对延迟信息,以及根据音视频渲染延迟信息计算得到音视频的目标延迟信息,以便采用当前音视频的目标延迟信息之差,与当前所接收的音频数据包的音视频相对延迟信息的和,得到当前时刻的音视频相对延迟信息。
其中,在计算当前音视频相对延迟信息时,具体为,当前音视频相对延迟信息为最近一对音视频相对延迟,假设当前所接收的音视频数据包的视频到达时间,即最新视频到达时间为video_latest_received_time,最新音频到达时间为audio_latest_received_time,视频采集时间为video_mm_time(由Server发送),音频采集时间audio_mm_time(由Server发送),此时可采用针对当前所接收的音视频数据包的视频到达时间与音频到达时间之差,与视频采集时间与音频采集时间之差的差值,计算得到当前所接收的音频数据包的当前音视频相对延迟信息,即可表现为最近一对音视频相对延迟relative_delay=video_latest_received_time-audio_latest_received_time-(video_mm_time-audio_mm_time)。
在计算音视频的目标延迟信息时,具体为采用音视频渲染延迟信息获取当前视频目标延迟信息和当前音频目标延迟信息,以采用当前视频目标延迟信息和当前音频目标延迟信息的差值,计算得到音视频的目标延迟信息。其中,获取上一次同步生效后的视频总延迟信息和音频总延迟信息,以及采用音视频渲染延迟信息分别计算得到期望视频目标延迟信息与期望音频目标延迟信息,以确定用于保证音频是流畅的且满足期望延迟播放的期望音频目标延迟信息,以及用于保证视频是流畅的且满足延迟播放的期望音频目标延迟信息。
具体的,假设视频渲染延迟信息为render delay,视频解码延迟信息为decodeddelay,音频渲染延迟信息为render delay。此时可采用视频渲染延迟信息render delay与视频解码延迟信息decoded delay之和,计算得到期望视频目标延迟信息,即当前视频期望延迟expectedvideo delay=render delay+decoded delay;音视频同步依赖NetEq作为音频延迟调整的基础模块,此时可采用预设音频抖动缓冲区的当前缓存延迟itter delay与音频渲染延迟信息render delay之和,计算得到期望视频目标延迟信息,即当前音频期望延迟expected audio delay=jitter delay+render delay,其中NetEq当前的缓存延迟jitter delay通过所接收到的音视频信息中的音频Jitter buffer的缓存数据量,音频渲染延迟render delay需要从底层的媒体兼容模块获取。
在实际应用中,在确定期望音频目标延迟信息和期望音频目标延迟信息时,可将上一次同步生效后的视频总延迟信息与期望视频目标延迟信息中的较大者作为当前视频目标延迟信息,以及将上一次同步生效后的音频总延迟信息与期望音频目标延迟信息中的较大者作为当前音频目标延迟信息。其中,上一次同步生效后的视频总延迟信息以及上一次同步生效后的音频总延迟信息,用于表示视频的最小播放延迟以及音频的最小播放延迟。
此时可,采用当前音视频的目标延迟信息之差,与当前所接收的音频数据包的音视频相对延迟信息的和,得到当前时刻的音视频相对延迟信息,即可基于最近一对音视频包的相对延迟与音视频的目标延迟差之和,获得当前时刻的音视频相对延迟,也就是音视频流目前的时间误差,例如音视频相对延迟curr_diff_ms=current video delay-current audio delay+relative_delay。
步骤203,根据音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,以便客户端基于音频目标延迟信息和视频目标延迟信息调整缓存大小进行音视频同步。
同步逻辑所实现的音视频同步的计算,在单独的线程中被周期性的执行,例如按照预设时间间隔(每隔1秒一次)进行执行,其可通过端侧SDK不断基于当前时刻的音视频相对延迟信息,得到客户端进行音视频同步的视频目标延迟和音频目标延迟,具体为得到针对下一次音视频数据包的下一次音频目标延迟信息和下一次视频目标延迟信息,以便客户端基于下一次音频目标延迟信息和下一次视频目标延迟信息调整缓存大小进行音视频同步。
如图3所示,当前时刻的音视频相对延迟信息可基于当前音频的目标延迟信息和当前视频的目标延迟信息确定,即可采用当前音视频的目标延迟信息之差,与当前所接收的音频数据包的音视频相对延迟信息的和进行计算得到,在计算获得下一次的音频目标延迟信息和下一次的视频目标延迟信息时,可基于当前时刻的音视频相对延迟信息curr_diff_ms的值确定。
具体的,在当前时刻的音视频相对延迟信息curr_diff_ms大于零时,表示视频超前音频,减小当前时刻的音视频相对延迟信息得到下一次音频目标延迟信息,或者增大当前视频的目标延迟信息得到下一次视频目标延迟信息;在当前时刻的音视频相对延迟信息curr_diff_ms小于零时,表示视频落后于音频,增大当前时刻的音视频相对延迟信息得到下一次音频目标延迟信息,或者减小当前视频的目标延迟信息得到下一次视频目标延迟信息。即可通过这个过程,更新下一次的音频目标延迟信息(target_audio_delay)和下一次的视频目标延迟信息(target_video_delay)。
在一种优选的实施例中,客户端可基于音频目标延迟信息和视频目标延迟信息通过调整NetEq的缓存大小对下一个音频数据包进行音视频同步。对于音频而言,其所进行的延迟能够直接影响到音频缓存的大小,既音频缓存的大小即可体现音频的播放延迟,而对于视频而言,其所进行的延迟将影响到视频帧的渲染时间,此时可经过比较渲染时间和当前时间来决定解码后的视频帧需等待还是需要进行马上渲染。
目前客户端为保证画面最低延迟的效果,视频渲染缓冲只包含最新渲染的一帧数据,晚到的视频帧做丢帧处理,即此时的视频帧逻辑是不等待直接渲染,那么将重点放在增大或者减小音频播放延迟上,忽略对于视频延迟的调整,使得下一次的音频目标延迟信息target_audio_delay保证音频播放即流畅又同步。
如图3所示,涉及到音频JitterBuffer和变速箱技术,具体的,客户端可将音频目标延迟(target_audio_delay)作为NetEQ总缓存延迟的下限作用于NetEq,更新NetEq内部目标延迟的值,当NetEQ微控制器进行决策时,将会通过与真实音频缓存的比较下达相应指令至音频变速器,实现音频缓存的减速(拉伸)或者加速(压缩),以此来追赶或者等待视频,最终达到音视频同步的效果。其中,JitterBuffer位于NetEq内部,主要是动态调整缓存大小来抵抗网络抖动,平滑播放音频的前提下尽可能最小化缓存,以在保证视频传输和渲染的低延迟的前提下,利用Jitterbuffer的引入增加对抗弱网抖动的能力。
本申请实施例中,客户端可通过接收云端发送的音视频数据包的音视频信息以及音视频同步信息,根据所接收的音频同步信息触发同步逻辑,所触发的同步逻辑可根据音视频渲染延迟信息和音视频信息得到音视频数据包的相对延迟信息,以便基于相对延迟信息得到用于对下一音频数据包进行音频视频同步的音频目标延迟信息和视频目标延迟信息。针对于TCP传输可借鉴音视频相对延迟的概念,客户端通过将所接收的信息作为输入计算得到音视频同步所需的相对延迟信息,不需要依赖NTP/RTP时间校准,能够适用于在云桌面/云应用使用的桌面传输协议协议中的TCP音视频传输路径,以及可基于表示当前场景符合预设音视频同步开启条件的音频同步信息,对于不同的办公场景动态进行开启关闭,不会在不需要同步的场景下引入额外的延迟;进一步地,还能够在保证同步和低延迟的前提下,增加对抗弱网抖动的能力。
参照图4,示出了本申请实施例提供的音视频同步的应用场景图,音视频同步涉及到云端101与客户端102,其中客户端102与云端101进行通信连接。云端101包括云桌面/云应用操作系统Guest OS 11和云桌面/云应用服务端Server 12,以及在Guest OS 11内部运行的进程SessionVDI;云桌面/云应用客户端102,即Client包括端侧SDK 13和媒体兼容模块14,此客户端与云端进行通信连接。
对于TCP传输可借鉴音视频相对延迟的概念,客户端通过将所接收的信息作为输入计算得到音视频同步所需的相对延迟信息。在实际应用中,云端101内的Guest OS 11可将内部运行的播放器或者视频通话类应用将产生的媒体数据,并同时结合Server 12内的场景检测模块向客户端102发送用于音视频同步的输入计算,包括场景检测判断是否需要同步的音视频同步信息Avsync Signal,基于音频通道所传输的音频编码与音频采集时间戳,以及基于视频通道所传输的视频编码与视频时间戳,以将音视频同步信息AvsyncSignal、音频通道数据以及视频通道数据经由TCP发送给客户端102。
此时客户端102可通过Server与SDK的音频通道以及Server与SDK的视频通道接收音视频数据的相关音视频信息以及音视频同步信息Avsync Signal以计算得到用于输入进行同步计算的模块(例如图4中所示的音画同步模块SkAvsync,也可称为音视频同步器)的信息,包括音视频采集时间戳、音视频到达时间、音视频同步信息Avsync Signal、音频和视频解码渲染时延(audio render delay&video decoded/render delay)以及音频Jitterbuffer缓存数据量(Jitter delay),其中,所接收的音频和视频解码渲染时延(audiorender delay&video decoded/render delay)可用于计算期望音频目标延迟与期望视频目标延迟,音视频采集时间戳与音视频到达时间可用于计算最近一对音视频相对延迟。
所计算得到的用于保证音频是流畅的且满足延迟播放的期望音频目标延迟信息、用于保证视频是流畅的且满足延时播放的期望视频目标延迟信息,以及最近一对音视频相对延迟,作为音视频同步器的必要输入,此可基于音视频同步器的算法输出得到音频目标延迟与视频目标延迟。
其中,对于音频而言,其所进行的延迟能够直接影响到音频缓存的大小,既音频缓存的大小即可体现音频的播放延迟,而对于视频而言,其所进行的延迟将影响到视频帧的渲染时间,此时可经过比较渲染时间和当前时间来决定解码后的视频帧需等待还是需要进行马上渲染。在本申请实施例中,客户端为保证画面最低延迟的效果,视频渲染缓冲只包含最新渲染的一帧数据,晚到的视频帧做丢帧处理,即此时的视频帧逻辑是不等待直接渲染,那么可以将重点放在增大或者减小音频播放延迟上,忽略对于视频延迟的调整。
本申请实施例中,不同于Spice原生逻辑中不断将客户端的时间与服务端对齐,运用Spice简单的时间参考系,不需要依赖Webrtc复杂的NTP/RTP时间戳校准与转换;且相比于Spice同步机制,能够在保证同步和低延迟的前提下基于所引入的Jitterbuffer增加对抗弱网抖动的能力;且可以根据不同办公场景动态开启关闭同步模块,造不需要同步的场景不会引入额外延迟;以及通过改造Webrtc原生同步算法,使其适用于针对云桌面/云应用的桌面传输协议中的TCP音视频传输路径,用以实现音视频同步。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图5,示出了本申请的音视频同步装置实施例的结构框图,应用于客户端,所述客户端与云端进行通信连接,具体可以包括如下模块:
音频同步信息接收模块501,用于接收所述云端发送的音视频数据包的音视频信息以及音视频同步信息,根据所述音视频同步信息触发同步逻辑;其中,所述音视频同步信息用于表示当前场景符合预设音视频同步开启条件;
相对延迟信息获取模块502,用于根据触发后的同步逻辑获取音视频渲染延迟信息,并根据所述音视频渲染延迟信息和所述音视频信息得到音视频数据包的相对延迟信息;
目标延迟信息确定模块503,用于根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,以便客户端基于所述音频目标延迟信息和所述视频目标延迟信息调整缓存大小进行音视频同步。
在本申请的一种实施例中,所述客户端包括端口模块,所述云端包括云桌面/云应用操作系统与云桌面/云应用服务端;音频同步信息接收模块501可以包括如下子模块:
音视频信息接收子模块,位于所述端口模块,用于接收所述云桌面/云应用服务端发送的音视频信息;所述音视频信息为所述云桌面/云应用操作系统响应用户操作产生的媒体数据。
在本申请的一种实施例中,音频同步信息接收模块501可以包括如下子模块:
音视频同步信息接收子模块,用于接收由所述云端在判定当前场景符合预设音视频开启条件后所发送的音视频同步信息;所述预设音视频同步开启条件包括在音视频播放和/或语音通话场景下存在传输的视频流且用户输入操作的次数在预设时间段内小于预设阈值。
在本申请的一种实施例中,所述客户端包括端口模块,所述云端包括云桌面/云应用服务端;音视频同步信息接收子模块可以包括如下单元:
音视频同步信息接收单元,位于所述端口模块,用于接收所述云桌面/云应用服务端发送的音视频同步信息;所述音视频同步信息为所述云桌面/云应用服务端内的场景检测模块在判定当前场景符合预设音视频开启条件后生成。
在本申请的一种实施例中,所述客户端包括端口模块和媒体兼容模块;相对延迟信息获取模块502可以包括如下子模块:
延迟信息获取子模块,位于所述端口模块,用于在触发后的同步逻辑中,从所述媒体兼容模块实时获取音视频渲染延迟信息,并通过所述端口模块根据所实时读取的音视频渲染延迟信息和所接收的音视频信息得到音视频数据包的相对延迟信息。
在本申请的一种实施例中,所述音视频数据包的相对延迟信息包括当前时刻的音视频相对延迟信息;相对延迟信息获取子模块可以包括如下单元:
当前音视频相对延迟信息确定单元,用于根据所述音视频信息计算得到当前所接收的音频数据包的当前音视频相对延迟信息;
音视频的目标延迟信息确定单元,用于根据所述音视频渲染延迟信息计算得到音视频的目标延迟信息;
音视频相对延迟信息确定单元,用于采用所述当前音视频的目标延迟信息之差,与所述当前所接收的音频数据包的音视频相对延迟信息的和,得到当前时刻的音视频相对延迟信息。
在本申请的一种实施例中,所述音视频信息包括针对当前所接收的音视频数据包的视频到达时间、音频到达时间、视频采集时间以及音频采集时间;所述当前音视频相对延迟信息确定单元可以包括如下子单元:
当前音视频相对延迟信息确定子单元,用于采用针对当前所接收的音视频数据包的视频到达时间与音频到达时间之差,与视频采集时间与音频采集时间之差的差值,计算得到当前所接收的音频数据包的当前音视频相对延迟信息。
在本申请的一种实施例中,所述音视频的目标延迟信息确定单元可以包括如下子单元:
期望音视频目标延迟信息确定子单元,用于获取上一次同步生效后的视频总延迟信息和音频总延迟信息,以及采用所述音视频渲染延迟信息分别计算得到期望视频目标延迟信息与期望音频目标延迟信息;
当前音视频目标延迟信息确定子单元,用于将所述上一次同步生效后的视频总延迟信息与期望视频目标延迟信息中的较大者作为当前视频目标延迟信息,以及将上一次同步生效后的音频总延迟信息与期望音频目标延迟信息中的较大者作为当前音频目标延迟信息;
音视频的目标延迟信息确定子单元,用于采用所述当前视频目标延迟信息和所述当前音频目标延迟信息的差值,计算得到音视频的目标延迟信息。
在本申请的一种实施例中,所述客户端包括端口模块,目标延迟信息确定模块503可以包括如下子模块:
目标延迟信息确定子模块,位于所述端口模块,用于根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息。
在本申请的一种实施例中,目标延迟信息确定子模块可以包括如下单元:
目标延迟信息确定单元,用于按照预设时间间隔,不断基于所述当前时刻的音视频相对延迟信息,得到针对下一次音视频数据包的下一次音频目标延迟信息和下一次视频目标延迟信息,以便客户端基于下一次音频目标延迟信息和下一次视频目标延迟信息调整缓存大小进行音视频同步。
在本申请的一种实施例中,所述当前时刻的音视频相对延迟信息基于当前音频的目标延迟信息和当前视频的目标延迟信息确定;目标延迟信息确定单元可以包括如下子单元:
目标延迟信息确定子单元,用于在所述当前时刻的音视频相对延迟信息大于零时,减小所述当前时刻的音视频相对延迟信息得到下一次音频目标延迟信息,或者增大所述当前视频的目标延迟信息得到下一次视频目标延迟信息;
目标延迟信息确定子单元,还用于在所述当前时刻的音视频相对延迟信息小于零时,增大所述当前时刻的音视频相对延迟信息得到下一次音频目标延迟信息,或者减小所述当前视频的目标延迟信息得到下一次视频目标延迟信息。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电子设备,包括:
包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述音视频同步方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述音视频同步方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种音视频同步方法、一种音视频同步装置、相应的一种电子设备以及相应的一种计算机存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种音视频同步方法,其特征在于,应用于客户端,所述客户端与云端进行通信连接,所述方法包括:
所述客户端接收所述云端发送的音视频数据包的音视频信息以及音视频同步信息,根据所述音视频同步信息触发同步逻辑;其中,所述音视频同步信息用于表示当前场景符合预设音视频同步开启条件;
根据触发后的同步逻辑获取音视频渲染延迟信息,并根据所述音视频渲染延迟信息和所述音视频信息得到音视频数据包的相对延迟信息;
根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,以便客户端基于所述音频目标延迟信息和所述视频目标延迟信息调整缓存大小进行音视频同步。
2.根据权利要求1所述的方法,其特征在于,所述客户端包括端口模块,所述云端包括云桌面/云应用操作系统与云桌面/云应用服务端;所述客户端接收所述云端发送的音视频信息,包括:
通过所述端口模块接收所述云桌面/云应用服务端发送的音视频信息;所述音视频信息为所述云桌面/云应用操作系统响应用户操作产生的媒体数据。
3.根据权利要求1所述的方法,其特征在于,所述客户端接收所述云端发送的音视频同步信息,包括:
所述客户端接收由所述云端在判定当前场景符合预设音视频开启条件后所发送的音视频同步信息;所述预设音视频同步开启条件包括在音视频播放和/或语音通话场景下存在传输的视频流且用户输入操作的次数在预设时间段内小于预设阈值。
4.根据权利要求3所述的方法,其特征在于,所述客户端包括端口模块,所述云端包括云桌面/云应用服务端;所述客户端接收由所述云端在判定当前场景符合预设音视频开启条件后所发送的音视频同步信息,包括:
通过所述端口模块接收所述云桌面/云应用服务端发送的音视频同步信息;所述音视频同步信息为所述云桌面/云应用服务端内的场景检测模块在判定当前场景符合预设音视频开启条件后生成。
5.根据权利要求1所述的方法,其特征在于,所述客户端包括端口模块和媒体兼容模块;所述根据触发后的同步逻辑获取音视频渲染延迟信息,并根据所述音视频渲染延迟信息和所述音视频信息得到音视频数据包的相对延迟信息,包括:
在触发后的同步逻辑中,通过所述端口模块从所述媒体兼容模块实时获取音视频渲染延迟信息,并通过所述端口模块根据所实时读取的音视频渲染延迟信息和所接收的音视频信息得到音视频数据包的相对延迟信息。
6.根据权利要求1或5所述的方法,其特征在于,所述音视频数据包的相对延迟信息包括当前时刻的音视频相对延迟信息;所述根据所述音视频渲染延迟信息和所述音视频信息得到音视频数据包的相对延迟信息,包括:
根据所述音视频信息计算得到当前所接收的音频数据包的当前音视频相对延迟信息;
根据所述音视频渲染延迟信息计算得到音视频的目标延迟信息;
采用所述当前音视频的目标延迟信息之差,与所述当前所接收的音频数据包的音视频相对延迟信息的和,得到当前时刻的音视频相对延迟信息。
7.根据权利要求6所述的方法,其特征在于,所述音视频信息包括针对当前所接收的音视频数据包的视频到达时间、音频到达时间、视频采集时间以及音频采集时间;所述根据所述音视频信息计算得到当前所接收的音频数据包的当前音视频相对延迟信息,包括:
采用针对当前所接收的音视频数据包的视频到达时间与音频到达时间之差,与视频采集时间与音频采集时间之差的差值,计算得到当前所接收的音频数据包的当前音视频相对延迟信息。
8.根据权利要求6所述的方法,其特征在于,所述根据所述音视频渲染延迟信息计算得到音视频的目标延迟信息,包括:
获取上一次同步生效后的视频总延迟信息和音频总延迟信息,以及采用所述音视频渲染延迟信息分别计算得到期望视频目标延迟信息与期望音频目标延迟信息;
将所述上一次同步生效后的视频总延迟信息与期望视频目标延迟信息中的较大者作为当前视频目标延迟信息,以及将上一次同步生效后的音频总延迟信息与期望音频目标延迟信息中的较大者作为当前音频目标延迟信息;
采用所述当前视频目标延迟信息和所述当前音频目标延迟信息的差值,计算得到音视频的目标延迟信息。
9.根据权利要求8所述的方法,其特征在于,所述音视频渲染延迟信息包括音频渲染延迟信息、视频渲染延迟信息以及视频解码延迟信息;所述采用所述音视频渲染延迟信息分别计算得到期望视频目标延迟信息与期望音频目标延迟信息,包括:
采用所述视频渲染延迟信息与所述视频解码延迟信息之和,计算得到期望视频目标延迟信息;
以及,采用预设音频抖动缓冲区的当前缓存延迟与所述音频渲染延迟信息之和,计算得到期望视频目标延迟信息。
10.根据权利要求1所述的方法,其特征在于,所述客户端包括端口模块,所述根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,包括:
通过所述端口模块根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息。
11.根据权利要求1或10所述的方法,其特征在于,所述根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,包括:
按照预设时间间隔,不断基于所述当前时刻的音视频相对延迟信息,得到针对下一次音视频数据包的下一次音频目标延迟信息和下一次视频目标延迟信息,以便客户端基于下一次音频目标延迟信息和下一次视频目标延迟信息调整缓存大小进行音视频同步;
其中,所述当前时刻的音视频相对延迟信息基于当前音频的目标延迟信息和当前视频的目标延迟信息确定;所述基于所述当前时刻的音视频相对延迟信息,得到针对下一次音视频数据包的下一次音频目标延迟信息和下一次视频目标延迟信息,包括:
在所述当前时刻的音视频相对延迟信息大于零时,减小所述当前时刻的音视频相对延迟信息得到下一次音频目标延迟信息,或者增大所述当前视频的目标延迟信息得到下一次视频目标延迟信息;
和/或,在所述当前时刻的音视频相对延迟信息小于零时,增大所述当前时刻的音视频相对延迟信息得到下一次音频目标延迟信息,或者减小所述当前视频的目标延迟信息得到下一次视频目标延迟信息。
12.一种音视频同步装置,其特征在于,应用于客户端,所述客户端与云端进行通信连接,所述装置包括:
音频同步信息接收模块,用于接收所述云端发送的音视频数据包的音视频信息以及音视频同步信息,根据所述音视频同步信息触发同步逻辑;其中,所述音视频同步信息用于表示当前场景符合预设音视频同步开启条件;
相对延迟信息获取模块,用于根据触发后的同步逻辑获取音视频渲染延迟信息,并根据所述音视频渲染延迟信息和所述音视频信息得到音视频数据包的相对延迟信息;
目标延迟信息确定模块,用于根据所述音视频数据包的相对延迟信息得到音频目标延迟信息和视频目标延迟信息,以便客户端基于所述音频目标延迟信息和所述视频目标延迟信息调整缓存大小进行音视频同步。
13.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-11中任一项所述音视频同步方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11中任一项所述音视频同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210284202.8A CN114710687B (zh) | 2022-03-22 | 2022-03-22 | 音视频同步方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210284202.8A CN114710687B (zh) | 2022-03-22 | 2022-03-22 | 音视频同步方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114710687A true CN114710687A (zh) | 2022-07-05 |
CN114710687B CN114710687B (zh) | 2024-03-19 |
Family
ID=82168530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210284202.8A Active CN114710687B (zh) | 2022-03-22 | 2022-03-22 | 音视频同步方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114710687B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024109044A1 (zh) * | 2022-11-22 | 2024-05-30 | 华为技术有限公司 | 游戏数据传输及处理方法、服务器和终端设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100198992A1 (en) * | 2008-02-22 | 2010-08-05 | Randy Morrison | Synchronization of audio and video signals from remote sources over the internet |
CN103888813A (zh) * | 2012-12-21 | 2014-06-25 | 北京计算机技术及应用研究所 | 一种音视频同步的实现方法及系统 |
CN105245976A (zh) * | 2015-09-30 | 2016-01-13 | 合一网络技术(北京)有限公司 | 音频和视频同步播放的方法及系统 |
US20170105038A1 (en) * | 2015-10-09 | 2017-04-13 | Microsoft Technology Licensing, Llc | Media Synchronization for Real-Time Streaming |
WO2017206935A1 (zh) * | 2016-06-03 | 2017-12-07 | 公安部第三研究所 | 一种音视频同步测试的系统及方法 |
CN109587542A (zh) * | 2018-12-27 | 2019-04-05 | 北京奇艺世纪科技有限公司 | 音视频数据同步设备、方法、数据处理设备、介质 |
CN109963184A (zh) * | 2017-12-14 | 2019-07-02 | 阿里巴巴集团控股有限公司 | 一种音视频网络播放的方法、装置以及电子设备 |
US20210065749A1 (en) * | 2019-09-04 | 2021-03-04 | Sagemcom Broadband Sas | Method of decoding an incoming audio/video stream |
CN113225598A (zh) * | 2021-05-07 | 2021-08-06 | 上海一谈网络科技有限公司 | 移动端音视频同步的方法、装置、设备及存储介质 |
CN113453052A (zh) * | 2021-06-22 | 2021-09-28 | 海信视像科技股份有限公司 | 音画同步方法及显示设备 |
CN113891132A (zh) * | 2021-10-25 | 2022-01-04 | 北京字节跳动网络技术有限公司 | 一种音视频同步监控方法、装置、电子设备及存储介质 |
-
2022
- 2022-03-22 CN CN202210284202.8A patent/CN114710687B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100198992A1 (en) * | 2008-02-22 | 2010-08-05 | Randy Morrison | Synchronization of audio and video signals from remote sources over the internet |
CN103888813A (zh) * | 2012-12-21 | 2014-06-25 | 北京计算机技术及应用研究所 | 一种音视频同步的实现方法及系统 |
CN105245976A (zh) * | 2015-09-30 | 2016-01-13 | 合一网络技术(北京)有限公司 | 音频和视频同步播放的方法及系统 |
US20170105038A1 (en) * | 2015-10-09 | 2017-04-13 | Microsoft Technology Licensing, Llc | Media Synchronization for Real-Time Streaming |
WO2017206935A1 (zh) * | 2016-06-03 | 2017-12-07 | 公安部第三研究所 | 一种音视频同步测试的系统及方法 |
CN109963184A (zh) * | 2017-12-14 | 2019-07-02 | 阿里巴巴集团控股有限公司 | 一种音视频网络播放的方法、装置以及电子设备 |
CN109587542A (zh) * | 2018-12-27 | 2019-04-05 | 北京奇艺世纪科技有限公司 | 音视频数据同步设备、方法、数据处理设备、介质 |
US20210065749A1 (en) * | 2019-09-04 | 2021-03-04 | Sagemcom Broadband Sas | Method of decoding an incoming audio/video stream |
CN113225598A (zh) * | 2021-05-07 | 2021-08-06 | 上海一谈网络科技有限公司 | 移动端音视频同步的方法、装置、设备及存储介质 |
CN113453052A (zh) * | 2021-06-22 | 2021-09-28 | 海信视像科技股份有限公司 | 音画同步方法及显示设备 |
CN113891132A (zh) * | 2021-10-25 | 2022-01-04 | 北京字节跳动网络技术有限公司 | 一种音视频同步监控方法、装置、电子设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024109044A1 (zh) * | 2022-11-22 | 2024-05-30 | 华为技术有限公司 | 游戏数据传输及处理方法、服务器和终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114710687B (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7593354B2 (en) | Method and system for low latency high quality music conferencing | |
RU2392753C2 (ru) | Способ подачи устройству команды не выполнять синхронизацию или ввести задержку синхронизации для мультимедийных потоков | |
KR101008764B1 (ko) | 쌍방향 미디어 응답 시스템에서 시각 단서를 제공하는 방법 | |
US11516518B2 (en) | Live streaming with live video production and commentary | |
US9143810B2 (en) | Method for manually optimizing jitter, delay and synch levels in audio-video transmission | |
JP2015515208A (ja) | 相関したメディアプレゼンテーションの同期のためのバッファ管理方法 | |
JP2010539739A (ja) | データ・フローを同期化する方法 | |
JP2005523650A (ja) | オーディオおよびビデオストリームの同期のための装置および方法 | |
JP2006115477A (ja) | メディアストリームから得られるメディアの提示を行う方法およびシステム | |
MX2011005782A (es) | Metodo y aparato para controlar la reproduccion de datos de video-audio. | |
CN112291498B (zh) | 音视频数据传输的方法、装置和存储介质 | |
US20130166769A1 (en) | Receiving device, screen frame transmission system and method | |
CN114710687B (zh) | 音视频同步方法、装置、设备及存储介质 | |
CN115086732B (zh) | 一种音视频数据的同步方法及装置 | |
CN113596545A (zh) | 音轨切换方法、装置、媒体播放设备和计算机存储介质 | |
Huang et al. | Tsync: A new synchronization framework for multi-site 3d tele-immersion | |
CN113727185A (zh) | 视频帧播放方法及系统 | |
US10925014B2 (en) | Method and apparatus for synchronization in a network | |
US20120169929A1 (en) | Method And Apparatus For Processing A Video Signal | |
CN108540855B (zh) | 一种适用于网络直播场景下的自适应低延时流媒体播放方法 | |
EP2695389B1 (en) | Processing media streams for synchronised output at multiple end points | |
CN115102931B (zh) | 自适应调整音频延迟的方法及电子设备 | |
US20230290329A1 (en) | Acoustic signal cancelling | |
JP2008288667A (ja) | 情報処理装置、情報処理方法及び情報処理システム | |
CN117560517A (zh) | 直播合唱的音频流缓存处理方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |