一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于在网络会议会话内同步共享视频内容的延迟补偿的制作方法

2022-09-15 07:17:29 来源:中国专利 TAG:

用于在网络会议会话内同步共享视频内容的延迟补偿


背景技术:

1.现代网络会议系统促进了在彼此远离的人之间在线进行的虚拟会议。通常,网络会议系统允许位于两个或者更多个远程位置的用户经由实况、同时的双向视频流、音频流或者这两者与彼此交互地通信。一些网络会议系统(例如,由san jose,ca的cisco systems公司提供的cisco webex、由santa clara,ca的citrix systems公司提供的gotomeeting、由sna jose,ca的zoom video communications提供的zoom、由mountain view,ca的alphabet公司提供的google hangouts、以及由redmond,wa的microsoft corporation提供的teams meeting)也促进了屏幕共享。以这种方式,基于互联网的通信会话的参与者能够在客户端设备的显示屏上共享正在本地播放的视频(以及任何其他媒体内容)。
2.遗憾的是,现代网络会议系统所利用的常规屏幕共享技术不适合以全分辨率和帧速率来共享视频内容。例如,这些技术通常要求视频在上传流中被传输到网络会议服务器之前在共享者的设备处进行完全处理和渲染。然后,所上传的视频内容在下载流中被从网络会议服务器传输到其他设备。因此,在这些技术中,视频内容直到已经在共享者的设备上被渲染并且被上传到网络会议服务器之前不可用于下载。
3.这些常规屏幕共享技术(例如,其依赖于在视频内容在共享者的设备处被渲染时对视频内容的实时上传和下载)的一个主要缺点是网络会议系统不能够促进对视频内容的任何即将到来部分的缓存。另一主要缺点在于网络限制常常要求在视频内容被添加到上传流之前降低视频内容的分辨率和帧速率。作为具体示例,在共享者的设备上以每秒60帧渲染的视频在被上传到网络会议服务器并且然后被分发到其他客户端设备之前可能被减少到仅每秒5帧。降低帧速率和/或分辨率的一个原因是上传速度通常大大低于典型网络上的下载速度。此外,即使在降低的分辨率和帧速率的情况下,网络延迟也经常妨碍共享视频内容跨各种参与者计算设备进行同步渲染。例如,由于流送的视频内容被传输到不同设备所花费的时间不同,因此共享的视频内容可能在不同的客户端设备的不同播放头(playhead)位置处被无意地播放。
4.关于这些以及其他考虑,做出了以下公开。


技术实现要素:

5.在本文中所公开的技术使得系统能够执行延迟补偿技术以促进在通信会话期间对视频内容的同步共享。简言之,系统使得在通信会话期间被共享的视频内容能够跨用于参与通信会话的许多不同客户端设备被同步地播放,而不经受与许多不同客户端设备相关联的网络延迟的变化。所公开的技术提供了对现有屏幕共享技术的改进,现有屏幕共享技术包括从共享者的设备连续上传共享媒体内容流并且将这些上传的流分发到其他设备。例如,在本文中所描述的技术使得系统能够促进在通信会话期间对视频内容的共享,而无需最初在共享者的设备处渲染视频内容并且同时从共享者的设备上传所渲染的视频内容。此外,在本文中所描述的技术包括延迟补偿以适应跨许多不同客户端设备经历的网络延迟的变化。
6.因此,在本文中所描述的技术减少或者甚至完全消除了跨用于参与通信会话的各种不同客户端设备播放共享视频内容的播放头位置中的任何差异。此外,如下文所描述的,在本文中所描述的技术的各种实施例使得个体客户端设备能够独立地缓存共享的视频内容,由此使得共享的视频内容能够以预期的完全视频分辨率和帧速率跨各种客户端设备同步地播放(例如,通过消除对来自共享者设备的视频内容的实时上传流的依赖)。至少出于前述原因,在本文中所描述的技术提供了改善计算设备在基于网络的通信会话(例如,虚拟会议)期间共享媒体内容的网络效率的技术益处。例如,这样的技术能够通过消除对在视频内容被分发到其他参与者的设备之前从共享者的设备同时渲染和上传的视频内容的依赖来提高网络效率。因此,通过部署在本文中所描述的技术,能够在通信会话期间显著地减少对诸如网络资源、存储器资源、处理资源和电源资源(例如,“电池”)的各种计算资源的使用。
7.在示例性实现方式中,系统通过在多个客户端设备之间传输双向用户流来促进通信会话(例如,虚拟会议或者基于网络的会议)。例如,客户端设备中的个体客户端设备可以经由各种输入设备(诸如相机和麦克风)连续地捕获(例如,用户的)音频和视频“av”数据。所捕获的a/v数据可以被连续地流送到(一个或多个)服务器设备。在接收到av数据流时,(一个或多个)服务器设备向每个个体客户端设备传输从每个其他客户端设备接收到的a/v数据的流。以这种方式,每个个体客户端设备使得能够利用其他客户端设备来渲染参与者的实况视频。
8.除了促进通信会话之外,系统还获得媒体数据,所述媒体数据定义将在通信会话期间跨客户端设备同时播放的媒体内容。例如,用户可以在通信会话期间和/或在通信会话之前将视频上传到(一个或多个)服务器设备。然后,在通信会话期间的某时间点,在客户端设备正在渲染在其他参与者的客户端设备处捕获的实况视频或简单的音频流时,由(一个或多个)服务器设备托管的视频可以被流送到并且被显示在客户端设备处。
9.在通信会话期间,系统接收基于在特定客户端设备处接收到的用户输入而生成的用户播放指令,用于跨所有客户端设备发起对视频的回放。例如,在特定客户端设备处的用户可以选择视频,并且甚至可以将视频的播放头位置调整到期望的播放头位置。然后,用户可以选择与视频相关联的“播放”或“共享”命令,以使得所有其他客户端设备在期望的播放头位置处开始对视频的回放。
10.系统也确定针对客户端设备中的个体客户端设备的延迟值。具体而言,延迟数据定义与将信息传输到个体客户端设备相关联的个体延迟值。例如,针对特定客户端设备的延迟值54毫秒指示被发送到该特定客户端设备的信息将需要54毫秒才能跨一个或多个网络传输并且最终到达该特定客户端设备。确定针对客户端设备的延迟值可以包括周期性地ping个体客户端设备并且测量ping从接收设备返回(例如,回传到)发送设备所花费的时间量。例如,假设这些个体往返时间的每一段在时间上是相等的,与任意个体客户端设备相关联的延迟值可以被假设为所测量的往返时间的一半。
11.最终,系统可以通过向客户端设备传输包括针对个体客户端设备的定制延迟值的延迟播放指令来响应用户播放指令。例如,个体延迟播放指令可以包括延迟延时值,所述延迟值规定在发起对视频的回放之前每个接收客户端设备要等待(即,在接收到指令之后)的时间量。以这种方式,可以使得所有设备等待适当的时间量,以便即使经历最高网络延迟的
设备也将接收到其指令。然后,所有设备能够同步地或者同时地播放视频。
12.除了上文明确描述的那些之外的特征和技术益处将通过阅读以下详细描述和回顾相关附图而变得明显。提供本发明内容以以简化的形式介绍概念的选择,这些概念将在下文的详细描述中进一步描述。本发明内容并非旨在识别所要求保护的主题的关键或基本特征,也并不旨在用于辅助确定所要求保护的主题的范围。例如,术语“技术”可以指代上文和贯穿本文档所描述的上下文所允许的(一种或多种)系统、(一种或多种)方法、计算机可读指令、(一个或多个)模块、算法、硬件逻辑单元和/或(一个或多个)操作。
附图说明
13.参考附图描述了详细描述。在图中,附图标记的最左侧的(一个或多个)数字标识所述附图标记首次出现的图。不同图中相同的附图标记指示相似或相同的项目。对多个项目中的个体项目的引用能够使用带有字母序列中的字母的附图标记来指代每个个体项目。对项目的通用引用可以使用没有字母序列的特定附图标记。
14.图1a图示了系统执行延迟补偿技术以促进在通信会话期间跨多个客户端设备对视频内容的同步共享的示例性场景。
15.图1b图示了在系统已经向多个客户端设备分派多个延迟播放指令以使得视频内容跨多个客户端设备开始同步播放之后的图1a的示例性场景,尽管网络延迟在客户端设备中的不同客户端设备处不同。
16.图1c图示了在对应的客户端设备处接收到延迟播放指令中的每个延迟播放指令之后图1a至图1b的示例性场景。
17.图1d图示了在系统已经分派多个暂停指令以使得视频内容的回放跨所有客户端设备在完全相同的播放头位置处暂停之后的图1a至图1c的示例性场景,尽管网络延迟在客户端设备中的不同客户端设备处不同。
18.图2图示了系统在通信会话期间促进对视频内容的同步共享的替代场景。
19.图3a图示了系统确定与被用于参与通信会话的个体客户端设备相关联的延迟值的示例性场景。
20.图3b示出了与图3a相比系统在稍后的时间确定与个体客户端设备相关联的延迟值的示例性场景。
21.图3c示出了与图3b相比系统在稍后的时间确定与个体客户端设备相关联的延迟值的示例性场景。
22.图3d示出了与图3c相比系统在稍后的时间确定与个体客户端设备相关联的延迟值的示例性场景。
23.图4a示出了根据在本文中所描述的技术的示例性图形用户界面,其可以被同时地显示于在异步回放模式内操作的两个不同客户端设备上。
24.图4b示出了根据在本文中所描述的技术的示例性图形用户界面,其可以被同时地显示于在同步回放模式内操作的两个不同客户端设备上。
25.图4c示出了在主控制状态从第一客户端设备被传递到第二客户端设备之后可以被同时地显示在两个不同客户端设备上的示例性图形用户界面。
26.图4d示出了可以被同时地显示在两个不同客户端设备上的示例性图形用户界面,
所述设备中的一个设备在自主排队状态下操作。
27.图5是用于执行延迟补偿技术以促进在通信会话期间跨多个客户端设备对视频内容的同步共享的示例性过程的流程图。
28.图6是图示了在其中系统能够实施在本文中所公开的技术的示例性环境600的图。
29.图7图示了示出示例性设备(在本文中也被称为“计算设备”)的示例性组件的图,所述示例性设备被配置为生成针对在本文中所公开的用户界面中的一些用户界面的数据。
具体实施方式
30.图1a图示了系统100执行延迟补偿技术以促进在通信会话128期间对视频内容的同步共享的示例性场景。简言之,系统100使得在通信会话128期间被共享的视频内容能够跨用于参与通信会话128的许多不同客户端设备114同步地播放(例如,在基本上相同的播放头位置122处)。在本文中所公开的关于系统100的技术提供了对现有屏幕共享技术的改进,现有屏幕共享技术要求视频内容最初在个体客户端设备处进行处理和渲染,同时上传到网络会议服务器以用于分发到一个或多个其他客户端设备(在这些客户端设备处,视频内容将最终以一定的网络延迟导致的延迟来渲染)。例如,如上文所描述的,现有屏幕共享技术试图通过在将渲染的视频内容上传到网络会议服务器之前降低渲染的视频内容的分辨率和/或帧速率来减轻网络延迟的影响。以这种方式,为共享视频内容而上传的数据流的比特率降低,这部分地降低了跨设备的视频内容的播放头位置之间的延迟。遗憾的是,即使在被上传之前降低了视频内容的分辨率和/或帧速率,也不能够消除视频内容在被分发到其他客户端设备之前最初在共享者的设备处渲染并且然后从共享者的设备上传的要求。由于从共享者的设备上传视频内容固有地需要一些时间量,因此现有的屏幕共享技术不能够完全消除由网络引起的延迟导致的播放头位置的延迟。相反,在本文中所描述的技术使得系统100能够在通信会话128期间促进对视频内容的共享,而无需最初在共享者的设备处渲染视频内容并且同时从共享者的设备上传渲染的视频内容。此外,在本文中所描述的技术包括延迟补偿以适应跨许多不同的客户端设备114经历的网络延迟的变化。
31.因此,在本文中所描述的技术减少或者甚至完全消除了在跨用于参与通信会话128的各种客户端设备114播放共享视频内容的播放头位置122中的任何差异。此外,如下文所描述的,在本文中所描述的技术的各种实施例使得个体客户端设备114能够独立地维护共享视频内容的某个预取部分(例如,通过预下载共享视频内容的整体或者通过维护对共享视频内容的某个即将到来的部分的缓存),由此使得共享的视频内容能够以预期的完全视频分辨率和帧速率跨各种客户端设备114同步地播放(例如,通过消除对来自共享者的视频内容的实时上传视频内容流的依赖)。至少出于前述原因,在本文中所描述的技术提供了提高计算设备在基于网络的通信会话(例如,虚拟会议)期间共享媒体内容的网络效率的技术益处。例如,这样的技术能够通过消除对在视频内容被分发到其他参与者的设备之前从共享者的设备同时渲染和上传的视频内容的依赖来增加网络效率。因此,通过部署在本文中所描述的技术,能够在通信会话期间显著地减少对诸如网络资源、存储器资源、处理资源和电源资源(例如,“电池”)的各种计算资源的使用。
32.如在图1a中所图示的,系统100可以包括一个或多个服务器设备102以及一个或多个客户端设备114,客户端设备114执行在本文中所描述的各种操作和/或存储在本文中所
描述的各种类型的数据。关于客户端设备114,尽管以膝上型计算设备的形式被图示出,但是客户端设备114可以是任意合适的形式,诸如,例如台式计算机、智能电话、智能手表、智能电视,等等。在所图示的实施例中,(一个或多个)服务器设备102可以存储(或者以其他方式访问)定义“基于网络的”通信会话的各方面的会议数据104。例如但不限于,会议数据104可以包括受邀者列表、“基于网络的”通信会话将发生的预定时间、和/或使得第一客户端设备114(1)至第n客户端设备114(n)能够利用相应的通信模块116加入“基于网络的”通信会话(例如,如由跨第一客户端设备114(1)至第n客户端设备114(n)的通信会话128所表示的)的链路。如所图示的,会议数据104还可以包括被托管在服务器设备102上的媒体数据106。媒体数据106可以是在通信会话128之前和/或在通信会话128期间从客户端设备114中的一个或多个客户端设备上传到服务器设备102的视频数据(例如,mpeg-4部分14数据,或者任何其他合适的格式)。例如,通信会话128的组织者可以利用通信模块116(例如,microsoft outlook等)来生成与通信会话128相关联的日历对象。所述日历对象可以使得通信会话128被添加到各种受邀者的电子日历,同时也提供对媒体数据106的访问。如所图示的,媒体数据106可以被托管在服务器设备102上。在一些实施例中,媒体数据106包括将在通信会话128期间被共享的视频内容(例如,mpeg-4部分14数据)。另外地或替代地,媒体数据106可以包括指向在服务器设备102外部托管的视频内容的链接或指针。例如,媒体数据106可以包括到由第三方视频托管服务(例如,vimeo、youtube等)托管的在线视频的链接。
33.在所图示的实施例中,(一个或多个)服务器设备102还包括延迟数据108,延迟数据108定义与客户端设备114中的个体客户端设备相关联的延迟值。如在本文中所使用的,术语“延迟值”指代信息从特定计算设备(例如,服务器设备102)通过一个或多个网络发送到客户端设备114中的个体客户端设备所花费的时间。例如,通过一个或多个网络将信息从服务器设备102中的一个或多个服务器设备发送到第一客户端设备114(1)所花费的时间量可以被恰当地被称为第一客户端设备114(1)的延迟值。出于非限制性说明的目的,在图1a中所示的延迟数据108定义了与第一客户端设备114(1)相关联的12毫秒(ms)的第一延迟值、与第二客户端设备114(2)相关联的21毫秒的第二延迟值、以及与第n客户端设备114(n)相关联的55毫秒的第n延迟值。因此,在根据数据从一个或多个服务器设备102被传输到个体客户端设备114所花费的时间来测量延迟值的情况下,则从服务器设备102发送的信息将花费12毫秒来到达第一客户端设备114(1)、花费21毫秒来到达第二客户端设备114(2),以此类推。
34.在一些实施例中,(一个或多个)服务器设备102被配置为部署延迟监视器110以生成与客户端设备114中的个体客户端设备相关联的延迟数据108。例如,在通信会话128期间,延迟监视器110可以周期性地向个体客户端设备114传输信息,并且可以测量从个体客户端设备114接收到回复所花费的时间量。将意识到的是,该测量的时间量表示数据从服务器设备102传输到特定客户端设备114并且然后从该特定客户端设备114返回到服务器设备102所花费的往返时间。因此,假设该往返时间的每一段在时间上相等,则与任意个体客户端设备114相关联的延迟值可以被假定为所测量的往返时间的一半。如下文更详细描述的,在一些实施例中,延迟监控器110可以部署机器学习引擎112来分析延迟数据108的各方面(例如,针对个体客户端设备和/或客户端设备组的延迟的上升和/或下降趋势)以细化与个体客户端设备114相关联的延迟值。
35.在图1a至图1d中关于第一时间t1至第七时间t7描述了系统100执行延迟补偿技术以促进在通信会话128期间对视频内容的同步共享的示例性场景的各方面。出于本讨论的目的,这些时间表示以下时间序列,其中:t1《t2《t3《t4《t5《t6《t7(其中,《意指“在

之前”)。被描述为在时间序列内的个体时间发生的事件序列仅仅用于说明目的。在不背离所描述的实施例和所附的权利要求的范围的情况下,这些事件中的个体事件可以被省略和/或相对于这些事件中的其他事件被重新排序。
36.在第一时间t1,系统100正在服务器设备102与个体客户端设备114之间传送多个双向用户流127,以用于促进通信会话128。具体而言,系统100被示为在服务器设备102与第一客户端设备114(1)之间传送第一双向用户流127(1)、在服务器设备102与第二客户端设备114(2)之间传送第二双向用户流127(2)、以及在服务器设备102与第n客户端设备114(n)之间传送第n双向用户流127(n)。如在本文中所使用的,术语“流”可以指代通过一个或多个网络在不同计算设备之间的基本连续的数据流(例如,音频和视频材料)。例如,从服务器设备102到个体客户端设备114的视频内容的连续流可以恰当地被称为流(也被称为“数据流”)。如在本文中所使用的,术语“双向用户流”指代以下项的组合:上传流,其包括由特定客户端设备114的一个或多个输入设备(例如,麦克风、视频相机等)捕获的数据;以及下载流,其包括由至少一个其他客户端设备114的(一个或多个)输入设备捕获的数据。
37.出于本讨论的目的,假设与每个个体客户端设备114相关联地示出的每个双向用户流127包括上传流,所述上传流具有在该个体客户端设备114处捕获的基本上实时的音频或者基本上实时的视频中的至少一个。此外,假设与每个个体客户端设备114相关联地图示出的每个双向用户流127包括下载流,所述下载流具有在用于参与通信会话128的其他客户端设备114中的一个或多个其他客户端设备处捕获的基本上实时的音频或者基本上实时的视频中的至少一个。例如,第一双向用户流127(1)可以包括由第一客户端设备114(1)的麦克风和相机捕获的实时数据的上传流,以及由在第二客户端设备114(2)和第n客户端设备114(n)中的每个客户端设备处的麦克风和相机捕获的实时数据的下载流。因此能够意识到,通过传送双向用户流127,系统100可以促进通信会话128作为一种类型的“虚拟的”或者“基于网络的”集会或会议,在此期间可以向个体参与者呈现其他参与者的音频和/或者视频,同时也将其自己的音频和/或视频呈现给那些其他参与者。出于对图1a至图1d的当前讨论的目的,假设双向用户流127的通信从第一时间t1持续到第七时间t7。
38.在第二时间t2,用户播放指令130由第一客户端设备114(1)生成并且从其传输到服务器设备102。用户播放指令130可以基于在第一客户端114(1)处接收到的用户输入而生成,与(在会议数据104内识别出的)媒体数据106相关联,以使得视频内容在第一客户端设备114(1)至第n客户端设备114(n)处同步地播放。如所图示的,用户播放指令130可以包括开始播放媒体数据106的第一播放头位置112(1)的指示。例如,媒体数据106可以包括(或者指向)当被播放(例如,以预定义的帧速率)时形成视频内容的帧序列,并且用户播放指令130可以定义在该序列内的特定帧,在所述特定帧处,视频内容将跨个体客户端设备114开始同步地播放。另外地或替代地,用户播放指令130可以定义视频内容跨个体客户端设备114开始同步播放的特定时间。
39.出于在图1a至图1d中所图示和描述的示例性场景的目的,假设服务器设备102在接收到用户播放指令130时开始将个体媒体流132传输到客户端设备114中的个体客户端设
备。具体而言,服务器设备102被示为通过发起将第一媒体流132(1)传输到第一客户端设备114(1)、将第二媒体流132(2)传输到第二客户端设备114(2)、以及将第n媒体流114(n)传输到第n客户端设备114(n),来响应用户播放指令130。如在本文中所使用的,术语“媒体流”可以指代从服务器设备102到客户端设备114中的个体客户端设备的媒体数据106(例如,mp4格式的音频/视频内容)的流。因此,能够意识到,媒体流132本质上可以是单向的(例如,与由于具有上传部分和下载部分两者而本质上是双向的相反)。
40.如上文所描述的,个体媒体流132到达对应的客户端设备114所花费的时间量由于通过一个或多个网络传输数据而固有地导致的延迟或延时而变化。如由延迟数据108所指示的,例如,从服务器设备102传输(例如,通过互联网)的信息将花费12毫秒到达第一客户端设备114(1)、花费21毫秒到达第二客户端设备114(2)、以及花费55毫秒到达第n客户端设备114(n)。因此,假设对媒体流132的传输是同时地发起的,可以预期在仅12毫秒之后并且在第二媒体流132(2)或第n媒体流132(n)中的任一个媒体流分别到达第二客户端设备114(1)或第n客户端设备114(n)之前,第一媒体流132(1)将到达第一客户端设备114(1)。
41.基于与各种客户端设备114相关联的这些网络延迟,在第三时间t3,第一媒体流132(1)被示为已经到达第一客户端设备114(1),而在该第三时间t3,第二媒体流132(2)尚未到达第二客户端设备114(2)并且第n媒体流132(n)尚未到达第n客户端设备114(n)。如所图示的,在接收到第一媒体流132(1)的某个初始部分时,第一客户端设备114(1)被示为已经将视频内容的媒体状态120设置为在第一通信模块116(1)内“暂停”。另外地或替代地,在接收到第一媒体流132(1)的初始部分时,第一客户端设备114(1)可以建立(例如,经由第一媒体流132(1)连续接收到的)视频内容的第一缓存器124(1)。
42.现在转向图1b,图示了第四时间t4,在该第四时间t4,系统100已经向各种客户端设备114分派了多个延迟播放指令134。具体而言,服务器设备102已经将第一延迟播放指令134(1)分派到第一客户端设备114(1)、将第二延迟播放指令134(2)分派到第二客户端设备114(2)、以及将第n延迟播放指令134(n)分派到第n客户端设备114(n))。延迟播放指令134(1)中的个体延迟播放指令可以包括开始播放视频内容的第一播放头位置122(1)的指示。
43.在一些实施例中,延迟播放指令134(1)中的个体延迟播放指令定义指示接收客户端设备114将开始播放在媒体流132中接收到的视频内容的时间的延迟延时126。作为具体但非限制性的示例,在个体延迟播放指令134内定义的延迟延时126可以指示在播放视频内容之前接收客户端设备114要等待(例如,在接收到延迟播放指令134之后)的时间量。以这种方式,可以指示正在经历比其他客户端设备114更少的网络延迟的个体客户端设备114在播放视频内容之前等待适当的时间量,以便允许所有客户端设备114有足够的时间来接收对应的媒体流132。因此,不是每个个体客户端设备114在接收到视频内容时都立即开始播放视频内容(这将可能导致对视频内容的异步回放),而是可以使得个体客户端设备114等待直到所有其他客户端设备也已经接收到视频内容。
44.为了例示说明这一点,假设从服务器设备102同时分派第一延迟播放指令134(1)至第n延迟播放指令134(n)中的每个延迟播放指令。基于在所例示的场景中的延迟数据108,进一步假设第一延迟播放指令134(1)将在被分派之后的12毫秒接收到,第二延迟播放指令134(2)将在被分派之后的21毫秒接收到,以及第n延迟播放指令134(n)将在被分派之后的55毫秒接收到。应当意识到,基于这些假设,第一延迟播放指令134(1)将在第n延迟播
放指令134(n)被第n客户端设备114(n)接收到之前的43毫秒被第一客户端设备114(1)接收到,并且第二延迟播放指令134(2)将在第n延迟播放指令134(n)被第n客户端设备114(n)接收到之前的34毫秒被第二客户端设备114(2)接收到。在这些示例性但非限制性的情况下,合适的第一延迟延时126(1)可以是43毫秒,合适的第二延迟延时126(2)可以是34毫秒,并且合适的第n延迟延时126(n)可以是0毫秒。在此,第一客户端设备114(1)可以在接收到第一延迟播放指令134(1)之后推迟播放视频内容43毫秒,第二客户端设备114(2)可以在接收到第二延迟播放指令134(2)之后推迟播放视频内容34毫秒,并且第n客户端设备114(n)可以在接收到第n延迟播放指令134(n)时立即开始播放视频内容。因此,能够意识到,在一些示例中,被传输到相应客户端设备114的每个延迟播放指令134可以定义基于由相应客户端设备开始经历的延迟与客户端设备114中的任意客户端设备经历的最长延迟之间的差异来确定延迟延时量。例如,在此,第n客户端设备114(n)正在经历最长延迟(例如,55ms),并且为每个设备确定的延迟延时是基于该设备114正在经历的当前延迟与最长延迟55ms之间的差异。
45.如所图示的,在第四时间t4,第一客户端设备114(1)和第二客户端设备114(2)中的每个客户端设备都已经接收到对应的媒体流132和延迟播放指令134两者。因此,在第四时间t4,在接收到第二媒体流132(2)的初始部分时,第二客户端设备114(2)已经建立了视频内容的第二缓存器124(2)。此外,在第四时间t4,视频内容的第一缓存器124(1)比关于图1a所描述的第三时间t3相对更满(例如,包含相对更多字节的数据)。然而,在第四时间t4,第n客户端设备114(n)尚未接收到第n媒体流132(n)或第n延迟播放指令134(n)中的任一个。因此,如在图1b中所图示的,在该第四时间t4,第n客户端设备114(n)尚未开始缓存将在会议会话128期间共享的视频内容。因此,如在图1b中所图示的,在时间t4,第一客户端设备114(1)和第二客户端设备114(2)中的每个客户端设备都被示为在对应的通信模块116内已经将视频内容的媒体状态120设置为“暂停”(例如,以允许第n客户端设备114(n)接收第n媒体流132(n)的时间)。相反,在第四时间t4,第n客户端设备114(n)处的媒体状态保持为“空”,因为第n客户端设备114(n)尚未接收到对应的媒体流132和/或延迟播放指令132。
46.现在转向图1c,图示了第五时间t5,在该第五时间t5,第n客户端设备114(n)现在已经接收到第n媒体流132(n)和第n播放指令134(n)两者。继续第n延迟延时126(n)为0毫秒的示例,在接收到第n延迟播放指令134(n)时,第n客户端设备114(n)开始无延迟地播放视频内容(来自第n媒体流)。出于本示例的目的,假设在延迟数据108中指示并且用于确定延迟延时126的延迟值是准确的。因此,如果第五时间t5表示接收到第n延迟播放指令134(n)的时刻,那么第五时间t5也对应于从第一客户端设备114(1)接收到第一延迟播放指令134(1)时的43毫秒延迟和从第二客户端设备114(2)接收到第二延迟播放指令134(2)时的34毫秒延迟。
47.通过遵守在其各自的延迟播放指令134内指示的延迟延时126,使得第一客户端设备114(1)至第n客户端设备114(n)中的每个客户端设备在适当的回放位置122处在完全相同的时刻开始播放视频内容,尽管在不同的客户端设备114处经历不同的网络延迟。为了说明性地传达这一点,第一媒体状态120(1)至第n媒体状态120(n)中的每个媒体状态都被示为恰好在第五时间t5已经被切换为“播放”。因此,与如上文所描述的常规屏幕共享技术相比,正在播放视频内容的回放位置122跨所有客户端设备114是恒定的(而不是由于网络延
迟的变化而是不同步的)。此外,与这些常规的屏幕共享技术相比,在本文中所描述的技术不需要在被分派到其他客户端设备之前从共享者的客户端设备最初渲染和上传共享视频内容。因此,在共享视频内容的同时在会议会话128期间所利用的网络资源量显著减少。
48.现在转向图1d,图示了在个体客户端设备114处生成暂停指令136的示例性场景,以使得在通信会话128期间共享的视频内容的回放跨用于参与通信会话128的所有客户端设备114在完全相同的播放头位置122处暂停。在所图示的场景中,基于当视频内容在第二播放头位置122(2)处时在第n客户端设备114(n)处接收到的用户输入,最初在第六时间t6生成暂停指令136。出于本讨论的目的,假设第二播放头位置122(2)(例如,正在使用第n客户端设备114(n)的参与者暂停视频内容的位置)对应于视频内容的“帧100”。因此,在第六时间t6,第n媒体状态120(n)恰好在第二播放头位置122(2)处从“播放”切换到“暂停”。此外,在第六时间t6,第n客户端设备114(n)将暂停指令136传输到服务器设备102。将意识到,由于t6对应于从第n客户端设备114(n)发送暂停指令136的时刻但是在暂停指令136被中继到第一客户端设备114(1)或第n客户端设备114(n)中的任一个之前,在第六时间t6,视频内容仍将在第一客户端设备和第二客户端设备处播放。在一些实施例中,暂停指令136包括定义视频内容将跨客户端设备114共同暂停的特定播放头位置(例如,就播放头时间和/或帧而言)的数据。例如,如所图示的,暂停指令136定义视频内容在第六时间t6正在播放的第二播放头位置122(2)。
49.基于上文关于联网延迟的讨论,将意识到,在当第n客户端设备114(n)发送暂停指令136时与当其他客户端设备114接收暂停指令136时之间将发生一定时间量。此外,由于第一设备114(1)经历的联网延迟不同于第二设备114(2)经历的联网延迟,因此将进一步意识到,即使暂停指令136的实例在完全相同的时刻被传输给这些设备中的每个设备(例如,从服务器设备102),仍然可能在不同时间在第一客户端设备和第二客户端设备处接收暂停指令136的实例。例如,如所图示的,在第七时间t7,已经在第一客户端设备114(1)处接收到暂停指令136的实例,而在第二客户端设备114(2)处尚未接收到暂停指令136的另一实例。因此,在第七时间t7,视频内容的媒体状态120已经在第一客户端设备114(1)处被切换为“暂停”。此外,在第七时间t7,在第一客户端设备114(1)处的播放头位置已经从第三播放头位置122(3)(例如,视频内容的帧125)更新到第二播放头位置122(2),在第二播放头位置122(2)处,视频内容在第n客户端设备114(n)处被暂停。
50.然而,如所图示的,在第七时间t7,由于第二客户端设备114(2)尚未接收到暂停指令136的实例,因此第二客户端设备114(2)处的视频内容的媒体状态120保持为播放。因此,将意识到,甚至经过了第二客户端设备114(2)处的第三播放头位置122(3),视频内容也可以继续播放,至少直到接收到暂停指令136。然后,在接收到暂停指令136的实例时,视频内容将在第二客户端设备114(2)处暂停,并且播放头位置将被更新为第二播放头位置122(2)。因此,尽管存在网络延迟,但是一旦所有客户端设备114接收到暂停视频内容的指令和暂停视频内容的特定播放头位置的指示,则视频内容将跨所有客户端设备114在完全相同的播放头位置处同步地暂停。
51.当前公开的技术适用于在通信会话期间共享媒体内容同时补偿跨多个客户端设备的网络延迟的差异以使得跨多个客户端设备同步播放共享媒体内容的各种系统和方案。所公开技术的各方面主要在被托管在服务器设备102上的共享视频内容的上下文中进行描
述,服务器设备102被配置为促进在其期间共享视频内容的通信会话128。尽管当前公开的技术不一定限于该上下文,但是最好通过讨论该特定上下文中的示例来获得对当前公开的技术的各个方面的理解。然而,当前公开的技术也可以被部署在共享视频内容未被托管在促进通信会话128的相同服务器设备102上的场景中(例如,通过如上文所描述的生成和/或传输双向用户流)。例如,当前公开的技术也适用于视频内容(或者将在通信会话期间共享的任何其他类型的媒体内容)由第三方媒体托管服务提供商托管的场景,所述第三方媒体托管服务提供商诸如例如是youtube、vimeo和twitch。在这样的实现方式中,应当意识到,双向用户流127可以如上文所描述的由服务器设备102在多个客户端设备114之间传输,同时媒体流132由个体客户端设备114从与第三方媒体托管服务提供商相关联的其他服务器接收。
52.在一些实施例中,系统100可以使得与对媒体内容的回放相关联的回放模式能够跨客户端设备114在同步回放模式与异步回放模式之间切换。例如,由于媒体内容在个体客户端设备114处独立于双向用户流132从媒体流132接收到,因此能够意识到,媒体内容的精确回放位置可以在个体客户端设备114中的每个个体客户端设备处被独立地控制而不影响听到和/或看到在双向用户流中接收到的其他参与者的视频和/或音频的能力。例如,在第一客户端设备114(1)处参与通信会话的第一用户可以决定快进对媒体内容的回放,而在第二客户端设备114(1)处参与通信会话的第二用户可以决定以正常播放速度观看媒体内容。在这样的场景中,能够意识到,在第一客户端设备114(1)处的媒体内容的第一播放头位置122(1)可以变得连续更远于在第二客户端设备114(2)处的媒体内容的第二播放头位置122(2)之前(即,只要在第一客户端设备114(1)处的回放速度大于在第二客户端设备114(2)的)。如在本文中所使用的,术语“异步回放模式”可以用于指代可以在个体客户端设备处启用以使得媒体内容的个体回放位置能够在每个个体客户端设备处独立于在其他个体客户端设备处的媒体内容的回放位置而被控制的回放模式。如在本文中所使用的,术语“同步回放模式”可以用于指代可以在个体客户端设备处启用以跨多个客户端设备同步媒体内容的回放位置的回放模式。
53.作为在回放模式之间切换的示例性但非限制性场景,在通信会话128期间并且在共享媒体内容的同时,系统100可以接收与对媒体内容的回放相关联的第一回放模式命令,其中,第一回放模式命令指示系统100跨所有客户端设备将回放模式切换到异步回放模式。然后,响应于该第一回放模式命令,系统100可以将多个回放模式命令传输到多个客户端设备114,由此使得对媒体内容的回放的个体播放头位置能够在个体客户端设备中的每个个体客户端设备处独立地调整。例如,如上文所描述的,在第一设备114(1)处于异步回放模式时,第一客户端设备114(1)处的用户可以调整在该第一客户端设备处的播放头位置而不影响在第二客户端设备114(2)处的播放头位置。
54.然后,在个体客户端设备114在异步回放模式下操作的某个时间点,系统100可以接收与对媒体内容的回放相关联的第二回放模式命令,其中,第二回放模式命令指示系统100跨所有客户端设备将回放模式切换到同步回放模式。然后,响应于该第二回放模式命令,系统100可以将多个回放模式命令传输到多个客户端设备114,由此使得这些个体客户端设备114中的每个个体客户端设备将播放头位置更新到在所接收到的回放模式命令内指定的某个特定播放头位置。例如,第一设备114(1)可以用于生成同步回放模式命令,同时将
所有客户端设备处的播放头位置同步到第一客户端设备114(1)处的媒体内容的当前播放头位置。
55.所公开技术的各方面主要在基于用户输入而生成的播放指令的上下文中进行描述,所述用户输入是在用于参与通信会话的多个不同客户端设备中的个体客户端设备处接收的。例如,用户可以点击其客户端设备上的“播放按钮”来发起跨多个不同客户端设备对媒体内容的回放。基于这样的用户输入而生成的播放指令在本文中可以被称为用户播放指令。然而,这样的上下文仅仅用于例示说明目的,并且许多其他场景被设想到并且在本公开的范围之内。在另一示例性上下文中,跨多个客户端设备的媒体内容的回放可以由执行在本文中所描述的技术的一个或多个服务器设备发起或者以其他方式来控制。例如,诸如基于互联网的电视广播服务(例如,directtv now)的基于网络的广播服务可以在某些情况下激活具有如在本文中所描述的内置延迟控制和/或补偿的实况流送事件。因此,在本说明书和/或所附的权利要求中对“播放指令”的引用可以用作涵盖“(一个或多个)用户播放指令”以及其他类型的播放指令的通用术语,所述播放指令被生成以发起以其他方式控制对媒体内容的播放。类似地,对“暂停指令”的引用可以用作涵盖“(一个或多个)用户暂停指令”以及其他类型的暂停指令两者的通用术语。
56.图2图示了系统200促进在通信会话128期间对视频内容206的同步共享的替代场景。如所图示的,系统200包括一个或多个服务器设备102,其通过在多个客户端设备114之间传输多个双向用户流127来促进通信会话128。在图2中所示的双向用户流127可以类似于关于图1a至图1d所描述的那些。例如,在图2中所示的第一双向用户流127(1)可以对应于由被物理安装在第一客户端设备114(1)内的输入设备捕获的音频/视频数据的上传流以及还有包括由被物理安装在第二客户端设备和第n客户端设备两者内的(一个或多个)输入设备捕获的音频/视频数据的下载流的组合。
57.在所图示的场景中,定义通信会话128的各方面的会议数据104包括指向由视频托管服务204托管的视频内容206(例如,提供针对其的地址)的链接202。在一些实施例中,视频托管服务204可以是促进公开托管视频内容的第三方服务(例如,托管任何人都能够通过互联网访问的视频——没有限制)。另外地或替代地,视频托管服务204可以是促进私有地托管视频内容的服务(例如,使得仅有通信会话128的受邀者能够访问视频内容)。客户端设备114中的个体客户端设备可以利用链接202来访问来自视频托管服务204的视频内容206。例如,如在图2中所图示的,第一客户端设备114(1)至第n客户端设备114(n)中的每个客户端设备利用链接202与视频托管服务204建立通信,并且最终获得对应的媒体流132,通过媒体流132获得视频内容206。
58.在一些实施例中,诸如在图2中所示的实施例中,通信模块116可以在与视频内容206相关联地生成用户播放指令130之前缓存视频内容206(其最终将在通信会话128期间共享)。为了例示说明这一点,关于第一时间t1和第二时间t2描述图2的场景,其中,t1<t2。如所示的,在第一时间t1,客户端设备114中的每个客户端设备正在与服务器设备102传送各自的双向用户流127,以便促进通信会话128。如进一步示出的,在第一时间t1,客户端设备114中的每个客户端设备114正在从视频托管服务204接收相应的媒体流132以独立地维护视频内容206的缓存器124。
59.随后,在第二时间t2,在第一客户端设备114(1)处生成用户播放指令130并且将其
传送到服务器设备102。在接收到用户播放指令130时,服务器设备102可以将延迟播放指令134分派到客户端设备114中的个体客户端设备114,如关于图1b和图1c所描述的。例如,一个或多个服务器设备102可以为每个个体客户端设备114确定定制延迟延时值126。然后,一个或多个服务器设备102可以向每个客户端设备114分派延迟播放指令134,其包括确定出的针对该客户端设备114的定制延迟延时值126。如上文所描述的,在接收到延迟播放指令134时,客户端设备114中的每个客户端设备可以在等待由该客户端设备的定制延迟延时值126指示的延迟时间之后开始播放视频内容206。
60.因此,在一些实施例中,延迟播放指令134可以被同时分派到多个客户端设备114并且可以被配置为指示客户端设备114推迟播放视频内容206达一定时间量,所述时间量是基于在个体客户端设备114处经历的联网延迟来确定的。在图1a至图1d的示例性场景中描述了这样的实施例。替代地,服务器设备102可以基于由特定客户端设备114经历的联网延迟来错开延迟播放指令134被传输到每个特定客户端设备114的时间。例如,如果第一客户端设备正在经历小于第二客户端设备的10毫秒的联网延迟,则可以在第二延迟播放指令被分派到第二客户端设备之后10毫秒将第一延迟播放指令分派到第一客户端设备。然后,第一客户端设备和第二客户端设备中的每个客户端设备将在基本相同的时刻接收到其各自的延迟播放指令。在这样的实施例中,个体客户端设备可以在接收到其对应的延迟播放指令时没有延迟地开始播放视频内容。
61.图3a图示了系统300确定与用于参与通信会话128的个体客户端设备114相关联的延迟值的示例性场景。在所图示的实现方式中,延迟值在滚动的基础上被确定以在整个通信会话128中适应针对个体客户端设备114的网络延迟的变化。例如,针对每个个体客户端设备114的延迟值可以根据某个预定义的时间间隔(例如,两秒)来更新。基于该预定义的时间间隔,系统300可以周期性地“ping”个体客户端设备114以确定在个体客户端设备114处正在经历的当前网络延迟。系统300确定通信会话128期间的延迟值的示例性场景的各方面在图3a至图3d中关于第一时间t1到第四时间t4进行了描述,其中,t1《t2《t3《t4。
62.在第一时间t1,一个或多个服务器设备102通过在多个客户端设备114之间传输多个双向用户流127来促进通信会话128。以这种方式,系统300使得通信会话128的参与者能够经由彼此的实况音频/视频流进行交谈(例如,通信会话128可以是基于网络的视频会议)。如上文所描述的,系统300可以利用延迟数据108来使得在通信会话128期间共享的媒体内容跨所有客户端设备114同步地播放。应当意识到,针对每个个体客户端设备114具有准确和最新的延迟值对于这些目的可能是有用的。
63.关于在每个设备的基础上获得准确和最新的延迟值,系统300可以在通信会话128期间部署延迟监视器110以生成与客户端设备114中的个体客户端设备相关联的延迟数据108。例如,在通信会话128期间,延迟监视器110可以周期性地向个体客户端设备114发送ping 302。如在本文中所使用的,术语“ping”可以指代从源(例如,服务器设备102)传输到计算设备并且至少部分地从计算设备回传到所述源的信息的实例。延迟监控器110可以基于个体ping到达客户端设备114并且然后返回到一个或多个服务器设备102所花费的往返时间来计算与个体客户端设备114相关联的网络延迟。例如,假设这些个体往返时间的每一段在时间上相等,则与任意个体客户端设备114相关联的延迟值可以被假设为所测量的往返时间的一半。
64.出于本讨论的目的,假设稍早于第一时间t1,第一ping 302(1)至第n ping 302(n)分别被分派给第一客户端设备114(1)至第n客户端设备114(n)。然后,如在图3a中所图示的,第一ping 302(1)被第一客户端设备114(1)在第一时间t1回传给服务器设备102并且由服务器设备102接收。基于该第一ping 302(1)的往返时间,延迟监视器110确定影响第一客户端设备114(1)的当前网络延迟。出于本讨论的目的,假设针对第一ping 302(1)的往返时间为24毫秒。进一步假设延迟监控器110被编程为假设ping 302通过一个或多个网络从服务器设备102行进到个体客户端设备114所花费的时间量等于ping 302通过一个或多个网络从个体客户端设备114返回到服务器设备102所花费的时间量。换言之,延迟监视器110可以假设往返时间的每一段在时间上是相等的。因此,如在图3a中所图示的,延迟监视器110更新延迟数据108以定义针对第一客户端设备114(1)的延迟值为12毫秒。
65.在第一时间t1,第二ping 302(2)和第n ping 302(n)都没有完成其相应的回到服务器设备102的往返。出于该原因,如在图3a中所图示的,在第一时间t1,关于第二客户端设备114(2)和第n客户端设备114(n)的延迟测试仍然在进行中。
66.现在转向图3b,系统300确定与个体客户端设备114相关联的延迟值的示例性场景在第二时间t2被示出,第二时间t2对应于完成回到服务器设备102的往返的第二ping 302(2)。基于该第二ping 302(2)的往返时间,延迟监视器110确定影响第二客户端设备114(2)的当前网络延迟。出于本讨论的目的,假设第二ping 302(2)的往返时间是42毫秒。因此,如在图3b中所图示的,响应于在第二时间t2返回的第二ping 302(2),延迟监视器110更新延迟数据108以定义针对第二客户端设备114(2)的延迟值为21毫秒。
67.在第二时间t2,第n ping 302(n)尚未完成其回到服务器设备102的往返。出于该原因,如在图3b中所图示的,在第二时间t2,延迟测试仍然关于第n客户端设备114(n)正在进行中。
68.现在转向图3c,系统300确定与个体客户端设备114相关联的延迟值的示例性场景在第三时间t3示出,第三时间t3对应于完成回到服务器设备102的往返的第n ping 302(n)。基于该第n ping302(n)的往返时间,延迟监视器110确定影响第n客户端设备114(n)的当前网络延迟。出于本讨论的目的,假设针对第n ping 302(n)的往返时间是110毫秒。因此,如在图3c中所图示的,响应于在第三时间t3返回的第n ping 302(n),延迟监视器110更新延迟数据108以定义针对第n客户端设备114(n)的延迟值为55毫秒。
69.在一些实现方式中,系统300可以被配置为在滚动的基础上生成延迟数据108,使得针对个体客户端设备114的延迟值在通信会话128期间被连续地更新。例如,系统300可以被配置为周期性地ping个体客户端设备114,并且在这些周期性地传输的ping 302被回传到服务器设备102时更新与个体客户端设备114相关联的延迟值。例如,如在图3d中所示的,在第四时间t4,在初始组的ping 302已经被发送并且回传到服务器设备102之后,第二组的ping 304被分派到第一至第n客户端设备114。如所图示的,在第四时间t4,尚没有个体304完成其回到服务器设备102的相应往返,并且因此,关于该第二组ping 304的测试仍然在进行中。稍后,随着这些ping 304中的个体ping完成其相应的往返,延迟数据108可以被不断地更新。
70.现在转向图4a,图示了当第一客户端设备114(1)和第二客户端设备114(2)在异步回放模式下操作时可以被同时地显示在那些设备上的两个示例性图形用户界面。如所图示
的,第一客户端设备114(1)正在从服务器设备102接收第一媒体流132(1)并且第二客户端设备114(2)正在从服务器设备102接收第二媒体流132(2)。在此,第一客户端设备114(1)和第二客户端设备114(2)分别利用第一媒体流132(1)和第二媒体流132(2)来渲染媒体内容402,诸如mp4视频。如进一步所图示的,第一客户端设备114(1)正在从服务器设备102接收第一双向用户流127(1),并且第二客户端设备114(2)正在从服务器设备102接收第二双向用户流127(2)。在此,第一客户端设备114(1)和第二客户端设备114(2)正在分别利用第一双向用户流127(1)和第二双向用户流127(2)来渲染通信会话128的一个或多个其他参与者的实况视频404(例如,经由客户端设备114处的输入设备捕获的音频和/或视频内容)。
71.如在图4a中所图示的,独立于双向用户流132接收到的媒体内容使得第一客户端设备132(1)和第二客户端设备114(1)能够独立于彼此来调整媒体内容的回放位置,同时仍然渲染在通信会话128期间接收到的实况视频和/或音频。例如,在第一客户端设备114(1)处参与通信会话的第一用户已经将回放位置调整为5分34秒,而在第二客户端设备114(2)处参与通信会话的第二用户已经将回放位置调整为15分44秒。如在本文中所使用的,术语“异步回放模式”可以用于指代在个体客户端设备处启用以使得媒体内容的个体回放位置能够在每个个体客户端设备处独立于在其他个体客户端设备处的媒体内容的播放头位置而被控制的回放模式。
72.现在转向图4b,图示了在第一客户端设备114(1)和第二客户端设备114(2)已经从异步回放模式切换到同步回放模式之后可以同时显示在那些设备上的两个示例性图形用户界面。例如,在通信会话128期间并且当客户端设备114在如关于图4a所描述的异步回放模式下操作时,操作第一客户端设备114(1)的用户可以向该第一客户端设备114(1)提供用户输入以使得所有(或者其子集)其他客户端设备114(1)从异步回放模式切换到同步回放模式。作为该用户输入的结果,系统100可以将个体回放模式命令传输到个体客户端设备,由此使得这些个体客户端设备114中的每个个体客户端设备将播放头位置更新为在接收到的回放模式命令内指定的某个特定播放头位置。例如,第一设备114(1)可以用于生成同步回放模式命令,同时将所有客户端设备处的播放头位置同步到第一客户端设备114(1)处媒体内容的当前播放头位置。在具体示出但非限制性的示例中,响应于在第一客户端设备114(1)处接收到的用户输入,第二客户端设备114(2)处的回放位置被对齐到(例如,同步于)在第一客户端设备114(1)处的当前回放位置(即,5分34秒)。如在本文中所使用的,术语“同步回放模式”可以用于指代在个体客户端设备处启用以跨多个客户端设备同步媒体内容的回放位置的回放模式。
73.在一些实现方式中,用于控制跨所有客户端设备114对媒体内容的回放的各方面的用户权利或许可可以被限制到具有主控制状态的特定客户端设备114。例如,如在图4b中所图示的,第一客户端设备114(1)正在显示该设备当前对于媒体内容的回放具有“主控制状态”的指示,而第二客户端设备114(2)正在显示该设备当前具有“从属控制状态”的指示。在一些实施例中,允许具有关于媒体内容的主控制状态的特定客户端设备在图4b中所示的同步回放模式与在图4a中所示的异步回放模式之间切换多个客户端设备的回放模式。因此,当前具有赋予主控制状态的用户许可的通信会话的参与者能够允许或者限制通信会话的其他参与者独立地控制媒体内容在其相应客户端设备处的回放位置。例如,具有主控制状态的参与者可以将回放模式切换到异步回放模式,以便所有参与者能够独立地控制其自
己的媒体回放。然后,当他或她认为合适时,具有主控制状态的参与者能够将回放模式切换回同步回放模式,以使得跨所有客户端设备的回放位置与在特定“主用户”参与者的客户端设备处当前正在播放的特定播放头位置同步。
74.此外,在一些实施例中,在本文中所描述的系统和技术可以促进在客户端设备中的个体客户端设备之间传递主控制状态。例如,如在图4b中所图示的,第一客户端设备114(1)正在显示用户控件或按钮,其状态为“传递控制(pass-off contron)”,而第二客户端设备114(2)正在显示用户控件或按钮,其状态为“请求控制”。在此,通过选择传递控制按钮(并且然后选择一个或多个特定参与者),当前具有主控制状态的参与者能够根据需要将该状态传递给某个其他参与者。关于这一点,图4c示出了示例性图形用户界面,其可以在主控制状态从第一客户端设备传递到第二客户端设备之后在第一客户端设备上同时显示给第二客户端设备。
75.图4d示出了可以在两个不同的客户端设备上同时显示的示例性图形用户界面,其中,所述设备中的一个设备在自主排队状态下操作。具体而言,在所图示的场景中,第一客户端设备114(1)正在主控制状态下操作并且已经选择了同步回放模式。因此,如上文所描述的,除了第一设备114(1)之外,在从属控制状态下操作的客户端设备可以使得渲染当前在第一设备114(1)处渲染的任何播放头位置。能够意识到,在许多情况下,可能需要对各种播放头位置排队(例如,加书签)以使得第一设备114(1)(或者在主控制状态下操作的任何设备)的用户能够快速地调整播放头位置,而无需手动地滚动(例如,拖动)播放头位置指示符。然而,也可能存在参与者可能希望跳到针对其不存在队列或书签的播放头位置的情况。
76.在这样的情况下,未在主控制状态下操作的第二设备114(2)可以被赋予自主排队状态,以使得第二设备114(2)的用户能够独立于其他设备来调整他或她的播放头位置——即使一些其他设备正在从属控制状态和同步回放模式下操作。然后,第二设备114(2)的用户能够将播放头位置移动到某个期望点,并且将该当前位置发送给第一设备114(1)处的队列。例如,如所图示的,第二设备114(2)在11:50渲染播放头位置,即使第一设备114(1)正在使得以从属控制状态操作的其他设备渲染某个其他较早的播放头位置。如进一步例示说明的,由于第二设备114(2)的用户将11:50的播放头位置添加到在主控制状态下操作的任何设备的队列中,因此书签指示符(例如,其在非限制性场景所图示是星形的)连同“chris已经将播放头位置排队在11:50”的消息在11:50的播放头位置处变得可见。在第一设备114(1)的用户选择书签指示符时,用于参与会议会话的其他设备可以立即同步到该位置。以这种方式,通信会话的一个或多个参与者可以在第二设备114(2)上的后台工作以手动地滚动视频内容并且即时生成能由第一设备114(1)的用户动作的书签。
77.现在转向图5,示出了用于执行延迟补偿技术以促进在通信会话期间跨多个客户端设备对视频内容的同步共享的示例性过程500的流程图。本领域普通技术人员应当理解,在本文中所公开的方法的操作不必以任何特定次序呈现,并且以(一种或多种)替代次序执行一些或所有操作是可能的并且被设想到。为了便于描述和图示,操作已经按演示次序呈现。在不背离所附权利要求的范围的情况下,可以添加、省略、一起执行和/或同时执行操作。
78.也应当理解,所图示的方法能够在任何时间结束并且不需要全部执行。能够通过运行被包含在计算机存储介质上的计算机可读指令来执行所述方法的一些或所有操作和/
或基本上等效的操作,如在本文中所定义的。如在说明书和权利要求中所使用的术语“计算机可读指令”以及其变体在本文中被宽泛地使用以包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。计算机可读指令能够在各种系统配置上实现,包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持计算设备、基于微处理器的可编程消费者电子产品、其组合等。
79.因此,应当意识到,在本文中所描述的逻辑操作被实现为:(1)在诸如在本文中所描述的那些计算系统上运行的计算机实现的动作或程序模块的序列;和/或(2)在计算系统内的互连的机器逻辑电路或电路模块。实现方式是取决于计算系统的性能和其他要求的选择问题。因此,逻辑操作可以用软件、固件、专用数字逻辑以及其任意组合来实现。
80.在例程500的操作502处,系统在多个客户端设备114之间传输多个双向用户流127以促进通信会话128。例如,多个客户端设备114中的每个客户端设备可以经由各种输入设备(诸如相机和麦克风)捕获(例如,用户的)音频和视频“a/v”数据。所捕获的a/v数据可以被连续流送到一个或多个服务器设备102。在从客户端设备接收到a/v数据流时,服务器设备102可以向每个个体客户端设备114传输从每个其他客户端设备114接收到的a/v数据流。以这种方式,使得每个个体客户端设备114能够利用其他客户端设备114渲染参与者的实况视频404,由此促进通信会话128作为一种类型的虚拟会议或基于网络的会议。例如,如在图4a和图4b中所图示的,第一客户端设备114(1)和第二客户端设备114(2)中的每个客户端设备都渲染通信会话128的其他参与者的实况视频404的流。
81.在操作504处,所述系统获得媒体数据,所述媒体数据定义将在通信会话128期间跨客户端设备同时播放的媒体内容。例如,在通信会话128期间的某点处,在客户端设备114正在渲染实况视频404或者简单地在其他参与者的客户端设备114处捕获的音频流时,诸如由服务器设备102托管的视频之类的媒体内容可以被流送到客户端设备114并且在客户端设备114处显示。
82.在操作506处,所述系统确定延迟数据,所述延迟数据定义了针对客户端设备中的个体客户端设备的定制延迟值。具体而言,所述延迟数据定义了与将信息传输到个体客户端设备相关联的个体延迟值。例如,针对特定客户端设备的延迟值54毫秒指示针对被发送到该特定客户端设备的信息将需要54毫秒跨一个或多个网络传输并且最终到达该特定客户端设备。
83.在一些实施例中,确定针对客户端设备中的个体客户端设备的延迟值包括周期性地ping个体客户端设备并且测量将ping从接收设备返回到(例如,回传到)发送设备所花费的时间量。例如,如关于图3a至图3b所描述的,所述系统可以通过部署延迟监视器110来确定基于每个设备的准确和最新的延迟值,延迟监视器110基于个体ping到达客户端设备并且随后返回到一个或多个服务器设备的往返时间来计算与个体客户端设备相关联的网络延迟。例如,假设这些个体往返时间的每一段在时间上相等,与任何个体客户端设备114相关联的延迟值可以被假设为所测量的往返时间的一半。
84.在一些实施例中,延迟监控器110可以基于被存储在后进先出(lifo)数据库中的延迟值序列重复计算和重新计算针对个体客户端设备的延迟值。例如,延迟监视器110可以被配置为根据一些预定义的间隔(诸如,例如1秒、2秒或者任何其他合适的时间间隔)周期性地向个体客户端设备传输ping。然后,随着个体客户端设备将ping回传到延迟监视器
110,可以将最近计算出的延迟值添加到lifo数据库,而可以删除最旧的值。以这种方式,lifo数据库可用于维护延迟值的样本,所述样本由于具有合适的大小(例如,5个值、10个值等)而都具有统计相关性,同时由于最近被计算出而具有时间相关性,即,不陈旧。在其中利用针对个体客户端设备的最近一组延迟值来维护lifo数据库的实施例中,如上文所描述的用于确定适当延迟延时的当前延迟值可以是在lifo数据库内维护的那些延迟值的动态滚动平均值。
85.在一些实施例中,延迟监视器110部署机器学习引擎112来执行模式识别技术以确定当前延迟值,所述当前延迟值说明了为针对任意特定客户端设备而确定的延迟值内的趋势。例如,在针对个体客户端设备的最近一组延迟值揭示增加或减少延迟的趋势的情况下,则机器学习引擎112可以分别向上或向下调整动态滚动平均值,以说明所识别出的趋势。作为另一示例,机器学习引擎112可以针对个体客户端设备执行浏览器嗅探操作以识别正在用于渲染媒体内容的特定网络浏览器。然后,为了说明关于不同类型的网络浏览器能够多快地渲染媒体内容的延迟的变化,机器学习引擎112可以调整当前延迟值的动态滚动平均值。
86.在操作508处,所述系统接收基于在特定客户端设备114处接收到的用户输入而生成的用户播放指令,用于跨多个客户端设备114发起对媒体内容的回放。例如,在特定客户端设备处的用户可以选择与会议数据104相关联地存储的媒体数据106以使得媒体内容开始在特定客户端设备处播放。然后,在提供用户输入以使得所有其他客户端设备在期望的播放头位置处开始对媒体内容的回放之前,用户可以将特定客户端设备处的媒体内容的播放头位置调整到期望的播放头位置。在一些实施例中,所述用户播放指令可以包括媒体内容将跨所有客户端设备114开始同步播放的期望播放头位置的指示。
87.在操作510处,响应于所述用户播放指令,所述系统基于延迟数据向客户端设备传输延迟播放指令。如上文所描述的,延迟播放指令被传输到客户端设备的方式可以在客户端设备的某个子集上规定有意的延迟延时,以使得对媒体数据的回放跨多个客户端设备同步地开始。例如,个体延迟播放指令可以包括延迟延时值,所述延迟延时值规定个体客户端设备在接收到对应的延迟播放指令之后、在发起对经由媒体流获得的媒体内容的回放之前要等待的时间量。
88.应当意识到,上文所描述的主题可以被实现为计算机控制的装置、计算机进程、计算系统,或者被实现为诸如计算机可读存储介质的制品。示例性方法的操作在个体框中示出并且参考那些框进行总结。所述方法被图示为框的逻辑流,其中的每个框能够表示能够在硬件、软件或者其组合中实现的一个或多个操作。在软件的上下文中,所述操作表示被存储在一个或多个计算机可读介质上的计算机可执行指令,所述计算机可执行指令当由一个或多个处理器运行时,使得所述一个或多个处理器能够执行所记述的操作。
89.通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、组件、数据结构等。描述操作的次序并不旨在被解释为限制,并且任意数量的所描述的操作能够以任意次序运行、以任意次序组合、细分为多个子操作和/或并行运行以实现所描述的过程。所描述的过程能够由与一个或多个设备相关联的资源来执行,所述资源诸如是一个或多个内部或外部cpu或gpu,和/或一个或多个硬件逻辑单元,诸如现场可编程门阵列(“fpga”)、数字信号处理器(“dsp”)或者其他类型的加速器。
90.上文所描述的所有方法和过程都可以被体现在由一个或多个通用计算机或处理器运行的软件代码模块中,并且尤其完全自动化。代码模块可以被存储在任何类型的计算机可读存储介质或者其他计算机存储设备中,诸如下文所描述的那些。一些或所有方法可以替代地被体现在专用计算机硬件中,诸如下文所描述的那些。
91.在本文中所描述和/或在附图中所描绘的流程图中的任何例程描述、元件或块应当被理解为潜在地表示包括用于实现例程中的特定逻辑功能或元件的一个或多个可执行指令的模块、段或代码部分。替代实现方式被包含在本文中所描述的示例的范围之内,其中,元件或功能可以被删除,或者与所示或所讨论的次序以外的次序运行,包括基本上同步地或者以相反的次序运行,这取决于所涉及的功能,如本领域技术人员将理解的。
92.图6是图示了系统602能够在其中实施在本文中所公开的技术的示例性环境600的图。在一些实现方式中,系统602可以用于收集、分析和共享定义一个或多个对象的数据,这些对象被显示给通信会话604的用户。
93.如所图示的,通信会话604可以在与系统602相关联或者作为其一部分的多个客户端计算设备606(1)至606(n)(其中,n是值为二或更大的数字)之间实现。客户端计算设备606(1)至606(n)使得用户(也被称为个体)能够参与通信会话604。
94.在该示例中,通信会话604在一个或多个网络608上由系统602托管。亦即,系统602能够提供使得客户端计算设备606(1)至606(n)的用户能够参与通信会话604(例如,经由实况观看和/或记录的观看)的服务。因此,通信会话604的“参与者”能够包括用户和/或客户端计算设备(例如,多个用户可以在房间中经由使用单个客户端计算设备参与通信会话),其中的每个能够与其他参与者进行通信。作为替代,通信会话604能够由利用对等技术的客户端计算设备606(1)至606(n)中的一个客户端计算设备来托管。系统602也能够托管聊天对话和其他团队协作功能(例如,作为应用套件的一部分)。
95.在一些实现方式中,这样的聊天对话和其他团队协作功能被认为是与通信会话604不同的外部通信会话。在通信会话604中收集参与者数据的计算系统602能够链接到这样的外部通信会话。因此,所述系统可以接收使得能够连接到这样的外部通信会话的信息,诸如日期、时间、会话细节等。在一个示例中,能够根据通信会话604进行聊天对话。另外,系统602可以托管通信会话604,通信会话604至少包括多个共同位于会议地点(诸如会议室或礼堂)处或者位于不同位置的参与者。
96.在本文中所描述的示例中,参与通信会话604的客户端计算设备606(1)至606(n)被配置为接收和渲染通信数据以供在显示屏的用户界面上显示。所述通信数据能够包括实况内容和/或记录的内容的各种实例或流的集合。实况内容和/或记录的内容的各种实例或流的集合可以由诸如视频相机的一个或多个相机提供。例如,实况或记录的内容的个体流能够包括与由视频相机提供的视频馈送相关联的用户数据(例如,捕获参与通信会话的用户的外观和语音的音频和视觉数据)。在一些实现方式中,所述视频馈送可以包括这样的音频和视觉数据、一幅或多幅静止图像和/或一个或多个化身。所述一幅或多幅静止图像也可以包括一个或多个化身。
97.实况或记录的内容的个体流的另一示例能够包括用户数据,所述用户数据包括参与通信会话的用户的化身以及捕获用户的语音的音频数据。实况或记录的内容的个体流的又一示例能够包括用户流数据,所述用户流数据包括被显示在显示屏上的文件以及捕获用
户语音的音频数据。因此,在通信数据内的实况或记录的内容的各种流使得能够促进在一组人之间的远程会议以及在该组人内共享内容。在一些实现方式中,在通信数据内的实况或记录的内容的各种流可以源自位于空间(诸如房间)中的多个共同定位的视频相机,以实况记录或流送包括呈现内容的一个或多个个体和消费呈现内容的一个或多个个体的演示。
98.参与者或出席者能够在活动发生时实况查看通信会话604的内容,或者替代地,在活动发生之后的稍后时间经由记录来查看。在本文中所描述的示例中,参与通信会话604的客户端计算设备606(1)至606(n)被配置为接收和渲染通信数据以供在显示屏的用户界面上显示。所述通信数据能够包括实况和/或记录的内容的各种实例或流的集合。例如,内容的个体流能够包括与视频馈送相关联的用户流数据(例如,捕获参与通信会话的用户的外观和语音的音频和视觉数据)。内容的个体流的另一示例能够包括用户流数据,所述用户流数据包括参与会议会话的用户的化身以及捕获用户的语音的音频数据。内容的个体流的又一示例能够包括用户流数据,所述用户流数据包括被显示在显示屏上的内容项和/或捕获用户语音的音频数据。因此,在通信数据内的内容的各种流使得能够在跨远程位置分散的一组人之间促进会议或广播演示。
99.通信会话的参与者或出席者是在相机或者其他图像和/或音频捕获设备的范围内的人,使得人在观看和/或收听经由通信会话共享的内容时产生的该人的动作和/或声音能够被捕获(例如,记录)。例如,参与者可能正坐在人群中,在发生舞台演示的广播位置处观看共享内容。或者,参与者可能正坐在办公室会议室中,经由显示屏查看与其他同事的通信会话的共享内容。更进一步地,参与者可能坐在或站在个人设备(例如,平板计算机、智能电话、计算机等)前,在其办公室或家中单独查看通信会话的共享内容。
100.图6的系统602包括(一个或多个)设备610。(一个或多个)设备610和/或系统602的其他组件能够包括经由一个或多个网络608彼此通信和/或与客户端计算设备606(1)至606(n)通信的分布式计算资源。在一些示例中,系统602可以是独立系统,其任务是管理一个或多个通信会话(诸如通信会话604)的各方面。作为示例,系统602可以由诸如slack、webex、gotomeeting、google hangouts等实体来管理。
101.(一个或多个)网络608可以包括例如诸如互联网的公共网络、诸如机构和/或个人内联网的私有网络,或者私有和公共网络的某种组合。(一个或多个)网络608也可以包括任何类型的有线和/或无线网络,包括但不限于:局域网(“lan”)、广域网(“wan”)、卫星网络、有线网络、wi-fi网络、wimax网络、移动通信网络(例如,3g、4g等)或者其任意组合。(一个或多个)网络608可以利用通信协议,包括基于分组和/或基于数据报的协议,诸如互联网协议(“ip”)、传输控制协议(“tcp”)、用户数据报协议(“udp”)或者其他类型的协议。此外,(一个或多个)网络608也可以包括促进网络通信和/或形成用于网络的硬件基础的多个设备,诸如交换机、路由器、网关、接入点、防火墙、基站、中继器、骨干设备等。
102.在一些示例中,(一个或多个)网络608还可以包括使得能够连接到无线网络的设备,诸如无线接入点(“wap”)。示例支持通过在各种电磁频率(例如,射频)上发送和接收数据的wap的连接,包括支持电气和电子工程师协会(“ieee”)802.7标准(例如,802.7g、802.7n、802.7ac等)和其他标准的wap。
103.在各种示例中,(一个或多个)设备610可以包括一个或多个计算设备,其在集群或者其他分组配置中操作以共享资源、平衡负载、提高性能、提供故障转移支持或冗余,或者
用于其他目的。例如,(一个或多个)设备610可以属于各种设备类别,诸如常规服务器型设备、台式计算机型设备和/或移动型设备。因此,尽管被图示为单一类型的设备或服务器类型的设备,但是(一个或多个)设备610可以包括多种设备类型并且不限于特定类型的设备。(一个或多个)设备610可以表示但不限于:服务器计算机、台式计算机、网络服务器计算机、个人计算机、移动计算机、膝上型计算机、平板计算机或者任何其他类型的计算设备。
104.客户端计算设备(例如,客户端计算设备606(1)至606(n)中的一个客户端计算设备)(其中的每个在本文中也被称为“数据处理系统”)可以属于多种类别的设备,其可以与(一个或多个)设备610相同或不同,诸如常规的客户端型设备、台式计算机型设备、移动型设备、专用型设备、嵌入式设备和/或可穿戴设备。因此,客户端计算设备能够包括但不限于:台式计算机、游戏控制台和/或游戏设备、平板计算机、个人数据助理(“pda”)、移动电话/平板混合器、膝上型计算机、电信设备、计算机导航型客户端计算设备(诸如基于卫星的导航系统,包括全球定位系统(“gps”)设备)、可穿戴设备、虚拟现实(“vr”)设备、增强现实(“ar”)设备、植入式计算设备、汽车计算机、支持网络的电视、瘦客户端、终端、物联网(“iot”)设备、工作站、媒体播放器、个人录像机(“pvr”)、机顶盒、相机、被包含在计算设备中的集成组件(例如,外围设备)、电器或者任何其他类型的计算设备。此外,客户端计算设备可以包括早前列出的客户端计算设备的示例的组合,诸如,例如台式计算机型设备或者与可穿戴设备组合的移动型设备等。
105.各种类别和设备类型的客户端计算设备606(1)至606(n)能够表示具有诸如经由总线616可操作地连接到计算机可读介质694的一个或多个数据处理单元692的任意类型的计算设备,在一些情况下,总线616能够包括系统总线、数据总线、地址总线、pci总线、mini-pci总线以及任意多种本地、外围和/或独立总线中的一种或多种。
106.被存储在计算机可读介质694上的可执行指令可以包括例如操作系统619、通信模块620、简档模块622以及能由数据处理单元692加载和运行的其他模块、程序或应用。
107.客户端计算设备606(1)至606(n)也可以包括一个或多个接口624以实现通过(一个或多个)网络608在客户端计算设备606(1)至606(n)与其他联网设备(例如设备610)之间的通信。这样的(一个或多个)网络接口624可以包括一个或多个网络接口控制器(nic)或者其他类型的收发器设备以通过网络发送和接收通信和/或数据。此外,(一个或多个)客户端计算设备606(1)至606(n)能够包括输入/输出(“i/o”)接口(设备)626,其支持与输入/输出设备进行通信,所述输入/输出设备诸如是包括外围输入设备(例如,游戏控制器、键盘、鼠标、笔、诸如麦克风的语音输入设备、用于获得和提供视频馈送和/或静止图像的视频相机、触摸输入设备、手势输入设备等)的用户输入设备和/或包括外围输出设备(例如,显示器、打印机、音频扬声器、触觉输出设备等)的输出设备。图6图示了客户端计算设备606(1)以某种方式被连接到显示设备(例如,显示屏629(n)),所述显示设备能够根据在本文中所描述的技术来显示ui。
108.在图6的示例性环境600中,客户端计算设备606(1)至606(n)可以使用其各自的客户端模块620来相互连接和/或与(一个或多个)其他外部设备连接以便参与通信会话604,或者以便向协作环境贡献活动。例如,第一用户可以利用客户端计算设备606(1)与另一客户端计算设备606(2)的第二用户通信。当运行客户端模块620时,用户可以共享数据,这可以使得客户端计算设备606(1)通过(一个或多个)网络608连接到系统602和/或者其他客户
端计算设备606(2)至606(n)。
109.(一个或多个)客户端计算设备606(1)至606(n)可以使用其各自的简档模块622来生成参与者简档(在图6中未示出),并且将参与者简档提供给其他客户端计算设备和/或提供给系统602的(一个或多个)设备610。参与者简档可以包括以下中的一项或多项:用户或一组用户的身份(例如,名称、独有标识符(“id”)等)、用户数据(诸如个人数据)、机器数据(诸如位置(例如,ip地址、建筑物中的房间等))以及技术能力等。参与者简档可以被用于注册参与者以进行通信会话。
110.如在图6中所示的,系统602的(一个或多个)设备610包括服务器模块630和输出模块632。在该示例中,服务器模块630被配置为从个体客户端计算设备(诸如客户端计算设备606(1)至606(n))接收媒体流634(1)至634(n)。如上文所描述的,媒体流能够包括视频馈送(例如,与用户相关联的音频和视频数据)、要与用户的化身的呈现一起输出的音频数据(例如,其中未传输用户的视频数据的纯音频体验)、文本数据(例如,文本消息)、文件数据和/或屏幕共享数据(例如,显示屏幕上显示的文档、幻灯片、图像、视频等),等等。因此,服务器模块630被配置为在通信会话604的实况查看期间接收各种媒体流634(1)至634(n)的集合(所述集合在本文中被称为“用户a/v数据634”)。在一些场景中,并非参与通信会话604的所有客户端计算设备都提供媒体流。例如,客户端计算设备可能仅仅是消费或“收听”设备,从而其仅仅接收与通信会话604相关联的内容,但是不向通信会话604提供任何内容。
111.在各种示例中,服务器模块630能够选择要与参与客户端计算设备606(1)至606(n)中的个体客户端计算设备共享的流634的各方面。因此,服务器模块630可以被配置为基于流634生成会话数据636和/或将会话数据636传递到输出模块632。然后,输出模块632可以将通信数据639传送到客户端计算设备(例如,参与通信会话的实时查看的客户端计算设备606(1)至606(3))。通信数据639可以包括由输出模块632基于与输出模块632相关联的内容650和基于所接收到的会话数据636提供的视频、音频和/或者其他内容数据。
112.如所示的,输出模块632向客户端计算设备606(1)传输通信数据639(1),并且向客户端计算设备606(2)传输通信数据639(2),并且向客户端计算设备606(3)传输通信数据639(3),等等。被传输到客户端计算设备的通信数据639能够相同或不同(例如,对用户界面内的内容流的定位可以从一个设备到下一设备而不同)。
113.在各种实现方式中,(一个或多个)设备610和/或通信模块620能够包括gui呈现模块640。gui呈现模块640可以被配置为分析用于递送给客户端计算设备606中的一个或多个客户端计算设备的通信数据639。具体而言,在(一个或多个)设备610和/或客户端计算设备606处的ui呈现模块640可以分析通信数据639以确定用于在相关联的客户端计算设备606的显示屏629上显示视频、图像和/或内容的适当方式。在一些实现方式中,gui呈现模块640可以向在相关联的客户端计算设备606的显示屏629上渲染的呈现gui 646提供视频、图像和/或内容。gui呈现模块640可以使得由gui呈现模块640在显示屏629上渲染。呈现gui 646可以包括由gui呈现模块640分析的视频、图像和/或内容。
114.在一些实现方式中,呈现gui 640可以包括多个部分或网格,其可以渲染或者包括视频、图像和/或内容以用于在显示屏629上显示。例如,呈现gui 646的第一部分可以包括呈现者或个体的视频馈送,呈现gui 640的第二部分可以包括消费由呈现者或个体提供的会议信息的个体的视频馈送。gui呈现模块640可以以适当地模仿呈现者和个体可能正在共
享的环境体验的方式填充呈现gui646的第一部分和第二部分。
115.在一些实现方式中,gui呈现模块640可以放大或者提供由视频馈送表示的个体的缩放视图,以便突出个体对呈现者的反应,诸如面部特征。在一些实现方式中,呈现gui 640可以包括与会议相关联的多个参与者的视频馈送,诸如一般通信会话。在其他实现方式中,呈现gui 640可以与诸如聊天信道、企业团队信道等的信道相关联。因此,呈现gui 640可以与不同于一般通信会话的外部通信会话相关联。
116.图7图示了示出示例性设备700(在本文中也被称为“计算设备”)的示例性组件的图,设备700被配置为生成用于在本文中所公开的一些用户界面的数据。设备700可以生成包括一个或多个部分的数据,所述部分可以渲染或包括视频、图像、虚拟对象和/或用于在显示屏上显示的内容。设备700可以辨识在本文中所描述的(一个或多个)设备中的一个设备。另外地或替代地,设备700可以表示客户端计算设备1106中的一个客户端计算设备。
117.如所图示的,设备700包括一个或多个数据处理单元702、计算机可读介质704和(一个或多个)通信接口706。设备700的组件例如经由总线709可操作的连接,总线709可以包括以下中的一种或多种:系统总线、数据总线、地址总线、pci总线、mini-pci总线以及任意多种本地、外围和/或独立总线。
118.如在本文中所使用的,(一个或多个)数据处理单元(诸如(一个或多个)数据处理单元702和/或(一个或多个)数据处理单元1192)可以表示例如cpu型数据处理单元、gpu型数据处理单元、现场可编程门阵列(“fpga”)、另一类dsp或者在一些情况下可以由cpu驱动的其他硬件逻辑组件。例如但不限于:可以利用的说明类型的硬件逻辑组件包括专用集成电路(“asic”)、专用标准产品(“assp”)、片上系统(“soc”)、复杂可编程逻辑设备(“cpld”)等。
119.如在本文中所利用的,计算机可读介质(诸如计算机可读介质704和计算机可读介质1194)可以存储能由(一个或多个)数据处理单元运行的指令。计算机可读介质也可以存储能由外部数据处理单元(例如,由外部cpu、外部gpu)和/或能由外部加速器(例如,fpga类型加速器、dsp类型加速器或者任何其他内部或外部加速器)运行的指令。在各种示例中,至少一个cpu、gpu和/或加速器被并入在计算设备中,而在一些示例中,cpu、gpu和/或加速器中的一个或多个在计算设备外部。
120.计算机可读介质(其在本文中也可以被称为计算机可读介质)可以包括计算机存储介质和/或通信介质。计算机存储介质可以包括以下一种或多种:易失性存储器、非易失性存储器和/或者其他持久性和/或辅助计算机存储介质、可移动和不可移动计算机存储介质,其以用于存储诸如计算机可读指令、数据结构、程序模块或者其他数据的信息的任意方法或技术来实现。因此,计算机存储介质包括有形和/或物理形式的介质,其包含在设备中和/或作为设备的一部分或在设备外部的硬件组件中,包括但不限于:随机存取存储器(“ram”)、静态随机存取存储器(“sram”)、动态随机存取存储器(“dram”)、相变存储器(“pcm”)、只读存储器(“rom”)、可擦除可编程只读存储器(“eprom”)、电可擦除可编程只读存储器(“eeprom”)、闪存、光盘只读存储器(“cd-rom”)、数字多功能磁盘(“dvd”)、光卡或者其他光存储介质、盒式磁带、磁带、磁盘存储、磁卡或者其他磁性存储设备或介质、固态存储器设备、存储阵列、网络附加存储、存储区域网络、托管计算机存储设备或者任何其他存储存储器、存储设备和/或可用于存储和维护信息以供计算设备访问的存储介质。
121.与计算机存储介质相比,通信介质可以将计算机可读指令、数据结构、程序模块或者其他数据体现在经调制的数据信号中,诸如载波或者其他传输机制。如在本文中所定义的,计算机存储介质不包括通信介质。亦即,计算机存储介质不包括自身仅由经调制的数据信号、载波或传播信号组成的通信介质。
122.(一个或多个)通信接口706可以表示例如网络接口控制器(“nic”)或者其他类型的收发器设备以通过网络发送和接收通信。此外,(一个或多个)通信接口706可以包括一个或多个视频相机和/或音频设备722以实现视频馈送和/或静止图像等的生成。
123.在所图示的示例中,计算机可读介质704包括数据存储708。在一些示例中,数据存储708包括数据存储装置,诸如数据库、数据仓库或者其他类型的结构化或非结构化数据存储装置。在一些示例中,数据存储708包括具有一个或多个表、索引、存储过程等的语料库和/或关系数据库以实现数据访问,包括例如一个或多个超文本标记语言(“html”)表、资源描述框架(“rdf”)表、网络本体语言(“owl”)表和/或可扩展标记语言(“xml”)表。
124.数据存储708可以存储用于存储在计算机可读介质704中和/或由(一个或多个)数据处理单元702和/或(一个或多个)加速器运行的进程、应用、组件和/或模块的操作的数据。例如,在一些示例中,数据存储708可以存储会话数据710(例如,如在图11中所示的会话数据1136)、简档数据712(例如,与参与者简档相关联)和/或者其他数据。会话数据710可以包括通信会话中的参与者(例如,用户和/或客户端计算设备)的总数、在通信会话中发生的活动、通信会话的受邀者列表和/或与何时以及如何进行或托管通信会话有关的其他数据。数据存储708也可以包括内容数据714,诸如包括视频、音频或者用于在一个或多个显示屏上渲染和显示的其他内容的内容。
125.替代地,一些或所有上述数据能够被存储在一个或多个数据处理单元702上的单独存储器716上,诸如cpu型处理器、gpu型处理器、fpga型加速器、dsp型加速器和/或者其他加速器上的存储器。在该示例中,计算机可读介质704也包括操作系统718和被配置为将设备700的功能和数据暴露给其他设备的(一个或多个)应用编程接口710(api)。另外,计算机可读介质704包括一个或多个模块,诸如服务器模块730、输出模块732以及gui呈现模块740,但是所图示的模块的数量仅仅是示例,并且所述数量可以变得更高或更低。亦即,在本文中结合所图示的模块描述的功能可以由一个设备上的或者跨多个设备的更少数量的模块或更多数量的模块来执行。
126.也应当意识到,可以对上文所描述的示例进行许多变化和修改,其中的元素应当被理解为在其他可接受的示例中。所有这样的修改和变化都旨在被包含在本公开的范围内并且受以下权利要求保护。
127.示例性条款
128.示例性条款a:一种计算机实现的方法,包括:获得媒体数据,所述媒体数据定义将在与通信会话相关联操作的多个客户端设备处同时播放的媒体内容;确定延迟数据,所述延迟数据定义与向参与所述通信会话的所述多个客户端设备中的每个客户端设备传输信号相关联的延迟值,其中,与每个相应客户端设备相关联的所述延迟值是基于评估在所述通信会话期间到每个客户端设备的连接条件来确定的;接收播放指令以在所述多个客户端设备处发起对所述媒体内容的回放;以及响应于所述播放指令,使得对所述媒体内容的所述回放以由被提供给所述客户端设备中的每个客户端设备的延迟播放指令控制的不同内
置延迟延时而跨所述多个客户端设备开始,其中:每个延迟播放指令对应于相应客户端设备,每个延迟播放指令定义基于在对应于所述相应客户端设备的所述延迟数据和对应于与最大延迟值相对应的客户端设备的所述延迟数据之间的差异确定的延迟延时量,所述延迟延时量被配置为使得所述相应客户端设备推迟发起对所述媒体数据的所述回放达定义的延迟延时量;并且至少两个延迟播放指令定义不同的延迟延时量。
129.示例性条款b:示例性条款a所述的计算机实现的方法,其中,第一客户端设备推迟发起对所述媒体数据的所述回放的第一延迟延时是至少部分地基于与第二客户端设备相关联的所述延迟数据的一部分来确定的。
130.示例性条款c:示例性条款a至b中的任一项所述的计算机实现的方法,还包括:接收与对所述媒体内容的所述回放相关联的第一回放模式命令;响应于所述第一回放模式命令,使得对所述媒体内容的所述回放的个体播放头位置能够在所述个体客户端设备处独立地调整;接收与对所述媒体内容的所述回放相关联的第二回放模式命令,其中,所述第二回放模式命令指示特定的播放头位置;以及响应于所述第二回放模式命令,使得对所述媒体内容的所述回放被更新到跨所述多个客户端设备的所述特定播放头位置。
131.示例性条款d:示例性条款a至c中的任一项所述的计算机实现的方法,其中,确定所述延迟数据包括:在所述通信会话期间向所述多个客户端设备传输多个ping;以及至少部分地基于与所述多个ping相关联的多个往返时间来计算多个延迟值。
132.示例性条款e:示例性条款a至d中的任一项所述的计算机实现的方法,其中,所述播放指令是基于在所述多个客户端设备的特定客户端设备处接收到的用户输入而生成的用户播放指令。
133.示例性条款f:示例性条款a至e中的任一项所述的计算机实现的方法,其中,每个延迟播放指令定义以下两者:由基于在所述特定客户端设备处接收到的所述用户输入生成的所述用户播放指令指示的播放头位置;以及基于与至少一个其他客户端设备相对应的所述延迟数据的一部分而为所述个体客户端设备中的对应个体客户端设备所确定的个体延迟延时。
134.示例性条款g:示例性条款a至f中的任一项所述的计算机实现的方法,其中,至少一些个体延迟播放指令定义了个体延迟延时,其使得所述个体客户端设备中的至少一些个体客户端设备推迟发起对所述媒体数据的所述回放,直到所述多个客户端设备中的每个客户端设备接收到对应的延迟播放指令。
135.示例性条款h:示例性条款a至g中的任一项所述的计算机实现的方法,其中,个体延迟播放指令使得所述个体客户端设备中的至少一些个体客户端设备开始缓存来自一个或多个媒体流的、独立于一个或多个双向用户流接收到的所述媒体内容。
136.示例性条款i:示例性条款a至h中的任一项所述的计算机实现的方法,还包括:响应于确定对所述媒体内容的所述回放已经在第一客户端设备处的特定播放头位置处暂停,向第二客户端设备传输暂停指令以用于:使得对所述媒体内容的所述回放在所述第二客户端设备处暂停,以及使得所述媒体内容在所述第二客户端设备处的当前播放头位置被更新到所述特定播放头位置。
137.示例性条款j:一种系统,包括:至少一个处理器;以及与所述至少一个处理器通信的至少一个存储器,所述至少一个存储器具有存储在其上的计算机可读指令,所述计算机
可读指令当由所述至少一个处理器运行时,使得所述至少一个处理器用于:在多个客户端设备之间传输多个双向用户流以促进通信会话;在所述通信会话期间从特定客户端设备接收用户播放指令以经由与所述多个双向用户流不同的多个媒体流在所述多个客户端设备处发起对托管的媒体内容的回放;确定延迟数据,所述延迟数据定义与在所述通信会话期间向所述多个客户端设备中的个体客户端设备传输信息相关联的多个延迟值;基于与所述多个客户端设备的其他客户端设备相对应所述的延迟数据的部分而确定针对所述个体客户端设备的个体延迟延时;以及传输多个延迟播放指令以使得对托管的媒体内容的所述回放跨所述多个客户端设备开始,其中,个体延迟播放指令包括所述个体延迟延时中的对应个体延迟延时以使得所述个体客户端设备中的至少一些个体客户端设备在接收到所述个体延迟播放指令之后推迟发起对所述媒体内容的所述回放。
138.示例性条款k:示例性条款j所述的系统,其中,所述个体延迟播放指令由所述用户播放指令指示的播放头位置。
139.示例性条款l:示例性条款j至k中的任一项所述的系统,其中,所述计算机可读指令还使得所述至少一个处理器用于:响应于从主客户端设备接收到异步回放模式命令,使得对所述媒体内容的所述回放的个体播放头位置能够在所述个体客户端设备处独立地调整。
140.示例性条款m:示例性条款j至l中的任一项所述的系统,其中,所述计算机可读指令还使得所述至少一个处理器用于:响应于从主客户端设备接收到同步回放模式命令,使得对所述媒体内容的所述回放跨所述多个客户端设备中的每个客户端设备被更新到与所述主客户端设备相关联的特定播放头位置。
141.示例性条款n:示例性条款j至m中的任一项所述的系统,其中,确定所述延迟数据包括:在所述通信会话期间,向所述多个客户端设备传输多个ping;以及基于与所述多个ping中的个体ping相关联的往返时间来计算所述多个延迟值。
142.示例性条款o:示例性条款j至n中的任一项所述的系统,其中,所述计算机可读指令还使得所述至少一个处理器用于:从对应于主控制状态的第一客户端设备接收传递控制请求,所述传递控制请求识别与从属控制状态相对应的第二客户端设备;以及响应于所述传递控制请求,更新许可数据以将所述主控制状态授予所述第二客户端设备并且将所述从属控制状态授予所述第一客户端设备。
143.示例性条款p:示例性条款j至o中的任一项所述的系统,其中,所述个体延迟播放指令使得所述个体客户端设备中的至少一些个体客户端设备开始缓存来自一个或多个媒体流的、独立于所述双向用户流接收到的所述托管的媒体内容。
144.示例性条款q,示例性条款j至p中的任一项所述的系统,其中,所述计算机可读指令还使得所述至少一个处理器用于:从所述特定客户端设备接收指示对所述媒体内容的所述回放已经在所述特定客户端设备处暂停的特定播放头位置的暂停指令;并且响应于所述暂停指令,使得所述播放头位置跨所述多个客户端设备被更新到所述特定播放头位置并且暂停在所述特定播放头位置处。
145.示例性条款r:一种系统,包括:用于识别将在与通信会话相关联操作的多个客户端设备处播放的媒体内容的单元;用于确定延迟数据的单元,所述延迟数据定义与在所述通信会话期间向所述多个客户端设备传输信息相关联的多个延迟值;用于接收播放指令的
单元,所述播放指令被生成以在所述多个客户端设备处发起对所述媒体内容的播放;以及用于传输多个延迟播放指令以使得对所述媒体内容的所述回放跨所述多个客户端设备同步地开始的单元,其中,所述个体客户端设备中的至少一些个体客户端设备被使得在接收到至少一个对应延迟播放指令之后推迟发起对所述媒体内容的所述回放。
146.示例性条款s:示例性条款j至l中的任一项所述的系统,还包括:用于从与主控制状态相对应的第一客户端设备接收传递控制请求的单元,其中,所述传递控制请求识别与从属控制状态相对应的第二客户端设备;以及用于更新许可数据以将所述主控制状态提供给所述第二客户端设备并且将所述从属控制状态提供给所述第一客户端设备的单元。
147.示例性条款t:示例性条款j至s中的任一项的系统,用于在异步回放模式与同步回放模式之间切换与对所述媒体数据的所述回放相关联的回放模式的单元。
148.结论
149.最后,尽管各种配置已经以特定于结构特征和/或方法动作的语言进行了描述,但是应当理解,在所附的表示中定义的主题并不一定限于所描述的特定特征或动作。相反,具体特征和动作被公开为实现所要求保护的主题的示例性形式。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献