视频中的协同效果的制作方法
视频中的协同效果
1.本技术是申请日为2018年1月22日,申请号为201880085066.1,发明名称为“视频中的协同效果”的申请的分案申请。
2.相关申请的交叉引用
3.本技术根据35u.s.c.
§
119(e),要求于2018年1月12日提交的、题为“coordinated effects in videos”的第15/870,008序列号美国专利申请的权益,该美国专利申请是2018年1月12日提交的、题为“methods and systems for initiating a coordinated effect”的第15/869,926序列号美国专利申请的部分继续,并要求第15/869,926序列号美国专利申请的优先权。上述申请的内容通过引用并入本文。
4.背景
5.媒体效果(如面部遮罩覆盖、添加图形、改变背景等)可以应用于视频流。通常,用户已经应用了媒体效果来修改该用户自己的视频馈送(例如,将遮罩应用到用户自己的面部)。然而,最近,已经开发了协同活动协议(coordinated activity protocol),以允许协同媒体效果(coordinated media effects),协同媒体效果的实现至少部分地由没有发起(initiate)该效果的客户端设备合作处理。该协议的示例性实现在第15/869,926序列号美国专利申请中被描述。
6.特定实施例的概述
7.在根据本发明的实施例中,一种方法(特别地一种计算机实现的方法)可以包括:
8.促进视频数据到第一设备和第二设备的传输;
9.根据设备无关(device-agnostic)的协同活动协议发起媒体效果,该媒体效果修改在第一设备和在第二设备处查看的视频数据;以及
10.接收与该媒体效果相关的应用编程接口(api)调用,该api调用是根据协同活动从第一设备做出的,该api调用与指定要对视频数据做出的修改的信息相关联。
11.与api调用相关联的信息可以包括通用数据,该通用数据的格式不是由协同活动协议预定义的。
12.与api调用相关联的信息可以包括格式化数据,该格式化数据与由协同活动协议预定义的服务相关联。
13.格式化数据可以包括改变在第一设备和第二设备上播放的视频的命令。
14.格式化数据可以包括视频控制命令,该视频控制命令包括停止命令、开始命令、暂停命令或同步命令中的至少一个。
15.格式化数据可以包括基于访问视频数据的入口点触发视频缩略图(thumbnail)模式的命令。
16.在根据本发明的实施例中,视频数据可以包括视频会议数据;第一设备和第二设备各自可以显示界面,该界面可以包括用于显示第一用户的视频的第一面板和用于显示第二用户的视频的第二面板;当第一用户朝向第一面板的一侧倾斜或推动时,可以发起媒体效果;并且修改可以包括在第一用户向其倾斜或推动的一侧的方向上扩展第一面板的尺寸,而在与第一用户的该侧相关联的方向上减小第二面板的尺寸。
17.在根据本发明的实施例中,非暂时性计算机可读介质可以存储指令,这些指令当由一个或更多个处理器执行时,可以使得处理器:
18.促进视频数据到第一设备和第二设备的传输;
19.根据设备无关的协同活动协议发起媒体效果,该媒体效果修改在第一设备和在第二设备处查看的视频数据;以及
20.接收与该媒体效果相关的应用编程接口(api)调用,该api调用是根据协同活动从第一设备做出的,该api调用与指定要对视频数据做出的修改的信息相关联。
21.与api调用相关联的信息可以包括通用数据,该通用数据的格式不是由协同活动协议预定义的。
22.与api调用相关联的信息可以包括格式化数据,该格式化数据与由协同活动协议预定义的服务相关联。
23.格式化数据可以包括改变在第一设备和第二设备上播放的视频的命令。
24.格式化数据可以包括视频控制命令,该视频控制命令包括停止命令、开始命令、暂停命令或同步命令中的至少一个。
25.格式化数据可以包括基于访问视频数据的入口点触发视频缩略图模式的命令。
26.视频数据可以包括视频会议数据;第一设备和第二设备各自可以显示界面,该界面可以包括用于显示第一用户的视频的第一面板和用于显示第二用户的视频的第二面板;当第一用户朝向第一面板的一侧倾斜或推动时,可以发起媒体效果;并且修改可以包括在第一用户向其倾斜或推动的一侧的方向上扩展第一面板的尺寸,而在与第一用户的该侧相关联的方向上减小第二面板的尺寸。
27.在根据本发明的实施例中,一种装置可以包括:
28.非暂时性计算机可读介质,其保存要传输到第一设备和第二设备的视频数据;
29.硬件处理器电路;
30.媒体效果发起逻辑,其被配置成根据设备无关的协同活动协议发起媒体效果,该媒体效果修改在第一设备和在第二设备处查看的视频数据;以及
31.媒体效果信息交换逻辑,其被配置成接收与媒体效果相关的应用编程接口(api)调用,该api调用是根据协同活动从第一设备做出的,该api调用与指定要对视频数据做出的修改的信息相关联。
32.与api调用相关联的信息可以包括格式化数据,该格式化数据与由协同活动协议预定义的服务相关联。
33.格式化数据可以包括改变在第一设备和第二设备上播放的视频的命令。
34.格式化数据可以包括视频控制命令,该视频控制命令包括停止命令、开始命令、暂停命令或同步命令中的至少一个。
35.格式化数据可以包括基于访问视频数据的入口点触发视频缩略图模式的命令。
36.视频数据可以包括视频会议数据;第一设备和第二设备各自可以显示界面,该界面可以包括用于显示第一用户的视频的第一面板和用于显示第二用户的视频的第二面板;当第一用户朝向第一面板的一侧倾斜或推动时,可以发起媒体效果;并且修改可以包括在第一用户向其倾斜或推动的一侧的方向上扩展第一面板的尺寸,并且在与第一用户的该侧相关联的方向上减小第二面板的尺寸。
37.在根据本发明的实施例中,一个或更多个计算机可读非暂时性存储介质可以体现软件,该软件在被执行时可操作来执行根据本发明或任何上面提到的实施例的方法。
38.在根据本发明的实施例中,一种系统可以包括:一个或更多个处理器;以及耦合到处理器并包括由处理器可执行的指令的至少一个存储器,处理器当执行指令时可操作来执行根据本发明或任何上面提到的实施例的方法。
39.在根据本发明的实施例中,一种优选地包括计算机可读非暂时性存储介质的计算机程序产品当在数据处理系统上被执行时可操作来执行根据本发明或任何上面提到的实施例的方法。
40.在根据本发明的实施例中,一种计算机实现的方法,包括:
41.促进视频数据到第一设备和第二设备的传输;
42.根据设备无关的协同活动协议发起媒体效果,所述媒体效果修改在所述第一设备和在所述第二设备处查看的视频数据;以及
43.接收与所述媒体效果相关的应用编程接口(api)调用,所述api调用是根据协同活动从所述第一设备做出的,所述api调用与指定要对所述视频数据做出的修改的信息相关联。
44.与所述api调用相关联的所述信息包括通用数据,所述通用数据的格式不是由所述协同活动协议预定义的。
45.与所述api调用相关联的所述信息包括格式化数据,所述格式化数据与由所述协同活动协议预定义的服务相关联。
46.所述格式化数据包括改变在所述第一设备和所述第二设备上播放的视频的命令;和/或其中,所述格式化数据包括视频控制命令,所述视频控制命令包括停止命令、开始命令、暂停命令或同步命令中的至少一个;和/或其中,所述格式化数据包括基于访问所述视频数据的入口点触发视频缩略图模式的命令。
47.所述视频数据包括视频会议数据;所述第一设备和所述第二设备各自显示界面,所述界面包括用于显示第一用户的视频的第一面板和用于显示第二用户的视频的第二面板;当所述第一用户朝向所述第一面板的一侧倾斜或推动时,发起所述媒体效果;并且所述修改包括在所述第一用户朝向其倾斜或推动的所述侧的方向上扩展所述第一面板的尺寸,而在与所述第一用户的该侧相关联的方向上减小所述第二面板的尺寸。
48.在根据本发明的实施例中,一种存储指令的非暂时性计算机可读介质,所述指令当被一个或更多个处理器执行时使得所述处理器:
49.促进视频数据到第一设备和第二设备的传输;
50.根据设备无关的协同活动协议发起媒体效果,所述媒体效果修改在所述第一设备和在所述第二设备处查看的视频数据;以及
51.接收与所述媒体效果相关的应用编程接口(api)调用,所述api调用是根据协同活动从所述第一设备做出的,所述api调用与指定要对所述视频数据做出的修改的信息相关联。
52.与所述api调用相关联的所述信息包括通用数据,所述通用数据的格式不是由所述协同活动协议预定义的。
53.与所述api调用相关联的所述信息包括格式化数据,所述格式化数据与由所述协
同活动协议预定义的服务相关联。
54.所述格式化数据包括改变在所述第一设备和所述第二设备上播放的视频的命令;和/或其中,所述格式化数据包括视频控制命令,所述视频控制命令包括停止命令、开始命令、暂停命令或同步命令中的至少一个;和/或其中,所述格式化数据包括基于访问所述视频数据的入口点触发视频缩略图模式的命令。
55.所述视频数据包括视频会议数据;所述第一设备和所述第二设备各自显示界面,所述界面包括用于显示第一用户的视频的第一面板和用于显示第二用户的视频的第二面板;当所述第一用户朝向所述第一面板的一侧倾斜或推动时,发起所述媒体效果;并且所述修改包括在所述第一用户朝向其倾斜或推动的所述侧的方向上扩展所述第一面板的尺寸,而在与所述第一用户的该侧相关联的方向上减小所述第二面板的尺寸。
56.在根据本发明的实施例中,一种装置包括:
57.非暂时性计算机可读介质,其保存要传输到第一设备和第二设备的视频数据;
58.硬件处理器电路;
59.媒体效果发起逻辑,其被配置成根据设备无关的协同活动协议发起媒体效果,所述媒体效果修改在所述第一设备和在所述第二设备处查看的视频数据;以及
60.媒体效果信息交换逻辑,其被配置成接收与所述媒体效果相关的应用编程接口(api)调用,所述api调用是根据协同活动从所述第一设备做出的,所述api调用与指定要对所述视频数据做出的修改的信息相关联。
61.与所述api调用相关联的所述信息包括格式化数据,所述格式化数据与由所述协同活动协议预定义的服务相关联。
62.所述格式化数据包括改变在所述第一设备和所述第二设备上播放的视频的命令;和/或其中,所述格式化数据包括视频控制命令,所述视频控制命令包括停止命令、开始命令、暂停命令或同步命令中的至少一个;和/或其中,所述格式化数据包括基于访问所述视频数据的入口点触发视频缩略图模式的命令。
63.所述视频数据包括视频会议数据;所述第一设备和所述第二设备各自显示界面,所述界面包括用于显示第一用户的视频的第一面板和用于显示第二用户的视频的第二面板;当所述第一用户朝向所述第一面板的一侧倾斜或推动时,发起所述媒体效果;并且所述修改包括在所述第一用户朝向其倾斜或推动的所述侧的方向上扩展所述第一面板的尺寸,而在与所述第一用户的该侧相关联的方向上减小所述第二面板的尺寸。
64.附图简述
65.图1a描绘了视频会议界面的示例,其中媒体效果以协同的方式应用于发起用户和非发起用户的视频馈送;
66.图1b、图1c和图1d描绘了一种视频会议界面,其中协同效果使得与一个用户相关联的面板收缩,而与另一个用户相关联的面板增长;
67.图1e和图1f描绘了共享视频体验的示例;
68.图1g描绘了共享书籍阅读体验的示例;
69.图1h描绘了共享相册体验的示例;
70.图1i和图1j描绘了协同游戏体验的示例;
71.图2a是描绘适用于示例性实施例的示例性客户端/服务器环境的框图;
72.图2b描绘了协同效果发起消息的示例性数据结构;
73.图2c描绘了用于交换通用数据或预定义类型数据的协同效果数据交换消息的示例性数据结构;
74.图3a-图3c是描绘客户端/服务器环境中示例性信息交换的数据流图;
75.图4a-图4b描绘了示出用于根据协同活动协议应用协同的协同效果的示例性方法的流程图;
76.图5a是提供包括示例性集中式通信服务的系统的概览的框图;
77.图5b是提供包括示例性分布式通信服务的系统的概览的框图;
78.图5c更详细地描绘了图5a-图5b的社交网络图;
79.图6是描绘用于消息传递服务的系统示例的框图;
80.图7是示出适用于示例性实施例的示例性计算设备的框图;
81.图8描绘了示例性通信架构;以及
82.图9是描绘示例性多载波通信设备的框图。
83.详细描述
84.本文描述了用于实现相对复杂的协同效果的技术,该技术涉及没有发起效果的客户端设备。这些效果可以应用于以视频为中心的体验(例如,视频呼叫、共享观看视频)或非以视频为中心的体验(例如,单层或多层游戏、共享的书籍阅读体验、共享的相册等)的上下文中。
85.可以根据用于跨多个设备同步交互式效果和体验的协议来应用效果。这种协同活动协议允许经由实时通信(rtc)信道在多个设备上发起并协同效果。协议涉及交换消息以合作地发起效果,以及(一旦发起)经由应用编程接口(api)调用交换通用数据。因此,系统是数据类型和平台无关的,允许效果开发者定义将如何解释数据。
86.在某些情况下,可以提供更高级别的服务来交换预定义类型的数据(例如,用于重要的公共活动,如回合谈判、回合让步、记分、领导选举等)。
87.协议可用于同步视频流中的效果,协同非以视频为中心的体验(例如,共同的视频观看、书籍阅读、多人游戏、具有观看体验的单人游戏、基于循环的短期单人游戏、相册查看/组织)等。
88.例如,共享体验可以是有多个参与者的视频会议。在一个示例中,协同效果可以由一个用户(发起用户)应用于另一个用户(非发起用户)。这可以涉及,例如,发起用户向非发起用户应用效果,而不影响对发起用户的视频的处理方式(例如,在非发起用户上画小胡子,然后该小胡子对全部参与者变得可见),或者发起用户可以发起涉及该发起用户以及一个或更多个非发起用户的效果(例如,发起用户可以模仿投掷火球,该火球出现在发起用户的手中,然后看起来被抛离屏幕,随后出现在非发起用户的视频中,并且当这些用户被击中时,使得“着火”动画被应用于这些用户)。
89.协同效果也可以应用于在共同体验中观看视频的多个用户。在这种情况下,协同效果可以被应用来开始视频、停止视频、暂停视频、在参与者设备之间同步视频位置、将视频推入缩略图模式或者将视频增大到全屏配置等。
90.用户之间的协同体验也可以是非以视频为中心的,如查看或组织相册、合作阅读书籍或参与多人游戏(或在多个设备之间具有某种类型的所需协同的单人游戏)。可以应用
各种协同效果来改变协同体验的状态。
91.上述活动不是以视频为中心的,因为它们不需要视频组件(如视频会议)的存在,并且协同效果被应用于非视频信息。尽管如此,这些活动可以结合视频组件来使用(例如,一个用户玩游戏,同时其他用户在视频会议中观看并通信)。在这种情况下,协同效果可以应用于视频组件、非视频组件,或者应用于视频组件和非视频组件两者。
92.该简要概述旨在作为对以下更详细讨论的概念的非限制性介绍。然而,在讨论进一步的示例性实施例之前,首先提供关于数据隐私的简要说明。关于隐私设置和认证的更详细描述将结合以下附图进行阐述。
93.关于数据隐私的说明
94.本文描述的一些实施例利用了训练数据或度量,该训练数据或度量可以包括由一个或更多个用户自愿提供的信息。在这样的实施例中,可以以多种方式保护数据隐私。
95.例如,在收集或使用用户数据之前,可能需要用户选择加入任何数据收集。也可以向用户提供选择退出任何数据收集的机会。在选择加入数据收集之前,可以向用户提供关于数据将被使用的方式、数据将被保留多长时间以及为保护数据不被泄露而采取的安全措施的描述。
96.标识从其收集数据的用户的任何信息可以被清除或与数据解除关联(disassociated)。在需要保留任何标识信息的情况下(例如,为了满足监管要求),可以向用户通知标识信息的收集、将对标识信息的使用以及标识信息将被保留的时间量。可以移除专门标识用户的信息,并且该信息可以用例如通用标识号或其他非特定形式的标识来替换。
97.一旦被收集,数据可以被存储在安全的数据存储位置,该位置包括防止对数据的未授权访问的安全措施。数据可以以加密格式存储。标识信息和/或非标识信息可以在预定时间段后从数据存储装置中清除。
98.尽管在本文出于说明的目的描述了特定的隐私保护技术,但是本领域的普通技术人员将认识到隐私也以其他方式受到保护。关于数据隐私的进一步细节将在下面描述网络实施例的部分中讨论。
99.假设满足用户的隐私条件,示例性实施例可以被部署在各种各样的消息传递系统中,包括社交网络中或移动设备上的消息传递(例如,通过消息传递客户端应用或经由短消息服务)、以及其他可能性。接下来提供用于在消息传递系统中参与同步视频对话的示例性逻辑和过程的概览。
100.为了帮助理解,在描述基础实现的详细描述之前,将首先呈现一系列示例。注意,这些示例仅旨在是说明性,并且本发明不限于所示的实施例。
101.协同效果
102.现在参考附图,其中相同的附图标记始终用于指代相同的元件。在以下描述中,出于解释的目的阐述了许多具体细节,以便提供其透彻理解。然而,可以在没有这些具体细节的情况下实施新颖的实施例。在其他情况下,以框图形式示出了众所周知的结构和设备以便促进其描述。意图是覆盖与所要求保护的主题一致的全部修改、等同物和替代物。
103.在附图和所附描述中,标号“a”和“b”以及“c”(以及类似的指示符)旨在是表示任何正整数的变量。因此,例如,如果实现方式将值设置为a=3,则被示为组件116-1至116-3
的组件116的完整集合可以包括组件116-1、116-2和116-3。实施例不受限于这种上下文。
104.图1a-图1j描绘了多个用户可以在其中参与共享体验的示例性界面。将结合每个界面描述各种类型的协同效果。
105.一般而言,协同效果可以是一种修改与协同活动相关联的数据和/或协同活动的状态的效果,其中修改需要没有发起该效果的设备的合作。
106.协同效果包括视觉数据,如遮罩或动画,视觉数据可应用于视频或界面以修改该视频或界面。然而,协同效果不限于动画或图形数据。例如,音频效果可以应用于视频流。音频效果可以包括,例如,将音频添加到流中(例如,播放音频轨道,如笑声轨道或掌声轨道),修改流中的音频(例如,改变用户声音的属性,如声音的音高、音量等)、播放与音频流中的歌曲匹配的节拍等。
107.此外,本文描述的技术不限于修改视频的视听数据形式中的协同效果。在一些实施例中,可以根据协同活动协议交换消息,以修改任何协同活动(例如,单人或多人游戏、协同查看体验等)的状态。修改可以包括应用于视觉或听觉数据的图形或听觉覆盖,或者可以改变协同活动的状态(例如,在多人游戏中出于解决冲突的目的选择领导者设备、在游戏中传递回合、向交互式书籍、视频或相册发出命令等)。
108.协同效果可以应用于发起协同效果的用户的视频或体验。协同效果可以由用户直接应用(例如,通过按压屏幕上的按钮或以其他方式发出应用协同效果的命令),或者间接应用(例如,通过检测应该应用协同效果的条件、通过在预定时间或间隔应用协同效果等)。
109.在一些实施例中,协同效果可以应用于与应用媒体效果的参与者不同的参与者,或者可以以协同方式应用于多个用户。图1a描绘了界面的示例,在该界面中,媒体效果被应用于视频会议中的多个用户。
110.在这种情况下,系统检测到指向第二参与者(jack)的、与第一参与者(jill)相关联的情绪状态(例如,浪漫情绪状态)。因此,系统经由协同活动协议对jill和jack的视频流启动“浪漫”协同效果。在这种情况下,在jill的显示器上出现一个动画的接吻媒体效果102-1,最初集中在jill的嘴上。效果102-1看起来飞到了jill屏幕的边缘并消失。它以媒体效果102-2重新出现在jack的显示器上,并飞向jack的脸颊。通信中的每个参与者都能看到这种协同的媒体效果。其他示例可以包括将愤怒的用户脸做成龙的动画,并显示用户向另一个用户喷火、扔雪球等等。
111.多用户协同效果可以应用于检测到情绪状态的原始(选择)用户和至少一个其他用户。该其他用户可以是,例如,当前活动的用户(例如,当前正在说话或以其他方式被认为是最相关的用户)、具有相同或对应情绪状态的另一个用户、与原始用户当前正在观看的显示器的一部分相关联的用户(例如,如果用户正盯着另一个用户的视频流并且正在感受触发多用户媒体效果的情绪,则媒体效果可以针对另一个用户的视频流)、或者所选择的其他用户。
112.在一些实施例中,协同效果可以直接自动应用。在其他情况下,可以识别多个候选协同效果,并且可以自动呈现一组推荐的协同效果以供发起用户选择。
113.在视频呼叫中(或者向其他视频数据)应用听觉或图形协同效果的示例中,协同活动协议可用于发起效果,确保将应用效果的每个用户具有必要的数据(例如,用于应用效果的逻辑、动画数据等),并用于交换允许应用该效果的数据。例如,效果的位置或路径可以取
决于用户的特定特征(例如,鼻子、嘴、手)的位置。为了协同效果(例如,使图1a中的吻从jill的面板边缘的位置消失,并重新出现在jack面板上的对应位置),可以通过协同活动协议来交换位置信息。
114.在图1b-图1d所示的另一个示例中,协同效果可以修改视频会议的图形用户界面(gui)的状态。在如图1b所描绘的gui中,用户(jill)与第一面板106相关联,用户(jack)与第二面板104相关联。相应面板各自具有由宽度和高度限定的相应尺寸。在这种情况下,每个面板的宽度和高度最初是相同的。例如,第一面板106和第二面板104的宽度最初都被设置为某个值d1。
115.视频会议应用可以经由协同活动协议支持修改gui的协同效果。在这种情况下,如图1c所示,当发起用户(在这种情况下是jill)朝向她的面板106的边缘108之一倾斜时,可以触发一个或更多个协同效果。如果用户以足够的速度朝向面板倾斜(或者以另一种方式触发效果,如通过用他们的手推靠面板106的边缘),则视频会议应用可以将该条件与一个或更多个协同效果的应用相关联。充当发起客户端设备的jill的客户端设备可以检测到该条件已经被满足,并且可以通过协同活动协议发起相关联的效果。作为第一效果,当用户的头部与面板110的边缘108接触时,应用可以使得声音(如敲击声)被播放,以在视频呼叫中的每个参与者的设备上播放。可选地,应用也可以导致立即可见的效果,如晃动界面。
116.与此同时或随后,应用可以导致相应面板106、104的尺寸改变。在这种情况下,第一面板106在jill推动的方向上(即,在边缘108的方向上)在宽度上扩展,而第二面板104在相同的方向上收缩对应的量。结果,第二面板104收缩到宽度d2,d2小于第一面板106的宽度d3。从原始d1尺寸改变到随后的d2/d3尺寸的调整量可以取决于发起用户看起来推靠边缘108的力度有多大(例如,用户朝向边缘108倾斜的速度)和/或用户保持抵靠边缘108的时间。允许应用媒体效果的信息(例如,发起用户的头部或手的位置、用户移动的速度、自用户触摸边缘108以来经过的时间量等)可以经由协同活动协议与非发起用户交换。
117.例如,当用户希望显示其视频馈送的背景中和/或屏幕外的东西时,这样的实施例可以是有用的。
118.来自图1b-图1d的示例也用于表明多重协同效果可以同时出现和/或层叠于彼此之上。例如,来自图1c的音频协同效果110可以在面板106开始扩展的同时应用。在另外的实施例中,协同效果也可以与非协同效果叠加。
119.同样值得注意的是,在这种情况下,jill的设备用作发起设备。面板扩展协同效果修改了jack的面板尺寸,使jack成为非发起用户。然而,会议中的其他参与者也可以被标记为非发起用户,因为为了修改每个用户的gui,也必须在他们的设备上协同改变。在来自图1a的示例中,在应用接吻效果的情况下可能没有必要将这些其他用户标记为非发起用户,因为该媒体效果可以应用于jack和jill的视频流,然后广播给其他用户,而不一定需要其他用户的合作。类似地,音频效果110不需要是协同效果,因为音频效果110可以被添加到发起用户的音频数据中,而不必要求其他用户在效果的应用中合作。
120.图1e描绘了另一个示例,其中多个用户共享共同的视频观看体验(例如,经由在线视频共享服务)。在该示例中,视频118被显示在每个参与者的客户端应用的界面上,并且视频的回放被同步,使得每个用户在相同的回放状态下同时看到相同的视频。
121.为了创造一种共同体验,图1e中描绘的实施例包括视频会议作为次要特征。查看
视频观看体验的参与者可以在预览面板114中看到他们自己的视频会议数据的预览。其他参与者出现在参与者面板116-1、116-2、116-3等中。可替代地,参与者可以经由音频会议进行通信(如结合图1g-图1h所描述的),可以在消息传递界面中交换消息(如结合图1f所描述的),或者应用可以避免提供参与者通信能力,而是可以简单地同步或协同参与者体验(如在图1i的示例中)。这些不同的通信能力可以与本文描述的任何实施例组合。
122.为了控制视频的回放,向每个参与者提供回放控件(controls)120。控件120可以包括适于改变视频状态的任何控件,如停止、播放、暂停、快进、倒带等。激活这些控件120可以导致激活实现每个参与者的回放状态改变的协同效果。
123.协同效果可以经由协同活动协议以多种方式实现。例如,应用可以使用发起消息来发起一般的“视频回放”协同效果,然后在数据消息中传输作为通用数据的单独指令。可替代地,应用可以为每个控件发起新的效果(例如,经由发起消息发起的播放效果、经由发起消息发起的停止效果等)。此外,应用可以发起一般的视频回放协同效果,然后可以使用数据消息来传输单独的指令,这些数据消息携带调用协同活动协议的预先配置的高级服务(例如,播放服务、停止服务等)的预定格式的数据。
124.一些控件(如暂停、播放、停止、快进和倒带)可以协同,因为如果一个参与者激活控件,则视频回放的状态在每个参与者的应用中被改变。如音量的其他控件可以在逐个应用的基础上应用,以使得激活这些控件不会影响另一个参与者的应用上的对应控件。
125.在这种情况下,协同效果可以应用于正在显示的视频118,而不是视频会议信息(尽管在其他实施例中,协同效果也可以或替代地应用于视频会议信息)。对于以视频会议为中心和非以视频会议为中心的实施例,以类似的方式应用协同效果(例如,通过经由发起消息用协同活动协议发起协同效果,然后经由协议的数据消息交换通用或格式化数据)。应该注意的是,客户端/服务器环境(见图2a)在协同效果应用于非视频会议数据时可能略有不同。例如,图2a所描绘的通信服务器可以从中央站点协同正被观看的视频118的分发,而不是从每个用户接收音频和视频数据,然后再分发该数据。与协同效果相关的消息可以继续在rtc信道上提供,而其他类型的数据(这种情况下的视频数据、或者以下所述示例中的照片数据、游戏数据、书籍数据等)可以在它们自己的专用信道上分发。在每种情况下,共享体验可以可选地涉及视频会议或音频会议,因此除了与共享体验直接相关的其他类型的数据,还可以分发视频和/或音频数据。视频会议和/或音频会议数据可以由分发其他类型数据和控制数据的同一通信服务器分发,和/或可以由单独的服务器处理。
126.与视频回放相关的协同效果不限于明确激活(如通过按压播放或暂停按钮)的效果。协同效果也可以例如由协同视频的回放的应用自动激活。协同效果可以在预定条件发生时或在预定定时被激活,并且可以(在用户可能不知道的情况下)在后台执行。一个这样的示例是同步效果,它可以以预定的间隔自动激活。相应参与者的应用可以交换与同步效果相关的数据消息,该数据消息指示视频的当前回放的定时信息(例如,用户在给定时间的视频进度)。使用定时信息,每个应用可以本地同步视频回放,使得每个参与者同时查看视频的相同部分。
127.自动或后台效果的另一个示例在图1f中描绘。在这个示例中,参与者通过消息传递界面122进行交互。在消息传递界面中,用户可以被授权在对话面板126中交换基于文本的消息。在该示例中,对话面板126中的消息之一包括到视频124的链接。当一个用户选择链
接时,视频124可以显示在界面122中。
128.应用可以被配置成根据访问视频的入口点以不同的方式显示视频124。例如,如果消息传递对话中的参与者与向用户建议电影的机器人(bot)交互,并且其中一个用户指示机器人开始播放电影,则这可以触发全屏模式的视频124回放(这可能看起来类似于图1e的示例)。另一方面,当经由对话面板126中的链接访问视频时,视频124可以以缩略图模式显示,如图1f所示。为了允许对视频入口点敏感的缩略图模式和全屏模式,可以经由协同活动协议来交换描述入口点的数据消息(或者明确指定视频124应该以缩略图或全屏模式播放的数据消息)。
129.图1g中描绘的另一个实施例与共享的书籍阅读体验有关。电子书界面128可以由应用提供,该应用可以在多个参与者客户端设备的显示器上显示书籍的相同页面。在该示例中,呼叫面板130指示参与者在查看界面128的同时正在音频呼叫中通信。这样的实施例可能是有用的,以例如允许父母当不在家时给他们的孩子读书,用于共享的杂志阅读体验,支持参考教科书的学习小组,等等。协同活动协议可用于保持电子书的显示同步。
130.各种可交互的元素可以允许参与者在书中导航。例如,链接132可以允许参与者使显示器显示书籍的目录(或索引、插图列表等)。如果显示器是触摸屏,与当前页面左侧区域134的交互可以导致书返回到前一页,潜在地显示翻页动画。类似地,与右侧区域136的交互可以导致页面前进。在一些实施例中,可以提供用于向后或向前翻页的快速图标(express icon)。
131.这些交互中的每一个都可以与经由协同活动协议发送的对应的协同效果相关联。可被协同活动协议实施的协同动作的其他示例包括搜索术语、跳转到指定页面、恢复到被访问的前一个页面(例如,从目录跳转回刚被阅读的页面,或者从页面跳转回索引)、展开插图、给特定页面加书签等。
132.在又一实施例中,协同体验可以包括在相册界面140中查看或编辑相册,如图1h所示。在相册界面中,来自相册的当前查看的照片可以可选地显示在主窗口142中。可以通过使用前向界面元素148导航到相册中的下一张照片,或者使用后向界面元素146导航到相册中的前一张照片,来改变当前查看的照片。相册中的每张照片(或相册中照片的有限子集,这取决于可用的显示空间量)可以在缩略图版本144-1、144-2、144-3等中显示。选择缩略图版本144-i可以使得相关联的照片显示在主窗口142中。相册库链接150可以允许用户退出当前相册并查看全部可用相册的列表。编辑命令152可以允许编辑主窗口142中的照片。此外,用户可以在缩略图视图144-i中选择照片,并将它们拖到相册中的新位置。可以提供更多选项,用于向相册添加新图片,或者删除相册中的照片。这些交互中的任何一个都可以与协同效果相关联,从而多个参与者可以以协同方式查看相册并与之交互。
133.协同体验的另一个示例涉及玩单人或多人游戏。图1i描绘了包括用于显示游戏当前状态的游戏面板156的多人游戏界面154的示例。游戏的当前玩家可以由化身(avatar)158、160标识,并且可以显示核心162。当前玩家可以查看游戏界面154,希望观察游戏的任何其他用户也可以。
134.在该示例中,可以提供协同效果来记下分数(例如,传输指示分数何时在本地设备改变以及改变多少的数据消息)、同步游戏面板156中的游戏状态、或者从一个用户到下一个用户传递回合。当一个玩家选择“结束回合(end turn)”元素或采取导致回合结束的动作
时(如在图1i所描绘的台球游戏中进行击球),回合传递可以手动处理。可替代地或附加地,回合传递可以是在预定义条件下(如与当前玩家的回合相关联的计时器到期时)自动发生的被动活动。
135.协同效果的另一个示例是用于在当前玩家中选择“领导者”设备的协同效果。在一些游戏中,数据被提供给每个用户的应用,然后应用构建游戏世界,并允许用户与游戏世界进行交互。本地设备可以执行计算来确定游戏世界的状态(例如,篮球是否在适当的轨迹上传送并因此最终进了篮筐中、来自火箭发射器的火箭是否在特定位置接触等)。在某些情况下,不同的玩家设备可以对游戏世界的状态得出不同的结论,并且必须选择其中一个设备作为当前游戏状态的仲裁器。通过提供允许领导人选举的协同效果,这一过程可以简化。
136.在图1i的示例中,游戏可以允许有限数量的玩家(例如,在这种情况下,两个)。多个人可以与应用界面154交互,希望一起玩。因此,可以提供协同效果来选择下一组玩家来玩。这可以例如在全部参与者中以循环方式、以单淘汰赛或双淘汰赛的方式来执行,或者可以随机或通过算法选择下一个玩家来与当前游戏的获胜者玩(例如,“我获得下一个!”游戏风格)。
137.类似的下一个玩家选择也可以针对单人游戏来执行,如图1j所示的单人游戏界面166。界面166允许玩家在其中一个玩家玩游戏并且其他参与者在游戏查看面板170中观看时彼此进行视频会议。界面166包括在其中可以看到当前玩家的预览窗口168和示出非游戏参与者的缩略图视图172-1、172-2、172-3等。
138.在单人游戏中,可以提供与在多人游戏中的效果类似的效果(例如,选择下一个玩家来玩游戏、协同共享的查看体验、开始游戏、停止游戏、暂停游戏、同步游戏查看面板170的相应视图等)。
139.任何上述协同效果可以由应用开发者实现,并且协同活动协议可以交换数据消息,该数据消息具有不是协议所识别的预定格式的数据。在这种情况下,消息可以交换可由相应应用解译的通用数据。在另外的实施例中,上述效果中的一个可以被协同活动协议支持为高级服务,并且数据可以是协议可识别的并且与服务相关联的预定格式。
140.接下来参考图2a描述用于应用协同效果的客户端/服务器环境的示例性配置。
141.示例性系统配置和数据结构
142.图2a描绘了用于应用协同效果的示例性系统。协同效果可以自动、手动或两者组合应用。
143.系统可以促进视频通信,该视频通信可以是(例如)一对一、一对多或组通信。可替代地或附加地,系统可以促进另一种类型的协同活动(例如,游戏、交互式查看体验等)。下面将参考将协同媒体效果应用于视频对话来描述一个示例;然而,应当理解,本技术不限于该示例。
144.发起客户端202-1可以是与通信中的第一参与者相关联的设备。发起客户端202-1可以是例如执行通信应用204-1以用于参与同一个或更多个其他参与者的协同活动(如基于视频的会议呼叫的视频通信)的移动设备(尽管本发明不限于移动设备的应用)。发起客户端202-1可以是发起协同效果的设备,该协同效果将在一个或更多个非发起客户端202-2、202-3、204-4等处应用或将被一个或更多个非发起客户端202-2、202-3、204-4等应用。
145.通信应用204-1可以使得与视频通信相关联的信息被传输到促进通信的一个或更
多个服务器。例如,该信息可以包括:包含与通信相关联的视频帧的视频数据208、包含与图形帧同步的声音信息的音频数据212、以及控制数据216。控制数据216可以包括各种指令、标识符、元数据等,用于应用与视频数据208和音频数据212相关联(例如同步)的协同效果。
146.在一些示例中,协同效果可以由应用204-1应用。在其他情形中,应用204-1可以定义一个帧,第三方可以经由适当的命令(例如,应用编程接口命令)或引用将协同效果插入到该帧中。
147.每种类型的数据可以在相关联的信道中传输。例如,通信应用204-1或客户端202-1的另一组件可以打开与通信服务器218的视频信道206、音频信道210和控制信道214。视频信道206仅可以承载视频格式的视频数据208。因此,通信服务器218可以将在视频信道206上接收的任何数据视为视频格式的数据,并且可以适当地处理该数据。类似地,音频信道210仅可以承载音频格式的音频数据212。
148.应当理解,本发明不限于分别在视频信道206和音频信道210上传输视频数据208和音频数据212。例如,在协同活动是查看相册的情况下,可以在数据信道中共享图形数据。在另一个示例中,游戏数据可以在专用于承载关于游戏状态的信息的数据信道中共享。为了共享收听体验(例如,多个用户同时收听音乐专辑或音乐会),信道可以包括音频信道210,但不包括视频信道206。在每种情况下,控制信道214可以是与数据信道分离并且不同的实时信道。
149.控制信道214可以传输不一定是预定格式的通用数据,或者可以传输指定控制格式的控制指令。例如,控制信道214可以承载分析视频数据208和/或音频数据212的指令,或者可以承载应用协同效果的指令。控制信道214可以是例如web实时通信(webrtc)信道。
150.视频信道206、音频信道210和控制信道可以承载两个方向上的信息。因此,例如,视频信道206和音频信道210可以承载用于在发起客户端202-1上显示/回放的数据(例如,与一个或更多个非发起客户端202-2、202-3、202-4的视频流相关的数据)。控制信道214可以承载来自通信服务器218的建议、一个或更多个识别的情绪状态、其他指令等。
151.通信服务器218可以被配置成通过应用效果协同逻辑220来协同在一个或更多个发起客户端202-1和一个或更多个非发起客户端202-2、202-3、202-4等之间的协同效果的应用。通信服务器218也可以存储协同效果库(未示出),该协同效果库包括与多个可用协同效果相关的数据。协同效果可以由标识符来标识,并且协同效果库可以可选地镜像本地存储在客户端设备202处的协同效果库。可替代地或附加地,存储在通信服务器218(或在多个通信服务器218之间划分)的库可以部分地缓存在本地客户端设备202。在一些情况下,本地客户端设备可以包括协同效果的缩略图版本,允许在通信应用204中选择效果,但是通过不包括协同效果的实现细节来保留客户端设备202上的存储。在应用协同效果时,相应的客户端设备202可以从通信服务器218请求实现细节。
152.通信服务器218还可以包括用于组合视频数据208、音频数据212和任何应用的协同效果的视听编译逻辑224。视听编译逻辑224可以包括用于使音频数据212与视频数据208同步并且还用于使协同效果与组合的音频/视频数据(或者分别与音频数据212或视频数据208)同步的逻辑。
153.一旦组合,所得到的视听数据230可以可选地从通信服务器218传输到广播服务器226。广播服务器226可以包括广播逻辑228,其识别与视频通信相关联的一个或更多个接收
者客户端202-2、202-3、202-4。广播服务器226可以向接收者客户端202-2、202-3、202-4中的每一个传输包括音频数据212、视频数据208和应用的协同效果的视听数据230。
154.在一些情况下,视听数据230可以被广播给全部接收者202-2、202-3、202-4,但是与协同效果相关的消息可以在相应的控制信道206上被传输给非发起客户端202-i,该非发起客户端202-i的协同是使效果起作用所需要的。例如,在图1a所示的示例中,协同效果可以由jill的设备发起,并且可能需要与jack的设备的协同(以便在jack的视频上以与jill的视频适当协同地应用对应的接吻动画)。尽管当应用协同效果时,视频数据可以继续由广播服务器226广播,但是提供给每个设备和来自每个设备的控制数据可以变化。例如,jill的设备可以在控制信道214上传输发起指令,该指令可以被中继到jack的设备(但不被中继到接收视听数据230的其他设备)。jack的设备可以在它自己相应的控制信道214(未示出)上向通信服务器218传输确认、数据等。
155.在协同效果在jack和jill的设备之间协同时,每个设备可以向通信服务器218传输控制数据216/从通信服务器218接收控制数据216,以允许效果被应用到它们相应的音频数据212和/或视频数据208(或者这些效果可以可选地由相应的客户端设备以协同的方式本地应用)。所得到的经修改的视听数据230可以由广播服务器226广播给对话中的每个参与者。
156.图2b-图2c描绘了可以被交换以使协同效果的应用协同的消息示例。
157.图2b描绘了发起消息250,其可以由发起客户端设备传输,以在非发起客户端设备处开始或初始化协同效果。发起消息250可以由通信服务器通过rtc信道接收。
158.发起消息250可以在消息250的报头中包括标志252或其他标识符,其将消息250识别为协同效果发起消息。因此,通信服务器218可以在接收到消息250时采取适当的步骤来处理消息250,并请求一个或更多个非发起客户端开始协同效果。标志252可以包括在例如发起消息250的报头数据中。
159.发起消息250还可以包括协同效果类型标识符254。标识符254可以指定协同效果的类型(例如,标识接吻效果、同步效果、应用命令效果等)。标识符254可以对应于与存储在通信服务器上的协同效果库(参见结合图2a的描述)中的协同效果相关联的标识符。
160.消息250还可以指定一个或更多个非发起用户标识符256。这些标识符256可以指示由类型标识符254标识的协同效果应该对协同活动中的哪些参与者应用协同效果。通信服务器可以读取非发起用户标识符256,并在rtc信道上将发起消息250转发到适当的设备。
161.一旦协同效果被发起,发起用户设备和非发起用户设备可以通过交换数据来使协同效果的应用协同。为此,可以使用数据消息260,如例如图2c所示。
162.可以经由应用编程接口(api)调用来交换数据以获得协同效果。例如,用户设备上的应用可以与支持api调用以生成或修改协同效果的应用级平台相关联。这种平台的一个示例是加利福尼亚州门洛帕克市(menlo park,ca)的facebook公司的ar工作室(ar studio)。
163.然而,使协同效果协同的协同活动协议不需要理解协同效果的实现细节。通过允许经由交换通用数据(即,不是由定义发起消息250和数据消息260的格式的协同活动协议预定义和/或识别的格式的数据)的api调用来协同效果,协议可以以与效果在其上操作的设备以及与效果本身和支持那些效果的平台无关的方式来应用。
164.因此,协同活动协议通过允许效果和/或运行效果的设备彼此交换数据同时允许支持效果的应用和/或平台确定将如何解译该数据来支持各种效果的协同。因此,协议很容易扩展到新的效果、平台和设备。
165.协同活动协议可以支持(并且可以揭示)不同的通信方法。在一个示例中,协议可以支持可靠的通信模式和不可靠的通信模式。数据消息260中的可靠性标志允许应用指定消息260应该以可靠模式还是不可靠模式传输。
166.当以可靠模式传输时,协同活动协议可以保证数据消息260被目标设备接收。例如,通信服务器可以在转发数据消息260时,等待接收者设备发送确认。如果在预定时间量内没有接收到这种确认,则服务器可以重传数据消息260,直到确认接收(或者直到预定次数的尝试或预定时间量过去,在此之后发送者可以被通知传输失败)。可靠模式对于影响协同活动状态的命令和关键数据(例如,视频开始/停止/暂停/播放/同步命令、游戏中的回合谈判、回合让步、记分等)可以是有用的。消息可以与标识符一起传输,以确保如果接收到消息的副本,消息数据不会被处理多于一次。可靠通信模式的一个示例是由用户数据报协议(udp)实现的,尽管存在其他合适的示例。
167.当以不可靠模式传输时,协同活动协议可以不为数据消息260提供传递保证。通信服务器可以将消息260发送给其预期的接收者一次,并且可以不需要消息接收的确认。不可靠模式可用于例如数据流,其中一个或几个数据点的丢失不一定会降低协同效果的性能。例如,在下面关于图1a描述的示例中,jill嘴巴的位置可以定期传输,以允许接吻效果的协同。然而,这些数据点中一个或几个的丢失可能不是灾难性的;系统可以在接收的数据点之间进行插值。通过允许以不可靠的模式传输这些数据点,效果可以节省发起侧和非发起侧的处理资源,并且还可以节省网络资源(因为消息不需要被重传并且不需要发送确认)。
168.在一些实施例中,发起消息250总是以可靠模式传输,从而允许以有保证的方式发起效果。在其他实施例中,协议可以允许发起消息250提供可靠性标志,从而潜在地允许发起消息250以不可靠模式传输。这可以在例如当应用效果的应用本身保证传递时(例如,通过在发起侧和非发起侧的应用之间直接通信)使用。
169.数据消息260可以包括支持协同效果的平台和/或应用可识别的api调用264。api调用264可以包括对象或方法名称266,其识别消息260所应用的协同效果。当响应于发起消息250发起协同效果时,平台可以为该效果分配对象名称或标识符。名称或标识符可以被指定为发起消息250的一部分,可以由发起设备独立于发起消息250指定,或者可以由非发起设备响应于发起消息250来分配并且作为对发起消息250的确认的一部分来返回,以及其他可能性。该名称或标识符可以在api调用264中使用,以确保消息260被应用于适当的效果。
170.在某些情况下,api调用264可以指定方法名称。方法名称可以指示将如何应用或修改协同效果。例如,api调用264可以是对共享的视频查看体验的“停止”方法的调用。应用停止方法可以导致视频在发起和非发起设备上停止回放。
171.在一些实施例中,协同效果的应用可能需要独立于方法名称的数据,或者除方法名称之外的数据。因此,api调用264可以可选地指定可由协同效果使用的数据268(例如,坐标、同步数据等)。
172.例如,在图1a的示例中,根据屏幕的哪一侧最靠近jill的嘴和/或视频会议用户界面的当前布局(例如,jack的视频帧是出现在jill的左侧、右侧、顶部还是底部),亲吻效果
可以看起来从jill的屏幕向左侧、右侧、顶部或底部飞出。协同效果可以从jill视频上的给定位置消失,并重新出现在jack视频上对应的附近位置。因此,数据268可以包括由面部识别逻辑识别的jill的嘴的位置,使得当接吻动画出现在jack的视频上时,它看起来是源于尽可能接近其在jill视频中消失的点。
173.在另一个示例中,接吻动画的路径可能取决于jill的嘴和jack的脸颊的位置,看起来在视频会议用户界面中所看到的这些位置之间采取最短的路径。因此,jill的设备可以传输标识jill的嘴的位置的数据268,且jack的设备可以传输标识jack脸颊的位置的数据268。接吻动画的路径可以由jack和jill的相应视频会议应用独立地来确定,或者可以由中间通信服务器确定。
174.数据268还可以包括定时信息,允许效果同时从jill的视频中消失并重新出现在jack的视频中。
175.在其他示例中,数据268可以包括:用于同步目的的定时数据、与单人或多人游戏的游戏状态相关的信息、特定于应用的命令、或者可用于应用协同效果的任何其他类型的数据。
176.数据268可以是不由协同活动协议预定义的通用格式。可替代地,协同活动协议可以直接支持许多高级服务(例如,游戏中的回合谈判、领导选举等),这些高级服务由来自不同提供商的协同效果共同使用。在这种情况下,数据268可以以与要应用的特定服务相关联的预定义格式来格式化。当服务器或接收客户端识别出数据268是与特定服务相关联的预定义格式时,系统可以调用该服务,同时向该服务指定数据268以向效果提供该服务的功能。
177.在一些情况下,可以在消息260中明确提供数据268,并且可以将数据推送到接收客户端设备。作为替代,字段268可以指定存储数据的位置,并且接收客户端设备可以在接收到消息260时(或者稍后,如根据需要)从该位置提取数据。
178.数据流和示例性方法
179.图3a-图3c描绘了示例性数据流图,该示例性数据流图描绘各种效果应用场景中各种设备(如图2a中所描绘的那些设备)之间的信息交换。
180.如图3a所示,发起客户端设备202-1可以传输指令302来初始化或开始非发起客户端设备202-2的协同活动。指令302可以是发起消息250的形式,如图2b中所描绘的发起消息。指令302可以由发起客户端设备202-1的应用响应于确定应该应用协同效果而生成。该确定可以由界面中的用户手动应用协同效果(例如,选择协同效果并指示应用来应用它)而产生、基于当应用检测到某些条件适用时协同效果的自动应用等。
181.在接收到指令302时,通信服务器可以识别指令302指向的一个或更多个非发起用户设备(例如,基于发起消息250中的uid字段256),并且可以将指令转发给所识别的设备。
182.在接收之后,非发起客户端设备202-2可以检查以确定是否有可能应用协同效果(例如,通过确定本地设备是否具有针对协同效果最新的缓存逻辑)。可选地,非发起客户端设备可以显示提示,该提示允许设备的用户授权或取消协同效果的应用。
183.假设非发起客户端设备202-2确定可以应用效果,则非发起客户端设备202-2可以将确认304发送回通信服务器218。通信服务器218可以将确认中继到最初发送指令302的发起客户端设备202-1。
184.如果识别了不止一个非发起客户端设备,则通信服务器可以抑制向发起客户端设备202-1传输确认304,直到全部非发起客户端设备都已经确认它们准备好开始协同效果。当协同效果的所有方都已经检查为准备好时,通信服务器218可以可选地向非发起客户端设备发信号。
185.非发起客户端设备202-2可以在接收到指令302时立即实例化、初始化或开始协同效果。可替代地,每个非发起客户端设备202-2可以发信号通知其愿意实例化、初始化或开始协同效果,但是可以等待直到全部受影响的非发起客户端设备都已经检查为准备好才这样做。在一些实施例中,协同效果可以延迟某个预定的或用户可指定的时间量,可以在触发条件发生时应用,或者可以在接收到后续消息(如第一api调用306)时应用,以及其他可能性等等。
186.一旦发起客户端设备202-1已经接收到确认304,协同效果就准备好被应用。发起客户端设备202-1和非发起客户端设备202-2可以通过api调用306、310交换数据(例如,通过经由通信服务器218交换的数据消息260)。如果api调用306、310以可靠模式传输,则接收api调用306、310的设备可以用确认308来响应该调用。服务器218可以使用确认308来确定是否重传api调用306、308。可选地,当接收到确认时,服务器218可以将确认中继回发起api调用306、310的设备。
187.图3b描绘了一个示例,其中非发起设备愿意应用协同效果,但是没有应用该效果所需的全部信息(例如,非发起设备没有本地缓存的用于实现协同效果的逻辑的副本)。在这种情况下,非发起客户端设备202-2响应于接收到指令302而传输延迟请求320。服务器218可以可选地通知发起客户端202-1已经请求了延迟;可替代地,服务器218可以简单地等待,直到延迟被解决,然后向发起客户端202-1报告关于协同效果的状态。
188.在传输延迟请求320之后,非发起客户端202-2可以传输对任何缺失的协同效果数据的请求322。可替代地,该请求可以是延迟请求320的一部分,或者可以通过延迟请求320的存在从服务器218推断出。作为响应,服务器218可以从其本地协同效果库或从远程位置检索请求322中指定的缺失数据(或与协同效果相关联的全部数据)。服务器218然后可以将协同效果数据324传输到非发起客户端202-2。可替代地,服务器218可以传输可以从中检索数据的位置,并且非发起客户端202-2可以从指定位置检索数据。
189.在应用协同效果数据之后,非发起客户端202-2可以传输非发起客户端202-2准备好(或者已经)发起协同效果的指示326。服务器218可以向发起客户端202-1传输指示326,之后发起客户端202-1和非发起客户端202-2可以如上所述交换数据。
190.图3c描绘了一个示例,其中非发起设备拒绝应用协同效果。拒绝可以是出于多种原因,比如:如果非发起客户端202-2不具有应用该协同效果所必需的数据并且无法获取该数据;如果非发起设备202-2的用户明确取消了该协同效果的应用或者已经指定了指示不应该应用该协同效果的偏好;如果非发起客户端202-2上的应用204-2不支持该协同效果的应用;非发起客户端没有足够的可用资源来应用该协同效果;等等。如果协同效果的应用在非发起客户端202-2被拒绝,则拒绝消息330可以被传输到服务器218并被中继到发起客户端202-1。作为响应,发起客户端202-1可以取消协同效果的应用。
191.如果协同效果要应用于多个非发起客户端,则在一个或更多个客户端拒绝该效果可以或者不可以导致在全部客户端取消该效果。在一些实施例中,某些客户端可以被标记
为必要的,而其他客户端是可选的;可选客户端处的取消不会导致效果在剩余客户端被取消,但是必要客户端处的取消会导致效果在剩余客户端被取消。在其他实施例中,效果可以应用于没有拒绝该效果的应用的任何用户。在另外其他实施例中,效果可以被应用,除非预定阈值数量或比例的客户拒绝应用该效果。
192.接下来,结合图4a-图4b描述了用于基于图像搜索应用协同效果的示例性逻辑400。图4a-图4b将所描绘的逻辑块组织成各种逻辑组(例如,指令接收逻辑404、指令转发逻辑408等)。在一些实施例中,可以在如图2a所示的通信服务器218上提供这些逻辑模块,尽管应当理解这种配置不是必需的。全部模块可以在同一设备中实现,或者可以跨任意数量的设备分布。模块的各种组合可以在给定的设备上使用,或者单独模块的逻辑可以由不同的设备来执行。
193.处理可以开始于框402,其中系统接收关于协同活动或交互的数据。例如,数据可以包括用于视频会议的视频数据、用于多人游戏的游戏数据、用于显示相册的图形数据、关于在共享阅读体验中使用的书籍内容的数据等。系统可以识别与协同活动相关联的一个或更多个客户端设备。
194.处理然后可以移交给指令接收逻辑404。在框406,指令接收逻辑404可以使(engage)网络接口来接收指令。网络接口可以在实时通信(rtc)信道上监听指令。指令可以是发起消息的形式,如结合图2b所描述的。指令可以源自发起客户端,并且可以指示系统在非发起客户端上发起与框402中所引用的活动相关的协同效果。
195.处理然后可以移交给指令转发逻辑408。在框410,指令转发逻辑408可以使网络接口来经由rtc信道将指令转发给指令中识别的非发起客户端设备。
196.处理然后可以移交给协定(agreement)接收逻辑412。可选地,协定接收逻辑412可以通过,例如,将指令重传到相应客户端直到该客户端确认指令的接收或传输响应消息来保证将指令传递到非发起客户端(框412-414)。
197.响应于该指令,非发起客户端可以在其rtc信道上用几种不同类型的消息之一进行响应。在框418,系统可以确定响应是否是对协同效果已经或将要在非发起客户端开始的确认。如果框418处的确定是“是(yes)”,则处理可以移交给协定转发逻辑436(图4b)。
198.另一方面,如果框418处的确定是“否(no)”,则处理可以前进到框420,并且系统可以确定消息是否是对协同效果的拒绝。如果是,则处理前进到框422,其中系统可以将拒绝转发回发起客户端,如上所述发起客户端可以取消协同效果的应用,或者可以将协同效果应用到非发起客户端的子集。然后处理可以结束。
199.如果框420处的确定是“否”,则系统可以前进到框426,并确定消息是否是延迟请求。如果是,在框428,系统可以(可选地)向发起客户端设备转发延迟请求的通知。如果延迟请求或后续消息请求与协同效果相关的数据(框430),则在框432,系统可以从本地储存库检索相关数据,或者可以识别保存数据的远程位置。系统可以在rtc信道上将数据和/或位置信息转发给请求设备。
200.在框434,系统可以接收对延迟请求的确认或拒绝。如果消息是拒绝(例如,非发起客户端在框432接收到数据并确定其不具有运行协同效果所必需的资源或足够最新的应用版本),则处理可以返回到框422,并且系统可以如上所述处理拒绝。如果消息是效果已经或将要开始的确认,则处理可以移交给协定转发逻辑436(图4b)。
201.框426-434可以一起组成延迟逻辑424。
202.转到图4b,协定转发逻辑436可以在框438处可操作来传输非发起客户端已经开始或愿意开始协同效果的确认。该确认可以由网络接口在rtc信道上传输。
203.在发起客户端设备和非发起客户端设备都开始了协同效果之后,设备可以交换与协同效果相关的信息。因此,在框432,数据接收逻辑430可以接收包含与数据相关联的api调用的消息。例如,该消息可以是数据消息,如图2c中所描绘的数据消息。该消息可以由网络接口在与发送设备相关联的rtc信道上接收。发送设备可以是发起客户端,也可以是非发起客户端。处理然后可以移交给数据转发逻辑434。
204.在框436,数据转发逻辑434可以确定在框432接收的消息是否调用与协同协议(即,定义效果协同逻辑220和/或在系统中交换的消息的格式的协议)相关联的高级预定义服务。高级服务包括可能被多种不同效果要求的常用功能,因此该常用功能通过协同活动协议以标准化方式(典型地在通信服务器218上)实现。转发逻辑434可以分析包括api调用的消息,以确定例如api调用是否与服务相关联,或者消息是否包括与服务相关联的预定义格式的数据。
205.如果数据转发逻辑434确定消息调用高级服务,则在框438,系统可以可选地执行与该服务相关联的本地动作。例如,如果高级服务涉及协商在多人游戏中哪个客户端设备将进行下一个回合,或者在单人游戏中哪个设备将进行下一轮,则系统可以在本地选择玩家。如果服务涉及记分,则系统可以查询本地存储的游戏状态(例如,基于在框402接收的活动数据)并更新分数。高级服务的其他示例包括让步一个回合(通过用户的明确动作主动地让步,或者因条件的发生而被动地让步)、执行领导选举(例如,在不同设备上的游戏状态之间存在矛盾的情况下,确定将以哪个客户端的游戏状态为准)等。
206.在某些情况下,系统可能无法执行与高级服务相关的全部动作(例如,当系统没有关于协同活动状态的全部必要信息时)。在这种情况下,系统可以将消息标记为要在接收客户端设备上实现的高级服务,可以从所涉及的客户端设备请求附加信息,和/或可以生成要在接收者客户端设备上执行的指令,以便执行该服务。
207.在框440,系统可以将api调用和/或与服务相关的任何指令转发给在框432接收的消息的接收者。
208.在框442,系统可以确定消息是以可靠模式还是不可靠模式发送(例如,如在框432接收的数据消息中的标志所指定的)。如果模式是不可靠模式,则系统可以返回到框432并等待新的数据消息。
209.如果模式是可靠模式,则系统可以在框444-450等待预定的时间量,然后确定是否已经接收到对消息的确认。如果是,系统可以可选地将确认转发给发送客户端(框448)。如果没有接收到确认,系统可以重传在框440原始传输的信息(框450),然后返回到框444等待另一预定时间量。如果框444-450处的循环重复超过预定的时间量或预定的迭代次数,则系统可以确定传输失败,并且可以通知发送客户端设备消息传输失败。
210.可选地,可以关闭数据传输失败的运行的协同效果。类似地,系统可以从发起客户端设备或非发起客户端设备接收指示协同效果已经完成(或者以其他方式在设备上终止,如果协同效果在执行期间失败,可能就是这种情况)的消息。在这些情况下,系统可以执行关闭和清理过程,如通知运行协同效果的其他客户端该效果已经终止。
211.通信系统概述
212.这些示例可以由本地、客户端设备或远程(例如,远程服务器)提供的通信系统来实现。图5a-图5c描绘了通信系统的各种示例,并在下面更详细地讨论。
213.图5a描绘了示例性集中式通信系统500,其中诸如上述的功能被集成到通信服务器中。集中式系统500可以在单个计算实体中实现通信服务的一些或全部结构和/或操作,如完全在单个集中式服务器设备526内实现。
214.通信系统500可以包括计算机实现的系统,该系统具有包括一个或更多个组件的软件应用。尽管图5a所示的通信系统500具有特定拓扑中的有限数量的元件,但通信系统500可以在替代拓扑中包括更多或更少的元件。
215.通信服务500通常可以被布置成接收、存储和传递消息。通信服务500可以在诸如可以在客户端设备510上执行的客户端520离线时存储消息或视频通信,并且一旦客户端可用就传递消息/通信。可替代地或附加地,客户端520可以包括社交网络功能。
216.客户端设备510可以传输寻址到接收者用户、用户账户或涉及接收客户端设备510的其他标识符的消息。在示例性实施例中,每个客户端设备510及其相应的通信客户端520与通信服务500的一个或多个特定用户相关联。在一些实施例中,客户端设备510可以是诸如智能手机的蜂窝设备,并且可以基于与每个客户端设备510相关联的电话号码被通信服务500识别。在一些实施例中,每个通信客户端可以与向通信服务500注册的用户账户相关联。一般来说,每个通信客户端可以通过用于接收消息的各种技术来寻址。虽然在一些实施例中,客户端设备510可以是蜂窝设备,但是在其他实施例中,一个或更多个客户端设备510可以是个人计算机、平板设备、任何其他形式的计算设备。
217.客户端510可以包括一个或更多个输入设备512和一个或更多个输出设备518。输入设备512可以包括例如麦克风、键盘、照相机、电子笔、触摸屏和用于接收包括消息数据、请求、命令、用户界面交互、选择和其他类型输入的输入的其他设备。输出设备518可以包括扬声器、诸如监视器或触摸屏的显示设备以及用于向通信系统500呈现界面的其他设备。
218.客户端510可以包括存储器519,存储器519可以是非暂时性计算机可读存储介质,如硬盘驱动器、固态驱动器、闪存、只读存储器或随机存取存储器中的一种或其组合。存储器519可以存储输入514的表示和/或输出516的表示、以及一个或更多个应用。例如,存储器519可以存储允许用户与社交网络服务交互的通信客户端520和/或社交网络客户端。
219.输入514可以是文本的,如在输入设备212是键盘的情况下。可替代地,输入514可以是音频记录,如在输入设备512是麦克风的情况下。因此,输入514可以经受自动语音识别(asr)逻辑,以便将音频记录转换成可由通信系统500处理的文本。asr逻辑可以位于客户端设备510处(使得音频记录由客户端510本地处理,并且对应的文本被传输到通信服务器526),或者可以远程地位于通信服务器526处(在这种情况下,音频记录可以被传输到通信服务器526,并且通信服务器526可以将音频处理成文本)。其他组合也是可能的,例如,如果输入设备512是触摸板或电子笔,输入514可以是手写形式,其可以经受手写或光学字符识别分析逻辑,以便将输入512转换成可处理的文本。
220.客户端510可以被提供有用于与网络524(如互联网)通信的网络接口522。网络接口522可以以与网络524兼容的格式和/或使用与网络524兼容的协议来传输输入512,并且可以从网络524接收对应的输出516。
221.网络接口522可以通过网络524与通信服务器526通信。通信服务器526可操作来接收、存储和转发客户端之间的通信。
222.通信服务器526可以包括网络接口522、通信偏好528和通信逻辑530。通信偏好528可以包括关于一个或更多个用户和/或消息线程的一个或更多个隐私设置或其他偏好。此外,通信偏好528可以包括本文描述的逻辑的一个或更多个设置,包括默认设置。
223.通信逻辑530可以包括用于实现本发明的任何或全部上述特征的逻辑。可替代地或附加地,一些或全部特征可以在客户端510-i处实现,如通过被结合到诸如通信客户端520的应用中。
224.客户端510和/或通信服务器526的网络接口522也可以用于通过网络524与app服务器540通信。app服务器可以将软件或应用存储在app库544中,该软件或应用表示可由客户端510-i和/或通信服务器526(以及其他实体)下载的软件。app库544中的app可以完全或部分实现本文描述的实施例。在接收到下载结合示例性实施例的软件的请求时,app逻辑542可以识别app库544中的对应app,并且可以(例如,经由网络接口)将该app提供给请求该软件的实体。
225.客户端510和/或通信服务器526的网络接口522也可以用于通过网络524与社交网络服务器536通信。社交网络服务器536可以包括定义社交网络中的关连(connection)的社交网络图538或者可以与该社交网络图538交互。此外,通信服务器526可以出于各种目的(如从社交网络检索关连信息、通信历史、事件细节等)而连接到社交网络服务器536。
226.客户端510的用户可以是与社交网络服务器536交互或通信或者通过社交网络服务器536交互或通信的个人(人类用户)、实体(例如,企业、公司或第三方应用)或(例如,个人或实体的)组。社交网络服务器536可以是托管在线社交网络的网络可寻址计算系统。社交网络服务器536可以生成、存储、接收并发送社交网络数据(诸如例如,用户简档数据、概念简档数据、社交图信息或与在线社交网络相关的其他合适的数据)。社交网络服务器536可以由网络环境的其他组件直接地或经由网络524访问。
227.社交网络服务器536可以包括授权服务器(或其他合适的组件),授权服务器例如通过设置适当的隐私设置来允许用户选择加入或选择退出使他们的动作由社交网络服务器536记录或者与其他系统(例如,诸如通信服务器526的第三方系统)共享。用户的隐私设置可以确定可以记录与用户相关联的什么信息、可以如何记录与用户相关联的信息、何时可以记录与用户相关联的信息、谁可以记录与用户相关联的信息、可以与谁共享与用户相关联的信息以及可以记录或共享与用户相关联的信息的目的。授权服务器可用于在适当时通过阻止、数据散列、匿名化或其他合适的技术来实施社交网络服务器536的用户的一个或更多个隐私设置。
228.更具体地,在线社交网络的一个或更多个内容对象可以与隐私设置相关联。对象的隐私设置(或“访问设置”)可以以任何合适的方式——诸如例如与对象相关联地、在授权服务器上用索引、以另一种合适的方式、或其任何组合——被存储。对象的隐私设置可以指定可以如何使用在线社交网络来访问(例如,查看或分享)对象(或与对象相关联的特定信息)。在对象的隐私设置允许特定用户访问该对象的场合,该对象可以被描述为相对于该用户是“可见的”。作为示例而不是作为限制,在线社交网络的用户可以指定用于用户简档页面的隐私设置,其识别可以访问用户简档页面上的工作经历信息的用户集合,因而排除其
他用户访问该信息。在特定实施例中,隐私设置可以指定不应当被允许访问与对象相关联的某些信息的用户的“黑名单(blocked list)”。换句话说,黑名单可以指定一个或更多个用户或实体,对象对这些用户或实体是不可见的。作为示例而不是作为限制,用户可以指定不可以访问与用户相关联的相册的用户集合,因而排除那些用户访问相册(同时也可能允许不在该用户集合内的某些用户访问相册)。
229.在特定实施例中,隐私设置可以与社交网络图538的特定元素相关联。社交图元素(例如节点或边)的隐私设置可以指定可以如何使用在线社交网络来访问社交图元素、与社交图元素相关联的信息、或与社交图元素相关联的内容对象。作为示例而不是作为限制,对应于特定照片的特定概念节点可以具有指定照片只能由在照片中标记的用户及他们的朋友访问的隐私设置。在特定实施例中,隐私设置可以允许用户选择加入或选择退出使他们的动作由社交网络服务器536记录或者与其他系统共享。在特定实施例中,与对象相关联的隐私设置可以指定允许访问或拒绝访问的任何合适的粒度。作为示例而不是作为限制,可以为特定用户(例如,只有我、我的室友和我的老板)、在特定分离度内的用户(例如,朋友或朋友的朋友)、用户组(例如,游戏俱乐部、我的家人)、用户网络(例如,特定雇主的雇员、特定大学的学生或校友)、全部用户(“公众”)、无用户(“私人的”)、第三方系统的用户、特定应用(例如,第三方应用、外部网站)、其他合适的用户或实体、或其任何组合来指定访问或访问的拒绝。尽管本公开描述了以特定方式使用特定隐私设置,但是本公开设想了以任何合适的方式使用任何合适的隐私设置。
230.响应于来自用户(或其他实体)的对存储在数据储存器中的特定对象的请求,社交网络服务器536可以向数据储存器发送对该对象的请求。该请求可以识别与该请求相关联的用户。所请求的数据对象只有在授权服务器基于与该对象相关联的隐私设置确定该用户被授权访问该对象时才可以被发送给该用户(或者该用户的客户端系统510)。如果请求用户未被授权访问该对象,则授权服务器可以阻止所请求的对象从数据储存器中被检索,或者可以阻止所请求的对象被发送给用户。在搜索查询上下文中,只有在查询用户被授权访问对象时才可以将该对象生成为搜索结果。换句话说,对象必须具有对查询用户可见的可见性。如果对象具有对用户不可见的可见性,则可以从搜索结果中排除该对象。
231.在一些实施例中,可以出于各种目的使用定位标准(targeting criteria)来识别社交网络的用户。用于识别并定位用户的定位标准可以包括社交网络服务器536上的明确的、陈述的用户兴趣或者用户与社交网络服务器536上的节点、对象、实体、品牌或页面的明确关连。另外或作为替代方案,这种定位标准可以包括隐含的或推断的用户兴趣或关连(其可以包括分析用户的历史、人口统计、社交或其他活动、朋友的社交或其他活动、订阅或(例如,基于共享的兴趣、关连或事件)与用户相似的其他用户的任何前述内容)。特定实施例可以利用平台定位,这可以涉及平台和“赞(like)”印象数据;上下文的信号(例如,“谁现在在查看或最近已经查看了可口可乐的页面?”);轻量级关连(例如,“签到”);类似关连(connection lookalike);粉丝;提取的关键词;emu广告;推理广告;系数、亲和力或其他社交图信息;朋友的朋友关连;锁定(pinning)或提升(boosting);交易;民意调查(poll);家庭收入、社交集或组;在图像或其他媒体中检测到的产品;社交图或开放图(open-graph)边类型;地理预测;简档或页面的视图;状态更新或其他用户帖子(对其的分析可能涉及自然语言处理或关键词提取);事件信息;或者协作过滤。识别并定位用户也可以在适
当的情况下涉及隐私设置(诸如用户选择退出)、数据散列或数据匿名化。
232.图5a中所描绘的集中式实施例可非常适合作为新系统或作为现有系统的升级来部署,因为用于实现示例性实施例的逻辑被结合到通信服务器526中。相比之下,图5b描绘了示例性分布式通信系统550,其中用于实现示例性实施例的功能是分布式的并且可从通信服务器远程访问。分布式通信系统550的示例包括客户端-服务器架构、3层架构、n层架构、紧密耦合或集架构、对等架构、主从架构、共享数据库架构以及其他类型的分布式系统。
233.图5b中描绘的许多组件与图5a中的组件相同,并且为了简洁起见,这里不再重复对这些元件的描述(为了便于讨论,从图中省略了app服务器540,尽管应当理解,该实施例也可以采用app服务器540)。集中式实施例和分布式实施例之间的主要区别在于增加了单独的处理服务器552,该处理服务器552托管用于实现示例性实施例的逻辑530。处理服务器552可以不同于通信服务器526,但是可以直接或通过网络524与通信服务器526通信,以向通信服务器526提供逻辑530和逻辑534的功能。
234.图5b所描绘的实施例可能特别适合于允许示例性实施例与现有的通信系统一起部署,例如当替换现有的通信服务器很困难或不合乎需要时。另外,在一些情况下,通信服务器526可能具有有限的资源(例如,处理资源或存储器资源),这限制或排除了附加枢轴功能的添加。在这种情形中,本文描述的能力仍然可以通过单独的处理服务器552来提供。
235.在另外其他的实施例中,逻辑532可以在客户端510-i本地提供,例如作为通信客户端520的一部分。在这些实施例中,每个客户端510-i自己做出关于哪些消息属于哪个线程、以及如何更新显示和发出通知的确定。因此,根据本地设置,不同的客户端510-i可以不同地显示相同的对话(例如,相同的消息可以被分配给不同的线程,或者相似的线程可以具有不同的父级或突出显示)。
236.图5c示出了社交网络图538的示例。在示例性实施例中,社交网络服务可以将一个或更多个社交图538存储在一个或更多个数据储存器中作为经由社交网络服务的社交图数据结构。
237.社交图538可以包括多个节点,如用户节点554和概念节点556。社交图228还可以包括关连节点的边558。社交图228的节点和边可以作为数据对象被存储在例如数据储存器(如社交图数据库)中。这种数据储存器可以包括社交图228的节点或边的一个或更多个可搜索或可查询的索引。
238.社交图538可以由社交网络服务器536、客户端系统510、第三方系统(例如,翻译服务器)或任何其他适用于合适应用的经批准的系统或设备来访问。
239.用户节点554可以对应于社交网络系统的用户。用户可以是与社交网络系统交互或通信或者通过社交网络系统交互或通信的个人(人类用户)、实体(例如,企业、公司或第三方应用)或(例如,个人或实体的)组。在示例性实施例中,当用户向社交网络系统注册账户时,社交网络系统可以创建对应于用户的用户节点554,并将用户节点554存储在一个或更多个数据储存器中。本文描述的用户和用户节点554在适当的情况下可以指注册的用户和与注册的用户相关联的用户节点554。另外或作为替代方案,在适当的情况下,本文描述的用户和用户节点554可以指没有向社交网络系统注册的用户。在特定实施例中,用户节点554可以与由用户提供的信息或由各种系统(包括社交网络系统)收集的信息相关联。作
为示例而不是作为限制,用户可以提供他们的姓名、简档图片、联系信息、出生日期、性别、婚姻状况、家庭状况、职业、教育背景、偏好、兴趣或其他人口统计信息。在特定实施例中,用户节点554可以与对应于与用户相关联的信息的一个或更多个数据对象相关联。在特定实施例中,用户节点554可以对应于一个或更多个网页。用户节点554可以与社交网络系统中用户的唯一用户标识符相关联。
240.在特定实施例中,概念节点556可以对应于概念。作为示例而不是作为限制,概念可以对应于地点(诸如例如,电影院、餐馆、地标或城市);网站(诸如例如,与社交网络服务相关联的网站或与web应用服务器相关联的第三方网站);实体(诸如例如,个人、企业、组、运动队或名人);资源(诸如例如,音频文件、视频文件、数字照片、文本文件、结构化文档或应用),其可以位于社交网络系统内或外部服务器(例如web应用服务器)上;不动产或知识产权(诸如例如,雕塑、绘画、电影、游戏、歌曲、想法、照片或书面作品);游戏;活动;想法或理论;另一个合适的概念;或者两个或更多个这样的概念。概念节点556可以与由用户提供的概念的信息或由各种系统(包括社交网络系统)收集的信息相关联。作为示例而不是作为限制,概念的信息可以包括名称或标题;一个或更多个图像(例如,书籍的封面的图像);位置(例如,地址或地理位置);网站(其可以与url相关联);联系信息(例如,电话号码或地址);其他合适的概念信息;或者这样的信息的任何合适的组合。在特定实施例中,概念节点556可以与一个或更多个数据对象相关联,该一个或更多个数据对象对应于与概念节点556相关联的信息。在特定实施例中,概念节点556可以对应于一个或更多个网页。
241.在特定实施例中,社交图538中的节点可以表示网页(其可以被称为“简档页面”)或者由网页表示。简档页面可以由社交网络系统托管或是社交网络系统可访问的。简档页面也可以在与第三方服务器相关联的第三方网站上被托管。作为示例而不是作为限制,对应于特定外部网页的简档页面可以是特定外部网页,并且简档页面可以对应于特定概念节点556。简档页面可以由其他用户的全部或选定子集可查看。作为示例而不是作为限制,用户节点554可以具有相应的用户简档页面,其中相应的用户可以添加内容、作出声明或以其他方式表达他或她自己。企业页面可以包括商业实体的用户简档页面。作为另一示例而不是作为限制,概念节点556可以具有对应的概念简档页面,其中一个或更多个用户可以添加内容、作出声明或表达他们自己,特别是关于对应于概念节点556的概念。
242.在特定实施例中,概念节点556可以表示由第三方系统托管的第三方网页或资源。第三方网页或资源可以包括表示动作或活动的内容、可选择的图标或其他图标或其他可交互对象(其可以例如用javascript、ajax或php代码实现)、以及其他元素。作为示例而不是作为限制,第三方网页可以包括可选择的图标(例如“赞”、“签到(check in)”、“吃”、“推荐”)或其他合适的动作或活动。查看第三方网页的用户可以通过选择图标之一(例如,“吃”)来执行动作,使客户端系统向社交网络系统发送指示用户的动作的消息。响应于该消息,社交网络系统可以在对应于用户的用户节点554和对应于第三方网页或资源的概念节点556之间创建边(例如,“吃”边),并将边558存储在一个或更多个数据储存器中。
243.在特定实施例中,社交图538中的一对节点可以通过一条或更多条边558关连到彼此。关连一对节点的边558可以表示在该对节点之间的关系。在特定实施例中,边558可以包括或表示对应于在一对节点之间的关系的一个或更多个数据对象或属性。作为示例而不是作为限制,第一用户可以指示第二用户是第一用户的“朋友”。响应于该指示,社交网络系统
可以向第二用户发送“朋友请求”。如果第二用户确认“朋友请求”,则社交网络系统可以在社交图538中创建将第一用户的用户节点554关连到第二用户的用户节点554的边558,并将边558作为社交图信息存储在一个或更多个数据储存器中。在图5c的示例中,社交图538包括指示用户“amanda”和用户“dorothy”的用户节点554之间的朋友关系的边558。尽管本公开描述或示出了关连特定用户节点554的具有特定属性的特定边558,但是本公开设想了关连用户节点554的具有任何合适属性的任何合适的边558。作为示例而不是作为限制,边558可以表示友谊、家庭关系、企业或雇佣关系、粉丝关系、关注者(follower)关系、访问者关系、订购者关系、上级/下级关系、互惠关系、非互惠关系、另一种合适类型的关系、或两种或更多种这样的关系。此外,尽管本公开一般将节点描述为被关连,但是本公开也将用户或概念描述为被关连。在本文,对被关连的用户或概念的引用在适当的情况下可以指在社交图538中由一条或更多条边558关连的对应于那些用户或概念的节点。
244.在特定实施例中,在用户节点554和概念节点556之间的边558可以表示由与用户节点554相关联的用户对与概念节点556相关联的概念执行的特定动作或活动。作为示例而不是作为限制,如图5c所示,用户可以“喜欢”、“参加”、“播放”、“收听”、“烹饪”、“工作于”或“观看”概念,其中每个可以对应于边类型或子类型。对应于概念节点556的概念简档页面可以包括例如可选择的“签到”图标(诸如例如,可点击的“签到”图标)或可选择的“添加到收藏夹”图标。类似地,在用户点击这些图标之后,社交网络系统可以响应于对应于相应动作的用户动作来创建“收藏夹”边或“签到”边。作为另一个示例而不是作为限制,用户(用户“carla”)可以使用特定的应用(声田(spotify),其为在线音乐应用)来收听特定的歌曲(“飘洋过海(across the sea)”)。在这种情况下,社交网络系统可以在对应于用户的用户节点554和对应于歌曲和应用的概念节点556之间创建“收听”边558和“使用”边(如图5c所示),以指示用户收听了歌曲并使用了应用。此外,社交网络系统可以在对应于歌曲和应用的概念节点556之间创建“播放”边558(如图5c所示),以指示特定的歌曲由特定的应用播放。在这种情况下,“播放”边558对应于由外部应用(声田)对外部音频文件(歌曲“飘洋过海”)执行的动作。尽管本公开描述了关连用户节点554和概念节点556的具有特定属性的特定边558,但是本公开设想了关连用户节点554和概念节点556的具有任何适当属性的任何适当边558。此外,尽管本公开描述了表示单一关系的在用户节点554和概念节点556之间的边,但是本公开设想了表示一个或更多个关系的在用户节点554和概念节点556之间的边。作为示例而不是作为限制,边558可以表示用户喜欢并使用了特定概念。可替代地,另一条边558可以表示用户节点554和概念节点556之间(如图5c所示,用户“edwin”的用户节点554和“声田”的概念节点556之间)每种类型的关系(或多个单一关系)。
245.在特定实施例中,社交网络系统可以在社交图538中的用户节点554和概念节点556之间创建边558。作为示例而不是作为限制,(诸如例如,通过使用由用户的客户端系统托管的web浏览器或专用应用)查看概念简档页面的用户可以通过点击或选择“赞”图标来指示他或她喜欢由概念节点556表示的概念,这可以使用户的客户端系统向社交网络系统发送指示用户喜欢与概念简档页面相关联的概念的消息。响应于该消息,社交网络系统可以在与用户相关联的用户节点554和概念节点556之间创建边558,如由在用户和概念节点556之间的“赞”边558所示的。在特定实施例中,社交网络系统可以将边558存储在一个或更多个数据储存器中。在特定实施例中,边558可以由社交网络系统响应于特定用户动作而自
动形成。作为示例而不是作为限制,如果第一用户上传图片、观看电影或收听歌曲,则可以在对应于第一用户的用户节点554和对应于那些概念的概念节点556之间形成边558。尽管本公开描述了以特定方式形成特定边558,但是本公开设想了以任何合适的方式形成任何合适的边558。
246.社交图538还可以包括多个产品节点。产品节点可以表示可能与特定企业相关联的特定产品。企业可以向消费者对企业服务提供产品目录,并且消费者对企业服务因此可以在社交图538中的产品内表示每个产品,其中每个产品在不同的产品节点中。产品节点可以包括与产品相关的信息,如定价信息、描述性信息、制造商信息、可用性信息和其他相关信息。例如,餐馆菜单上的每个项目可以在社交图538内用描述每个项目的产品节点来表示。产品节点可以通过边链接到提供产品的企业。当多个企业提供一个产品时,每个企业可以有一个与其对该产品的提供相关联的不同的产品节点,或者每个企业都链接到同一个产品节点。产品节点可以通过边链接到已经购买、评级、拥有、推荐或查看了该产品的每个用户,其中边描述关系的性质(例如,购买、评级、拥有、推荐、查看或其他关系)。凭借所链接的商家企业,每个产品节点可以与图形id和相关联的商家id相关联。因此,可以通过在社交图538内检索链接到企业的用户节点的可用产品节点,将可从企业获得的产品传送给用户。产品节点的信息可以由社交网络系统操纵作为产品对象,该产品对象封装了关于被引用产品的信息。
247.因此,社交图538可用于推断社交网络系统的两个或更多个用户的共享兴趣、共享体验或其他共享或共同属性。例如,各自具有到社交图538中所表示的共同企业、产品、媒体项目、机构或其他实体的边的两个或更多个用户可以指示与该实体的共享关系,该共享关系可以用于建议为一个或更多个用户定制社交网络系统(包括消息传递系统)的使用。
248.上面描述的实施例可以由消息传递架构来执行,其示例接下来将参考图6来描述。
249.消息传递架构
250.图6示出了实现消息传递服务600的各种功能的多个服务器的实施例。将认识到,在消息传递服务600的各种实施例中可以使用不同的工作和功能分布。
251.消息传递服务600可以包括域名前端602。域名前端602可以被分配与域名系统(dns)中的消息传递服务600相关联的一个或更多个域名。域名前端602可以接收传入连接,并将连接分配给提供各种消息传递服务的服务器。
252.消息传递服务602可以包括一个或更多个聊天服务器604。聊天服务器604可以包括前端服务器,用于接收和传输用户到用户的消息传递更新,如聊天消息。基于工作负载平衡,域名前端602可以将传入连接分配给聊天服务器604。
253.消息传递服务600可以包括后端服务器608。后端服务器608可以执行支持前端聊天服务器604的聊天操作的专门任务。可以使用多个不同类型的后端服务器608。将认识到,多种类型的任务到不同后端服务器608的分配在不同的实施例中可以有所变化。在一些实施例中,由专用服务器提供的一些后端服务可以被组合到单个服务器或服务器集合上,每个服务器在本文描述的实施例中执行不同服务器之间划分的多个任务。类似地,在一些实施例中,本文描述的一些专用后端服务器的任务可以在不同服务器组的不同服务器之间划分。
254.消息传递服务600可以包括一个或更多个离线存储服务器610。一个或更多个离线
存储服务器610可以存储当前离线消息传递客户端的消息传递内容,以备消息传递客户端重新连接时使用。
255.消息传递服务600可以包括一个或更多个会话服务器612。一个或更多个会话服务器612可以维护连接的消息传递客户端的会话状态。
256.消息传递服务600可以包括一个或更多个存在服务器(presence server)614。一个或更多个存在服务器614可以维护消息传递服务600的存在信息。存在信息可以对应于特定于用户的信息,该信息指示给定用户是否具有在线消息传递客户端并可用于聊天、是否具有在线消息传递客户端但是当前远离它、是否没有在线消息传递客户端、以及任何其他存在状态。
257.消息传递服务600可以包括一个或更多个推送存储服务器616。一个或更多个推送存储服务器616可以缓存推送请求,并将推送请求传输给消息传递客户端。推送请求可用于唤醒消息传递客户端,通知消息传递客户端消息传递更新可用,以及以其他方式执行服务器侧驱动的与消息传递客户端的交互。
258.消息传递服务600可以包括一个或更多个组服务器618。一个或更多个组服务器618可以维护组列表,将用户添加到组,从组中移除用户,以及执行组聊天消息的接收、缓存和转发。
259.消息传递服务600可以包括一个或更多个阻止列表服务器620。一个或更多个阻止列表服务器620可以维护特定于用户的阻止列表,特定于用户的传入阻止列表为每个用户指示禁止向该用户传输消息的一个或更多个其他用户。可替代地或附加地,一个或更多个阻止列表服务器620可以维护特定于用户的传出阻止列表,该列表为每个用户指示该用户被禁止向其传输消息的一个或更多个其他用户。将认识到,传入阻止列表和传出阻止列表可以组合存储在例如数据库中,其中传入阻止列表和传出阻止列表代表同一阻止信息储存库的不同视角。
260.消息传递服务600可以包括一个或更多个最后看到的信息服务器622。一个或更多个最后看到的信息服务器622可以接收、存储和维护指示最后看到的位置、状态、消息传递客户端、以及最后看到的用户到消息传递服务600的连接的其他元素的信息。
261.消息传递服务600可以包括一个或更多个密钥服务器624。一个或更多个密钥服务器可以托管用于公钥/私钥加密通信的公钥。
262.消息传递服务600可以包括一个或更多个简档照片服务器626。一个或更多个简档照片服务器626可以存储消息传递服务600的多个用户的简档照片并可用于这些简档照片的检索。
263.消息传递服务600可以包括一个或更多个垃圾邮件记录服务器628。一个或更多个垃圾邮件记录服务器628可以记录已知的和可疑的垃圾邮件(例如,不想要的消息,尤其是那些促销性质的消息)。在一些实施例中,一个或更多个垃圾邮件记录服务器628可操作来分析消息以确定它们是否是垃圾邮件,并对可疑的垃圾邮件发送者(发送垃圾邮件消息的用户)执行惩罚措施。
264.消息传递服务600可以包括一个或更多个统计服务器630。一个或更多个统计服务器可以编译和存储与消息传递服务600的操作和消息传递服务600的用户的行为相关的统计信息。
265.消息传递服务600可以包括一个或更多个web服务器632。一个或更多个web服务器632可以与web浏览器进行超文本传输协议(http)连接和超文本传输协议安全(https)连接。
266.消息传递服务600可以包括一个或更多个聊天活动监控服务器634。一个或更多个聊天活动监控服务器634可以监控用户的聊天,以确定消息传递服务600的用户的未授权或不鼓励的行为。一个或更多个聊天活动监控服务器634可以与垃圾邮件记录服务器628和阻止列表服务器620协同工作,其中一个或更多个聊天活动监控服务器634识别垃圾邮件或其他不鼓励的行为,并且向垃圾邮件记录服务器628提供垃圾邮件信息,并且在适当的情况下向阻止列表服务器620提供阻止信息。
267.消息传递服务600可以包括一个或更多个同步服务器636。一个或更多个同步服务器636可以将消息传递系统500与来自消息传递客户端的联系信息(如移动电话上的地址簿)同步,以确定消息传递服务600中用户的联系。
268.消息传递服务600可以包括一个或更多个多媒体服务器638。一个或更多个多媒体服务器可以存储在消息传递客户端之间传输的多媒体(例如,图像、视频、音频)、为离线端点缓存的多媒体,并且可以执行多媒体的代码转换。
269.消息传递服务600可以包括一个或更多个支付服务器640。一个或更多个支付服务器640可以处理来自用户的支付。一个或更多个支付服务器640可以连接到外部第三方服务器以进行支付。
270.消息传递服务600可以包括一个或更多个注册服务器642。一个或更多个注册服务器642可以注册消息传递服务600的新用户。
271.消息传递服务600可以包括一个或更多个语音中继服务器644。一个或更多个语音中继服务器644可以在消息传递客户端之间中继互联网协议语音(voip)语音通信,以执行voip呼叫。
272.上述方法可以体现为计算机可读介质上的指令或计算架构的一部分。图7示出了适于实现如前所述的各种实施例的示例性计算架构700的实施例。在一个实施例中,计算架构700可以包括电子设备(如计算机701)或作为其一部分来实现。实施例不限于这种上下文。
273.如本技术中所使用的,术语“系统”和“组件”旨在指代计算机相关的实体,或者是硬件、硬件和软件的组合、软件、或者是执行中的软件,它们的示例由示例性计算架构700提供。例如,组件可以是,但不限于,运行在处理器上的进程、处理器、硬盘驱动器、多个存储驱动器(光和/或磁存储介质的存储驱动器)、对象、可执行文件、执行线程、程序和/或计算机。举例来说,运行在服务器上的应用和服务器都可以是组件。一个或更多个组件可以驻留在进程和/或执行线程内,并且一个组件可以位于一台计算机上和/或分布在两台或更多台计算机之间。此外,组件可以通过各种类型的通信介质彼此通信地耦合,以协同操作。协同可以涉及单向或双向的信息交换。例如,组件可以传递以通过通信介质传递的信号的形式的信息。信息可以被实现为分配给各种信号线的信号。在这样的分配中,每个消息都是一个信号。然而,另外的实施例可以替代地采用数据消息。这种数据消息可以通过各种连接发送。示例性连接包括并行接口、串行接口和总线接口。
274.计算架构700包括各种常见的计算元件,如一个或更多个处理器、多核处理器、协
处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(i/o)组件、电源等。然而,实施例不限于由计算架构700实现。
275.如图7所示,计算架构700包括处理单元702、系统存储器704和系统总线706。处理单元702可以是各种市场上可买到的处理器中的任何一种,包括但不限于和处理器;应用、嵌入式和安全处理器;和和处理器;ibm和单元处理器;core(2)core(2)和处理器;以及类似的处理器。双微处理器、多核处理器和其他多处理器架构也可以用作处理单元702。
276.系统总线706提供系统组件(包括但不限于系统存储器704)到处理单元702的接口。系统总线706可以是几种类型总线结构中的任何一种,其还可以使用各种商业上可获得的总线架构中的任何一种互连到存储器总线(具有或不具有存储器控制器)、外围总线和本地总线。接口适配器可以经由插槽架构连接到系统总线706。示例插槽架构可以包括但不限于加速图形端口(agp)、卡总线、(扩展的)工业标准架构((e)isa)、道架构(mca)、nubus、外围组件互连(扩展的)(pci(x))、pci express、个人计算机存储卡国际协会(pcmcia),等等。
277.计算架构700可以包括或实现各种制品。一种制品可以包括存储逻辑的计算机可读存储介质。计算机可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器,等等。逻辑的示例可以包括使用任何合适类型的代码实现的可执行计算机程序指令,代码诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象代码、可视代码,等等。实施例还可以至少部分地实现为包含在非暂时性计算机可读介质中或其上的指令,这些指令可以被一个或更多个处理器读取和执行,以实现本文描述的操作的执行。
278.系统存储器704可以包括一个或更多个高速存储器单元形式的各种类型的计算机可读存储介质,如只读存储器(rom)、随机存取存储器(ram)、动态ram(dram)、双数据速率dram(ddram)、同步dram(sdram)、静态ram(sram)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存、聚合物存储器(如铁电聚合物存储器)、双向(ovonic)存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(sonos)存储器、磁卡或光卡、设备阵列(如独立磁盘冗余阵列(raid)驱动器)、固态存储器设备(例如,usb存储器、固态驱动器(ssd))、以及适于存储信息的任何其他类型的存储介质。在图7所示的图示实施例中,系统存储器704可以包括非易失性存储器708和/或易失性存储器710。基本输入/输出系统(bios)可以存储在非易失性存储器708中。
279.计算架构700可以包括以一个或更多个低速存储器单元形式的各种类型的计算机可读存储介质,包括内部(或外部)硬盘驱动器(hdd)712、从可移动磁盘716读取或向其写入的磁软盘驱动器(fdd)714、以及从可移动光盘720(例如,cd-rom或dvd)读取或向其写入的光盘驱动器718。hdd 712、fdd 714和光盘驱动器720可以分别通过hdd接口722、fdd接口724和光盘驱动器接口726连接到系统总线706。用于外部驱动器实现的hdd接口722可以包括通
用串行总线(usb)和ieee 694接口技术中的至少一种或两种。
280.驱动器和相关联的计算机可读介质提供数据、数据结构、计算机可执行指令等的易失性和/或非易失性存储。例如,多个程序模块(包括操作系统728、一个或更多个应用程序730、其他程序模块732和程序数据734)可以存储在驱动器和存储器单元708、712中。在一个实施例中,一个或更多个应用程序730、其他程序模块732和程序数据734可以包括例如消息传递系统500的各种应用和/或组件。
281.用户可以通过一个或更多个有线/无线输入设备——例如,键盘736和诸如鼠标738的指向设备——向计算机701输入命令和信息。其他输入设备可以包括麦克风、红外(ir)遥控器、射频(rf)遥控器、游戏垫、手写笔、读卡器、加密锁、指纹读取器、手套、图形输入板、操纵杆、键盘、视网膜读取器、触摸屏(例如电容性、电阻性等)、轨迹球、跟踪板、传感器、触控笔,等等。这些和其他输入设备通常通过耦合到系统总线706的输入设备接口740连接到处理单元702,但是也可以通过其他接口连接,如并行端口、ieee 694串行端口、游戏端口、usb端口、ir接口,等等。
282.监视器742或其他类型的显示设备也经由诸如视频适配器744的接口连接到系统总线706。监视器742可以在计算机701的内部或外部。除了监视器742,计算机通常还包括其他外围输出设备,如扬声器、打印机,等等。
283.计算机701可以使用经由到一个或更多个远程计算机(如远程计算机744)的有线和/或无线通信的逻辑连接在网络化环境中操作。远程计算机744可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其他公共网络节点,并且典型地包括相对于计算机701描述的许多或全部元件,尽管为了简洁起见,仅示出了存储器/存储设备746。所描绘的逻辑连接包括到局域网(lan)748和/或更大网络(例如,广域网(wan)750)的有线/无线连接。这种lan和w络环境在办公室和公司中是常见的,并且有利于企业范围的计算机网络,如内部网,全部这些网络都可以连接到全球通信网络,例如,互联网。
284.当在l络环境中使用时,计算机701通过有线和/或无线通信网络接口或适配器752连接到lan 748。适配器752可以促进到lan 748的有线和/或无线通信,lan 748也可以包括设置在其上的无线接入点,用于与适配器752的无线功能通信。
285.当在w络环境中使用时,计算机701可以包括调制解调器754,或者连接到wan 750上的通信服务器,或者具有用于通过wan 750(如通过互联网)建立通信的其他装置。调制解调器754——其可以是内置或外置的有线和/或无线设备——经由输入设备接口740连接到系统总线706。在网络化环境中,相对于计算机701描绘的程序模块或其部分可以存储在远程存储器/存储设备746中。将认识到,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他装置。
286.计算机701可操作来使用ieee 802标准系列与有线和无线设备或实体通信,如在无线通信中可操作地设置的无线设备(例如,ieee 802.13空中调制技术)。这至少包括wi-fi(或无线保真)、wimax和蓝牙
tm
无线技术、以及其他技术。因此,通信可以是与常规网络一样的预定义结构,或者仅仅是至少两个设备之间的自组织通信。wi-fi网络使用被称为ieee 802.13x(a、b、g、n等)的无线电技术,以提供安全、可靠、快速的无线连接。wi-fi网络可用于将计算机相互连接、连接到互联网、以及连接到有线网络(其使用与ieee 802.3相关的媒体
和功能)。
287.图8是描绘适于实现如前所述的各种实施例的示例性通信架构800的框图。通信架构800包括各种常见的通信元件,如发射机、接收机、收发机、无线电、网络接口、基带处理器、天线、放大器、滤波器、电源等等。然而,实施例不限于由通信架构800实现。
288.如图8所示,通信架构800包括一个或更多个客户端802和服务器804。客户端802可以实现客户端设备510。服务器804可以实现服务器设备526。客户端802和服务器804可操作地连接到一个或更多个相应的客户端数据储存器806和服务器数据储存器808,客户端数据储存器806和服务器数据储存器808可用于存储相应客户端802和服务器804本地的信息,如cookies和/或相关联的上下文信息。
289.客户端802和服务器804可以使用通信框架810在彼此之间传送信息。通信框架810可以实现任何公知的通信技术和协议。通信框架810可以被实现为分组交换网络(例如,诸如互联网的公共网络、诸如企业内部网的专用网络等)、电路交换网络(例如,公共交换电话网络)、或者分组交换网络和电路交换网络的组合(具有合适的网关和转换器)。
290.通信框架810可以实现各种网络接口,这些网络接口被布置成接受、传送通信网络、和连接到通信网络。网络接口可以被认为是输入输出接口的一种特殊形式。网络接口可以采用连接协议,包括但不限于直接连接、以太网(例如,粗、细、双绞线10/100/1000base t等)、令牌环、无线网络接口、蜂窝网络接口、ieee 802.8a-x网络接口、ieee 802.16网络接口、ieee 802.20网络接口,等等。此外,可以使用多个网络接口来与各种通信网络类型接合。例如,可以采用多个网络接口来允许通过广播、多播和单播网络进行通信。如果处理要求规定了更大的速度和容量,则分布式网络控制器架构可以类似地被用于池化、负载平衡以及以其他方式增加客户端802和服务器804所需的通信带宽。通信网络可以是有线和/或无线网络中的任何一个和组合,网络包括但不限于直接互连、安全定制连接、专用网络(例如,企业内部网)、公共网络(例如,互联网)、个人区域网(pan)、局域网(lan)、城域网(man)、作为互联网上节点的操作任务(omni)、广域网(wan)、无线网络、蜂窝网络和其他通信网络。
291.图9示出了用于多载波ofdm系统(如消息传递系统500)的设备900的实施例。设备900可以实现例如软件组件902,如参考消息传递组件逻辑600、意图确定逻辑700和组选择逻辑800所描述的。设备900也可以实现逻辑电路904。逻辑电路904可以包括物理电路,以执行针对消息传递系统600所描述的操作。如图9所示,设备900可以包括无线电接口906、基带电路908和计算平台910,尽管实施例不限于这种配置。
292.设备900可以在单个计算实体中(如完全在单个设备内)实现消息传递系统500和/或逻辑电路904的一些或全部结构和/或操作。可替代地,设备900可以使用分布式系统架构(如客户端-服务器架构、3层架构、n层架构、紧密耦合或集架构、对等架构、主从架构、共享数据库架构以及其他类型的分布式系统)在多个计算实体之间分布消息传递系统600和/或逻辑电路904的部分结构和/或操作。实施例不限于这种上下文。
293.在一个实施例中,无线电接口906可以包括适于传输和/或接收单载波或多载波调制信号(例如,包括互补码键控(cck)和/或正交频分复用(ofdm)符号)的组件或组件的组合,尽管实施例不限于任何特定的空中接口或调制方案。无线电接口906可以包括例如接收机912、发射机914和/或频率合成器916。无线电接口906可以包括偏置控件、晶体振荡器和/或一个或更多个天线918。在另一个实施例中,无线电接口906可以根据需要使用外部压控
振荡器(vco)、表面声波滤波器、中频(if)滤波器和/或rf滤波器。由于潜在rf接口设计的多样性,省略了对其的扩展描述。
294.基带电路908可以与无线电接口906通信以处理接收和/或传输信号,并且可以包括例如用于下变频接收信号的模数转换器920和用于上变频信号以进行传输的数模转换器922。此外,基带电路908可以包括基带或物理层(phy)处理电路924,用于相应接收/传输信号的phy链路层处理。基带电路908可以包括例如用于媒体访问控制(mac)/数据链路层处理的处理电路926。基带电路908可以包括存储器控制器928,用于例如经由一个或更多个接口930与处理电路926和/或计算平台910通信。
295.在一些实施例中,phy处理电路924可以包括与诸如缓冲存储器的附加电路组合的帧构造和/或检测模块,以构造和/或解构通信帧,如无线电帧。可替代地或附加地,mac处理电路926可以共享这些功能中某些功能的处理,或者独立于phy处理电路924执行这些处理。在一些实施例中,可以将mac和phy处理集成到单个电路中。
296.计算平台910可以为设备900提供计算功能。如图所示,计算平台910可以包括处理组件932。除了基带电路908,或者作为基带电路908的替代,设备900可以使用处理组件932来执行消息传递系统500和逻辑电路904的处理操作或逻辑。处理组件932(和/或phy 924和/或mac 926)可以包括各种硬件元件、软件元件或两者的组合。硬件元件的示例可以包括设备、逻辑设备、组件、处理器、微处理器、电路、处理器电路、电路元件(例如,晶体管、电阻器、电容器、电感器,等等)、集成电路、专用集成电路(asic)、可编程逻辑设备(pld)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、存储器单元、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、应用程序接口(api)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任意组合。确定实施例是否使用硬件元件和/或软件元件来实现可以根据任意数量的因素而变化,如所需的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和如给定实现所需的其他设计或性能约束。
297.计算平台910还可以包括其他平台组件934。其他平台组件934包括常用计算元件,如一个或更多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(i/o)组件(例如,数字显示器)、电源等。存储器单元的示例可以包括但不限于一个或更多个高速存储器单元形式的各种类型的计算机可读和机器可读存储介质,如只读存储器(rom)、随机存取存储器(ram)、动态ram(dram)、双数据速率dram(ddram)、同步dram(sdram)、静态ram(sram)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存、聚合物存储器(如铁电聚合物存储器)、双向存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(sonos)存储器、磁卡或光卡、设备阵列(如独立磁盘冗余阵列(raid)驱动器)、固态存储器设备(例如,usb存储器、固态驱动器(ssd))、以及适于存储信息的任何其他类型的存储介质。
298.设备900可以是例如超移动设备、移动设备、固定设备、机器对机器(m2m)设备、个人数字助理(pda)、移动计算设备、智能电话、电话、数字电话、蜂窝电话、用户装备、电子书阅读器、手持式装置、单向寻呼机、双向寻呼机、消息传递设备、计算机、个人计算机(pc)、台
式计算机、膝上型计算机、笔记本计算机、上网本计算机、手持计算机、平板计算机、服务器、服务器阵列或服务器(server farm)、web服务器、网络服务器、互联网服务器、工作站、微型计算机、主框架计算机、超级计算机、网络设备、web设备、分布式计算系统、多处理器系统、基于处理器的系统、消费者电子产品、可编程消费者电子产品、游戏设备、电视、数字电视、机顶盒、无线接入点、、节点b、演进节点b(enb)、订户站、移动订户中心、无线电网络控制器、路由器、集线器、网关、网桥、交换机、机器或其组合。因此,根据合适的需要,本文描述的设备900的功能和/或特定配置可以被包括在设备900的各种实施例中,或者在设备900的各种实施例中被省略。在一些实施例中,设备900可以被配置成与一些协议和频率兼容,这些协议和频率与用于本文所引用的wman和/或其他宽带无线网络的3gpp lte规范和/或ieee 1402.16标准中的一个或更多个相关联,尽管实施例在这方面不受限制。
299.设备900的实施例可以使用单输入单输出(siso)架构来实现。然而,某些实现可以包括使用用于波束成形或空分多址(sdma)的自适应天线技术和/或使用mimo通信技术进行传输和/或接收的多个天线(例如,天线918)。
300.设备900的组件和特征可以使用分立电路、专用集成电路(asic)、逻辑门和/或单芯片架构的任意组合来实现。此外,在适当的情况下,可以使用微控制器、可编程逻辑阵列和/或微处理器或前述的任意组合来实现设备900的特征。注意,硬件、固件和/或软件元件在本文可以统称或单独称为“逻辑”或“电路”。
301.将认识到,图9的框图中所示的示例性设备900可以表示许多潜在实现的一个功能描述性示例。因此,附图中描绘的块功能的划分、省略或包含并不意味着用于实现这些功能的硬件组件、电路、软件和/或元件必须在实施例中被划分、省略或包含。
302.至少一个计算机可读存储介质936可以包括指令,这些指令在被执行时使得系统执行本文描述的任何计算机实现的方法。
303.术语的一般性说明
304.一些实施例可以使用表达“一个实施例”或“实施例”及其派生词来描述。这些术语意味着结合实施例描述的特定特征、结构或特性被包括在至少一个实施例中。说明书中不同地方出现的短语“在一个实施例中”不一定都指同一实施例。此外,除非另有说明,上述特征被认为可以以任何组合一起使用。因此,单独讨论的任何特征可以彼此组合使用,除非注意到这些特征彼此不兼容。
305.总体参考本文使用的符号和术语,本文的详细描述可以按照在计算机或计算机网络上执行的程序过程来呈现。这些过程描述和表示由本领域技术人员用来最有效地将他们工作的实质传达给本领域中的其他技术人员。
306.过程在这里且通常被设想为导致期望结果的操作的前后一致的序列。这些操作是需要物理量的物理操纵的那些操作。通常,尽管不是必须地,但这些量采取能够被存储、传输、组合、比较和以其他方式操纵的电信号、磁信号或光信号的形式。主要由于常用的原因,将这些信号称为位、值、元素、符号、字符、项、数字等有时被证明是方便的。然而,应该注意的是,全部这些和类似的术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。
307.此外,所执行的操纵通常在术语方面被称为例如相加或比较,它们通常与由人类操作员执行的心理运算相关联。在形成一个或更多个实施例的一部分的本文所描述的任何
操作中,人类操作员的这种能力不是必需的,或者在大多数情况下是不期望的。相反,操作是机器操作。用于执行各种实施例的操作的有用机器包括通用数字计算机或类似设备。
308.一些实施例可以使用表达“耦合”和“连接”以及它们的派生词来描述。这些术语不一定旨在是彼此的同义词。例如,可以使用术语“连接”和/或“耦合”来描述一些实施例,以指示两个或更多个元件彼此直接物理接触或电接触。然而,术语“耦合”也可以意味着两个或更多个元件彼此不直接接触,但是仍然彼此合作或相互作用。
309.各种实施例还涉及用于执行这些操作的装置或系统。该装置可以被特别构造成用于所需的目的,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。本文呈现的过程并不固有地与特定的计算机或其他装置相关。各种通用机器可以与根据本文的教导编写的程序一起使用,或者可以证明构造更专用的装置来执行所需的方法步骤是方便的。各种这些机器所需的结构将从给出的描述中显现出来。
310.需要强调的是,提供本公开的摘要是为了允许读者快速确定技术公开的性质。摘要按照这样的理解进行提交,即它将不用于解释或限制权利要求的范围或含义。此外,在前面的详细描述中,可以看出,为了简化本公开,在单个实施例中将各种特征组合在一起。本公开方法不应被解释为反映所要求保护的实施例需要比每个权利要求中明确陈述的更多特征的意图。更确切地,如所附权利要求所反映的,发明主题在于少于单个公开的实施例的全部特征。因此,所附的权利要求由此被结合到详细描述中,每个权利要求独立地作为单独的实施例。在所附权利要求中,术语“包括(including)”和“其中(in which)”分别用作相应术语“包括(comprising)”和“其中(wherein)”的简单英语等价物。此外,术语“第一”、“第二”、“第三”等等仅用作标签,并不旨在对它们的对象强加数字要求。
311.根据本发明的实施例在针对方法、存储介质和系统的所附权利要求中被具体公开,其中在一个权利要求类别(例如方法)中提到的任何特征也可以在另一个权利要求类别(例如系统、计算机程序产品)中被要求保护。在所附权利要求中的从属性或往回引用仅为了形式原因而被选择。然而,也可以要求保护由对任何前面权利要求的有意往回引用(特别是多项引用)而产生的任何主题,使得权利要求及其特征的任何组合被公开并可被要求保护,而不考虑在所附权利要求中选择的从属性。可以被要求保护的主题不仅包括如在所附权利要求中阐述的特征的组合,而且还包括在权利要求中的特征的任何其他组合,其中,在权利要求中提到的每个特征可以与在权利要求中的任何其他特征或其他特征的组合相结合。此外,本文描述或描绘的实施例和特征中的任一个可以在单独的权利要求中和/或以与本文描述或描绘的任何实施例或特征的任何组合或以与所附权利要求的任何特征的任何组合被要求保护。
312.上面描述的内容包括所公开架构的示例。当然,不可能描述组件和/或方法的每个可想到的组合,但是本领域的普通技术人员可以认识到许多进一步的组合和置换是可能的。因此,该新颖的架构旨在包含落入所附权利要求的精神和范围内的全部这些变更、修改和变化。
技术特征:
1.一种方法,包括:访问关于与多个用户相关联的协同交互的信息,所述协同交互至少与用于承载交互数据的数据信道和实时通信rtc信道相关联;从与所述多个用户中的第一用户相关联的设备接收在所述rtc信道中发起协同效果的指令,所述效果修改应用于所述多个用户中不同于所述第一用户的至少第二用户时的所述协同交互;将所述指令转发给与所述第二用户相关联的设备;在所述rtc信道上从与所述第二用户相关联的设备接收发起所述协同效果的协定;将所述协定转发给与所述第一用户相关联的设备;以及从与所述第二用户相关联的设备接收延迟请求,所述延迟请求指示与所述第二用户相关联的设备在发起所述协同效果之前需要附加数据。2.根据权利要求1所述的方法,还包括从与所述第一用户相关联的设备或与所述第二用户相关联的设备接收包括通用数据的应用编程接口api调用,所述通用数据能够应用于所述协同效果。3.根据权利要求2所述的方法,还包括确定所述api调用是以不可靠模式还是以可靠模式传输,其中:如果所述api调用是以所述不可靠模式传输的,则所述通用数据被转发到与所述第二用户相关联的设备,而没有传递保证,或者如果所述api调用是以所述可靠模式传输的,则如果在预定时间量内没有接收到所述通用数据的接收确认,则所述通用数据被重新传输到与所述第二用户相关联的设备。4.根据权利要求1所述的方法,其中所述协同交互包括视频交换,所述交互数据包括视频数据,并且所述协同效果以图形方式修改所述视频数据。5.根据权利要求1所述的方法,还包括从与所述第一用户相关联的设备或与所述第二用户相关联的设备接收对提供支持所述协同效果的功能的服务的调用,所述调用包括与所述服务相关联的预定义类型的数据。6.根据权利要求5所述的方法,其中,所述功能包括以下中的一项或更多项:回合谈判、回合让步、记分或领导选择。7.一种存储指令的非暂时性计算机可读介质,所述指令被配置成使一个或更多个处理器:访问关于与多个用户相关联的协同交互的信息,所述协同交互至少与用于承载交互数据的数据信道和实时通信rtc信道相关联;从与所述多个用户中的第一用户相关联的设备接收在所述rtc信道中发起协同效果的指令,所述效果修改应用于所述多个用户中不同于所述第一用户的至少第二用户时的所述协同交互;将所述指令转发给与所述第二用户相关联的设备;在所述rtc信道上从与所述第二用户相关联的设备接收发起所述协同效果的协定;将所述协定转发给与所述第一用户相关联的设备;以及从与所述第二用户相关联的设备接收延迟请求,所述延迟请求指示与所述第二用户相关联的设备在发起所述协同效果之前需要附加数据。8.根据权利要求7所述的介质,还存储用于从与所述第一用户相关联的设备或与所述第二用户相关联的设备接收包括通用数据的应用编程接口api调用的指令,所述通用数据
能够应用于所述协同效果。9.根据权利要求8所述的介质,还存储用于确定所述api调用是以不可靠模式还是以可靠模式传输的指令,其中:如果所述api调用是以所述不可靠模式传输的,则所述通用数据被转发到与所述第二用户相关联的设备,而没有传递保证,或者如果所述api调用是以所述可靠模式传输的,则如果在预定时间量内没有接收到所述通用数据的接收确认,则所述通用数据被重新传输到与所述第二用户相关联的设备。10.根据权利要求7所述的介质,其中所述协同交互包括视频交换,所述交互数据包括视频数据,并且所述协同效果以图形方式修改所述视频数据。11.根据权利要求7所述的介质,还存储用于从与所述第一用户相关联的设备或与所述第二用户相关联的设备接收对提供支持所述协同效果的功能的服务的调用的指令,所述调用包括与所述服务相关联的预定义类型的数据。12.根据权利要求11所述的介质,其中,所述功能包括以下中的一项或更多项:回合谈判、回合让步、记分或领导选择。13.一种装置,包括:硬件处理器电路,其被配置成访问关于与多个用户相关联的协同交互的信息,所述协同交互至少与用于承载交互数据的数据信道和实时通信rtc信道相关联;用于在网络上通信的网络接口;指令接收逻辑,其被配置成从与所述多个用户中的第一用户相关联的设备接收在所述rtc信道中发起协同效果的指令,所述效果修改应用于所述多个用户中不同于所述第一用户的至少第二用户时的所述协同交互;指令转发逻辑,其被配置成将所述指令转发到与所述第二用户相关联的设备;协定接收逻辑,其被配置成在所述rtc信道上从与所述第二用户相关联的设备接收发起所述协同效果的协定;协定转发逻辑,其被配置成将所述协定转发到与所述第一用户相关联的设备;以及延迟逻辑,其被配置成从与所述第二用户相关联的设备接收延迟请求,所述延迟请求指示与所述第二用户相关联的设备在发起所述协同效果之前需要附加数据。14.根据权利要求13所述的装置,还包括数据接收逻辑,其被配置成从与所述第一用户相关联的设备或与所述第二用户相关联的设备接收包含通用数据的应用编程接口api调用,所述通用数据能够应用于所述协同效果。15.根据权利要求14所述的装置,还包括数据转发逻辑,其被配置成确定所述api调用是以不可靠模式还是以可靠模式传输,其中:如果所述api调用是以所述不可靠模式传输的,则所述通用数据被转发到与所述第二用户相关联的设备,而没有传递保证,或者如果所述api调用是以所述可靠模式传输的,则如果在预定时间量内没有接收到所述通用数据的接收确认,则所述通用数据被重新传输到与所述第二用户相关联的设备。16.根据权利要求13所述的装置,其中所述协同交互包括视频交换,所述交互数据包括视频数据,并且所述协同效果以图形方式修改所述视频数据。17.根据权利要求13所述的装置,还包括从与所述第一用户相关联的设备或与所述第二用户相关联的设备接收对提供支持所述协同效果的功能的服务的调用,所述调用包括与所述服务相关联的预定义类型的数据。
技术总结
本申请涉及视频中的协同效果。示例性实施例涉及将协同或合作效果应用于协同活动。提供了协同活动协议,用于跨多个设备同步交互式效果和体验。该协议允许经由实时通信(RTC)信道在多个设备上发起并协同效果。可以交换消息以合作地发起效果,并且(一旦发起)通用数据可以经由应用编程接口(API)调用来交换。根据一些实施例,协同活动是共享的视频体验,如视频会议或共享的视频观看体验。根据其他实施例,协同活动涉及其他类型的体验,如单人或多人游戏、共享的书籍阅读、与相册的共同交互等。与相册的共同交互等。与相册的共同交互等。