创建复合视频的系统和方法与流程

文档序号:15743051发布日期:2018-10-23 22:37阅读:265来源:国知局
创建复合视频的系统和方法与流程

本技术涉及视频通信的领域。更具体地,本技术涉及用于优化涉及多个用户的视频通信的技术。



背景技术:

现今,人们通常为了各式各样的目的而利用计算设备。用户可以使用他们的计算设备,例如,与其他用户通信和以另外方式交互。这样的交互在社交网络上越来越多流行。

社交网络中的交互可以涉及各种类型的通信。社交网络系统支持的一些类型的通信允许用户参与集中交流。例如,用户可以通过使用社交网络系统支持的消息系统或电子邮件系统将特定一个用户或多个用户作为目标。作为另一个实例,用户可以与另一个用户一起参与由社交网络系统支持的音频通信或视频通信。

在许多情况下,视频通信可以是用户优选的,因为视频通信可以允许用户更有效地输送信息并且模拟实际生活中的通信。在一些实例中,位于不同位置的两个参与者可以参与视频通信。还可以期望允许位于多个位置的一组用户使用视频通信以便于组内之间的通信。



技术实现要素:

本技术的各个实施方式可以包括系统、方法以及非瞬时性计算机可读介质,被配置为接收视频通信中涉及的第一对等体(first peer)的视频流。接收视频通信中涉及的第二对等体的视频流。修改第二对等体的视频流的图像内容以创建第二对等体的修改后视频流。组合第一对等体的视频流和第二对等体的修改后视频流以创建复合视频。

在实施方式中,组合视频流包括将第二对等体的修改后视频流叠加到第一对等体的视频流上。

在实施方式中,修改第二对等体的视频流的图像内容包括改变第二对等体的视频流的显示形状。

在实施方式中,修改第二对等体的视频流的图像内容包括移除由第二对等体的视频流反映的图像内容的至少一部分。

在实施方式中,图像内容的至少一部分包括第二对等体的背景、前景和除用户以外的对象中的至少一个。

在实施方式中,修改第二对等体的视频流的图像内容包括改变第二对等体的视频流中描绘的用户的尺寸以与第一对等体的视频流中描绘的用户的尺寸相比在临界差值以内。

在实施方式中,接收视频通信中涉及的观看对等体的视频流。将复合视频呈现给观看对等体。复合视频不包括观看对等体的视频流。

在实施方式中,第一对等体是多个用户正在参与视频通信所在的会议室。

在实施方式中,第二对等体是用户参与视频通信时所位于的位置。

在实施方式中,计算系统包括客户端计算设备。

此外,本技术的各个实施方式可以包括系统、方法以及非瞬时性计算机可读介质,被配置为基于阈值的满足确定视频通信中涉及的第一对等体是主要对等体。基于阈值的没有满足确定视频通信中涉及的第二对等体是次要对等体。确定将第二对等体的修改后视频流将被叠加到第一对等体的视频流上以创建复合视频。

在实施方式中,阈值是对等体中用户的选定数量。

在实施方式中,第一对等体具有多个用户并且第二对等体具有单个用户。

在实施方式中,检测到第一对等体的视频流中的静态区域。将第二对等体的修改后视频流叠加到第一对等体的视频流中的静态区域上。

在实施方式中,确定静态区域没有满足重要阈值(materiality threshold,重点阈值)。

在实施方式中,第一对等体具有多个用户并且第二对等体具有单个用户,方法进一步包括:

在实施方式中,确定第二对等体的单个用户和第一对等体的多个用户的每个用户之间的亲和度。将第二对等体的修改后视频流在多个用户中与第二对等体的单个用户具有最大亲和度的用户相邻的位置处叠加到第一对等体的视频流上。

在实施方式中,第二对等体具有单个用户。确定与第一对等体相关联的位置。确定与单个用户相关联的位置。基于第一对等体和单个用户之间的位置差满足距离阈值将第二对等体的修改后视频流叠加到第一对等体的视频流上。

在实施方式中,基于阈值的满足确定视频通信中涉及的第三对等体是主要对等体。第一对等体的视频流在复合视频中位于与第三对等体的视频流相邻处。

在实施方式中,基于没有满足阈值确定视频通信中涉及的第四对等体是次要对等体。将第二对等体的修改后视频流叠加到第一对等体的视频流上。将第四对等体的修改后视频流叠加到第三对等体的视频流上。

在实施方式中,接收观看对等体的用户的改变复合视频中的第二对等体的修改后视频流的位置的输入。响应于该输入改变复合视频中的第二对等体的修改后视频流的位置。

应当理解,公开的技术的许多其它特征、应用、实施方式和/或变形将从附图和详细描述变得显而易见。可以采用本文中描述的结构、系统、非瞬时性计算机可读介质以及方法的另外的和/或可替换的实现方式而不悖离所公开的技术的原理。

根据本发明的实施方式尤其在所附的涉及方法、系统和存储介质的权利要求中公开,其中一个权利要求类别,例如方法中提到的任何特征,同样可以在另一个权利要求类别,例如系统中要求保护。仅出于形式的原因,选择所附的权利要求的从属关系或向回引用。但是,也可对故意向回引用任何先前的权利要求(具体地,多项从属)产生的任何主题请求保护,因此公开了权利要求及其特征的任何组合,并且可与所附的权利要求中选择的从属性无关地对其请求保护。可以要求保护的主题不仅包括所附权利要求中阐述的特征的组合而且包括权利要求中的特征的任何其他组合,其中,权利要求中提到的每个特征都可以与权利要求中的其他特征或其它特征的组合相结合。此外,本文中描述或描绘的任意实施方式和特征可以在单独的权利要求和/或在与本文中描述或描绘的任意实施方式或特征或者与所附的权利要求的任意特征的任意组合中要求保护。

附图说明

图1示出根据本技术的实施方式的包括示例性复合视频模块的系统。

图2A示出根据本技术的实施方式的示例性分量处理模块。

图2B示出根据本技术的实施方式的呈现模块。

图3A-3E示出根据本技术的实施方式的创建复合视频和与复合视频交互的示例性情景。

图4示出根据本技术的实施方式的用于创建复合视频的第一方法。

图5示出根据本技术的实施方式的用于创建复合视频的第二方法。

图6示出根据本技术的实施方式的可以在各个情景中使用的示例性系统的网络图。

图7示出根据本技术的实施方式的可以在各个情景中使用的计算机系统的实例。

附图仅出于说明之目的而绘出所公开的技术的各个实施方式,其中,附图使用相同参考标号表示相同的元件。本领域的技术人员从以下讨论中容易认识到,在不悖离本文描述的所公开的技术的原理的情况下,可以采用在附图中示出的结构和方法的替换实施方式。

具体实施方式

复合视频

社交网络中的交互可以涉及各种类型的通信。社交网络系统支持的一些类型的通信允许用户参与集中交流(exchange,交易)。例如,用户可以通过使用社交网络系统支持的消息系统或电子邮件系统将特定一个用户或多个用户作为目标。作为另一个实例,用户可以与另一个用户一起进入由社交网络系统支持的音频通信或视频通信。

在许多情况下,视频通信可以是用户优选的,因为视频通信可以允许用户更有效地输送信息并且模拟实际生活中的通信。在一些实例中,在不同位置的两个参与者可以参与视频通信。还可以期望允许处于多个位置的一组用户使用视频通信以便于组之中的通信。在视频通信涉及位于不同位置的一组用户时,在一些实例中的常规技术可以涉及在单个视频视图中同等呈现组中的每个位置。这样的呈现未能优化视频视图的有限区域。在其他实例中,常规技术会在视频视图中呈现或突出选定数量的最新用户或者对组讲话的用户的位置。这个方法是不利的,因为该方法不允许包括最近没有讲话的或者完全没有讲话的用户的所有用户的连续视图。

允许视频的合成的根植于计算机技术的改进的方法克服了与以计算机技术实现的常规方法相关联的这些和其它的缺点。本技术的系统、方法和计算机可读介质可确定参与视频通信的对等体。分析与一个对等体相关联的每个视频流以确定,例如,在视频流中存在的用户以及存在的静态位置。对于具有仅一个用户的一个对等体,对等体的视频流的图像内容可以被修改。例如,在对等体的原始视频流具有矩形形状时,视频流可被修改为具有椭圆形或圆形形状。作为另一个实例,可以修改后视频流的视图尺寸使得该用户是与其他对等体的视频流中描绘的其他用户近似相同的尺寸。在一些实例中,对等体的修改后视频流可以叠加到另一个对等体的视频流的静态区域上以创建复合视频。可以分析关于与对等体相关联的用户的上下文数据以通知修改后视频流可以叠加到哪。复合视频可以被设计为使得参与视频通信的每个对等体可以观看裁剪后的复合视频。在一些实例中,视频的合成可以是基于规则的。在将复合视频呈现给与观看对等体相关联的用户的过程中,用户可以在复合视频中修改与对等体相关联的视频流的位置。在本文中论述关于本技术的更多细节。

图1示出根据本技术的实施方式的示例性系统100,该系统包括示例性复合视频模块102,该复合视频模块102被配置为允许合成单独的视频流以为视频通信中的每个对等体创建复合视频。视频通信可以包括在多个位置的对等体通过他们各自的视频流参与的视频事件或会话(例如,视频会议)。每个位置可以对应于一个对等体。一个对等体可以包括许多用户(或参与者)的一间房间(或聚集地)、一个用户的一间房间、不在房间中的一个用户、或者参与视频通信的任何其它聚集地或资源。每个对等体可以与以视频和音频捕捉对等体的用户的活动的一个视频流相关联。复合视频模块102可以包括分量处理模块104和呈现模块106。在本文中的这个附图和所有附图中示出的组成部分(例如,模块、元件、步骤、框等)仅是示例性,并且其它实现方式可包括额外的、更少的、集成的或不同的组成部分。一些组成部分没有被示出以不使相关细节变得晦涩。在各种实施方式中,结合复合视频模块102描述的一个或多个功能可以以任何合适的组合实现。

分量处理模块104可以确定视频通信中涉及的对等体。可以分析每个对等体的视频流以识别视频流的各个特性。可以修改某些对等体的视频流以创建修改后视频流。一个对等体的修改后视频流可以叠加到另一个对等体的视频流上以使得能够优化创建容纳所有对等体的视频流的复合视频。在本文中更详细地描述分量处理模块104。

呈现模块106可以接收关于视频通信中的对等体的上下文数据、与对等体相关联的位置、以及与对等体相关联一个或多个用户。基于一个或多个规则、视频通信中涉及的对等体的视频流、以及上下文数据,可以生成每个对等体的复合视频。复合视频可以呈现给观看对等体。与观看对等体相关联的用户可以与呈现的复合视频交互以改变其呈现。本文中更详细地描述呈现模块106。

在一些实施方式中,复合视频模块102可以部分或完全实现为软件、硬件或它们的任意组合。通常,如本文中论述的模块可以与软件、硬件或它们的任意组合相关联。在一些实现方式中,模块的一个或多个功能、任务和/或操作可以通过软件例程、软件进程、硬件和/或它们的任意组合进行或执行。在一些实例中,复合视频模块102可以部分或完全实现为在一个或多个计算设备或系统上,诸如在服务器系统或客户端计算设备上运行的软件。在一些实例中,复合视频模块102可以部分或完全在社交网络系统(或服务),诸如图6的社交网络系统630内实现,或者被配置为与社交网络系统结合进行操作或集成。同样地,在一些实例中,复合视频模块102可以部分或完全在客户端计算设备,诸如图6的用户设备610内实现或者被配置为与客户端计算设备结合操作或集成。例如,复合视频模块102可以实现为在用户计算设备或客户端计算系统上运行的专用应用程序(例如,app)、程序或小应用程序,或者在用户计算设备或客户端计算系统上运行的专用应用程序、程序或小应用程序内实现。应当理解许多变形是可能的。

数据存储器118可以被配置为存储和维护各种类型的数据,诸如与复合视频模块102的支持和操作有关的数据。由数据存储器118维护的数据可以包括,例如,对等体的标识、与对等体相关联的位置信息、与对等体相关联的视频流、关于对等体的上下文数据和与对等体相关联的用户、图像分类器、视频流中的静态对象或区域、阈值、复合视频等。数据存储器118还可以维护与社交网络系统相关联的其它信息。与社交网络系统相关联的信息可以包括:关于用户的数据、社交连接(connection)、社交交互、位置、地理围栏区域、地图、地点、事件、组、帖子、通知、内容、账户设置、隐私设置、以及社交图谱。社交图谱可以反映社交网络系统的所有实体和他们的交互。如在示例性系统100中所示,复合视频模块102可以被配置为与数据存储器118通信和/或与存储器一起操作。在一些实施方式中,数据存储器118可以是客户端计算设备内的数据存储器。在一些实施方式中,数据存储器118可以是与客户端计算设备通信的服务器系统的数据存储器。图2A示出根据本技术的实施方式的示例性分量处理模块202。在一些实施方式中,图1的分量处理模块104可以利用分量处理模块202实现。如在图2A中的实例所示,分量处理模块202可以包括对等体确定模块204、视频分析模块206和视频修改模块208。

对等体确定模块204可以确定视频通信中涉及的对等体。对等体确定模块204可以接收与视频通信中涉及的对等体相关联的多个视频流。每个视频流可以利用识别对等体的数据进行编码。例如,数据可以指示对等体的名称(例如,房间名称或房间标识符)、与对等体相关联的传输视频流的设备的IP地址、或者可以指示与视频流相关联的对等体的任何其它识别信息。基于识别信息,对等体确定模块204可以确定视频通信中涉及的对等体。

视频分析模块206可以分析与视频通信中涉及的对等体相关联的每个视频流中的图像数据。视频分析模块206可以实现可对视频流进行图像检测或图像识别的分类器。视频流的一个或多个帧可以周期性地或不定期地提供至分类器以确认和识别视频流中描绘的对象(或概念)。视频流中描绘的对象的确定可以允许视频流的最佳合成,如本文中更详细地论述的。

视频分析模块206可以确定与视频通信中涉及的每个对等体相关联的用户的数量。用户可以是存在于视频通信中涉及的房间或其它位置的参与者。与每个对等体相关联的视频流的一个或多个帧可以被提供至分类器。分类器可以提供视频流中反映的并且由分类器确认的对象是人的概率或得分。可以应用阈值概率或得分值以在希望的置信水平下确认对象为人。

在一些实例中,视频分析模块206不仅可以确认用户而且识别用户。分类器可以识别用户。例如,对于社交网络系统,分类器可以基于已利用识别信息适当地标记的用户的多个图像在监督学习技术下训练。由视频分析模块206进行的用户的识别有利于视频流的最佳合成,如本文中更详细地论述的。

除了用户之外,视频分析模块206还可以识别视频流中反映的其它对象。例如,在对等体是一个房间时,对等体可以识别房间中存在的对象,诸如桌子、椅子、墙壁、天花板、餐具柜、讲台等。作为另一个实例,在对等体是用户所在的区域时,对等体可以识别背景、前景、邻近于用户或除用户以外的对象等。

视频分析模块206可以确定视频流中反映的动态对象或区域、以及静态对象或区域。基于分类器,视频分析模块206可以识别视频流中的反映运动或改变的对象或区域以及视频流的不反映运动或改变的对象或区域。例如,对于具有桌子的会议室的对等体,视频分析模块206可以确定会议室中的桌子和会议室的墙壁是不移动的。作为另一个实例,视频分析模块206可以识别会议室中的椅子并确定椅子是否因为例如用户坐在椅子中并在椅子中移动而反映运动。因为视频分析模型206可以定期地或不定期地对视频流进行图像分析,所以视频分析模块206还可以确定对象或区域何时从静态对象或区域转换成动态对象或区域或者从动态对象或区域转换成静态对象或区域。与时间有关的对象或区域的静态性质或动态性质可以通知单独的视频流至复合视频的合成。作为另一个实例,视频分析模块206可以识别与对等体相关联的用户进行的讲话活动。

视频修改模块208可以修改与对等体相关联的视频流中反映的图像内容以允许最佳合成。在一些实施方式中,基于确定出单个用户与对等体相关联,视频修改模块208可以修改与对等体相关联的视频流以便将该视频流与其它视频流合成。例如,修改可以移除(剪切掉)视频流中的不描绘或涉及用户的一些或所有主题。在这个实例中,如果视频流反映与用户无关的背景、前景或其它对象,则可以从视频流移除一些或所有该背景、前景和其它对象。从视频流移除图像内容可以通过消除会使注意力从视频通信分散的分散注意主题来提高对于复合视频的用户体验。

视频修改模块208可以改变视频流的显示形状。例如,如果视频流的显示形状是矩形的,则视频修改模块208可以将显示形状改为椭圆形或圆形。在这个实例中,视频流的椭圆形显示形状可以在视频流被叠加到作为复合视频的一部分的另一个对等体的视频流上时提高与视频通信有关的用户体验。在其他实施方式中,实现其它显示形状的修改是可能的。

视频修改模块208可以改变视频流中显示区域的尺寸或者视频流中用户的描画的大小。视频修改模块208可以支持复合视频的设计,其中,跨多个对等体的每个用户在复合视频中被描绘为具有与复合视频中描绘的其它用户近似相同的尺寸或者与其它用户相比具有临界差值内的不同的显示尺寸。如果与对等体相关联的视频流仅描绘一个用户,则视频修改模块208可以适当地改变视频流的尺寸,使得描绘的用户具有与一个或多个其它对等体相关联视频流中的用户的描画相同的尺寸。以这种方式,在仅描绘一个用户的视频流叠加到另一个对等体的视频流上以创建复合视频时,所有用户都被描绘成具有近似相同的尺寸。这样的尺寸均等可以提高对于复合视频的用户体验。以这种方式,视频修改模块208对视频流中的图像内容的修改,诸如主题的选择性移除、显示形状的改变、以及视频流的显示尺寸的改变或其中用户的描画的大小,可以允许在复合视频的创建中一个视频流更加无缝叠加(覆盖)到另一个视频流上。此外,为了适配复合视频的显示尺寸,视频修改模块208可以在不修改视频流的图像内容的情况下改变将邻近于彼此放置的视频流的显示区域的尺寸。

在一些实施方式中,对等体可具有两个相机,第一相机示出广角视图(例如,180度)并且第二相机示出窄角视图(例如,小于180度)。在许多情况下,对等体中的大多数用户可以由第二相机捕获。然而,在一些实例中,对等体中的一些用户可以仅由第一相机捕获,诸如坐在构成对等体的房间的边缘处的用户。视频修改模块208可以从与第一相机相关联的视频流中识别出仅在第一相机的广角视图中示出的用户,剪切出这些用户以创建描绘这些用户的修改后视频流,并且将修改后视频流叠加到第二相机的视频流上。这样的叠加可以解决一些用户坐在房间的边缘处而不是房间中的会议桌处的示例性情景并且能够避免仅仅使用具有广角视图的相机具有的使用户不希望地变小的效果。

图2B示出根据本技术的实施方式的用于管理视频通信用的复合视频的呈现的示例性呈现模块252。在一些实施方式中,图1的呈现模块106可以利用呈现模块252实现。如在图2的实例中所示,呈现模块252可以包括上下文数据模块254、合成模块258、呈现模块260以及用户交互模块262。

上下文数据模块254可以接收关于视频通信中涉及的对等体和与对等体相关联的用户的上下文数据。关于对等体的上下文数据可以包括,例如,对等体的地理位置、对等体的容量(例如,座位数、用户容量等)、对等体中可用的通信设备(例如,视频会议屏幕的数量)等。关于用户的上下文数据可以包括,例如,关于用户的配置文件信息(profile information,简介信息)、用户的连接、用户的位置等。如本文中更详细地论述的,上下文数据可以通知复合视频的创建和视频通信的相关数据的呈现。在一些实施方式中,上下文数据可以由操作复合视频模块102的计算机系统,诸如社交网络系统来维护。

合成模块258可以选择性地组合与视频通信中涉及的对等体相关联的视频流以创建复合视频。在一些实施方式中,可以为每个观看对等体创建并裁剪复合视频。在其他实施方式中,可以为所有对等体创建单个复合视频。

合成模块258可以接收与视频通信中涉及的对等体相关联的视频流。合成模块258还可以接收与对等体相关联的视频流的视频分析以及已创建的任何修改后视频流。复合视频可以通过选择性地组合和叠加包括修改后视频流在内的视频流来创建。视频通信的一个或多个属性可以由合成模块258使用以创建复合视频。视频通信的属性可以包括,例如,视频通信中涉及的对等体的数量、将复合视频呈现给的观看对等体、与每个对等体相关联的视频流中反映的用户的数量、每个视频流中的对象的识别、视频流中反映的静态对象或区域、关于对等体和其中的用户的上下文信息、以及其它考虑因素。在为每个观看对等体裁剪(tailored,定制)复合视频的实施方式中,与观看对等体相关联的视频流不包括在复合视频中并且与其它对等体相关联的视频流被组合以创建复合视频。

合成模块258可以识别对于复合视频的主要对等体和次要对等体。在实施方式中,主要对等体可以是其相关联的视频流反映已被视频分析识别的阈值数量的用户的对等体。阈值数量的用户可以是任何选定数量的用户(例如,两个用户、四个用户、十个用户等)。如果对等体中的用户的数量满足阈值,则与视频流相关联的对等体可构成主要对等体。如果对等体中的用户的数量不满足阈值,则与视频流相关联的对等体可构成次要对等体。

合成模块258可以组合视频通信中涉及的各主要对等体的视频流。在实施方式中,在视频通信包括多个主要对等体时,多个主要对等体的视频流可以被组合并放置在复合视频中,使得它们在合适的布局中邻近于彼此(例如,并排、一上一下等)。例如,可以在不进行与从第一主要对等体和第二主要对等体的视频流移除图像内容,将第一主要对等体的视频流叠加到第二主要对等体的视频流上,或者将第二主要对等体的视频流叠加到第一主要对等体的视频流上有关的修改的情况下,使第一主要对等体的视频流与第二主要对等体的视频流相结合。

合成模块258可以将与次要对等体相关联的视频流选择性地叠加到主要对等体的静态区域上。次要对等体的修改后视频流可以在与主要对等体相关联的视频流反映选定的静态区域的位置处叠加到与主要对等体相关联的视频流上。选定的静态区域可以包括视频流中反映的构成视频流中反映的没有满足重要阈值的各对象或区域的对象或区域。在一个实施方式中,与对等体相关联的视频流中反映的墙壁、天花板、餐具柜、背景、前景、或其它类型的静态对象或区域可以被确定为未能满足重要阈值。在实施方式中,选定的静态区域不包括用户可以聚集在其周围的办公桌或桌子,使得没有修改后视频流叠加在其上。

此外,次要对等体的修改后视频流可以基于上下文数据叠加到与主要对等体相关联的视频流上。在一些实施方式中,次要对等体的修改后视频流可以叠加到与该次要对等体最紧密地连接的主要对等体的视频流上。在实施方式中,具有单个用户的次要对等体的修改后视频流可以在单个用户和主要对等体之间的地理距离满足地理距离阈值(例如,小于或等于五英里;小于或等于十英里等)时叠加到主要对等体的视频流上。在实施方式中,在存在两个或更多个主要对等体时,次要对等体的修改后视频流可以叠加到在地理距离上最接近该次要对等体的主要对等体的视频流上。在另一个实施方式中,在存在两个或更多个主要对等体时,次要对等体的修改后视频流可以叠加到具有与次要对等体的用户关系最紧密的一个或多个用户的主要对等体上。例如,假定有次要对等体的用户和第一主要对等体的用户之间的第一总亲和度和次要对等体的用户和第二主要对等体的用户之间的第二总亲和度。如果第一总亲和度小于第二总亲和度,则次要对等体的修改后视频流可以叠加到第二主要对等体而不是第一主要对等体的视频流上。在另一个实施方式中,如果主要对等体的一个用户与主要对等体的其它用户相比具有与次要对等体的用户的更大的亲和度,则次要对等体的修改后视频流可以叠加在主要对等体的视频流中的更接近主要对等体的该用户的位置处。

在一些实施方式中,合成模块258可以遵循用于创建复合视频的基于规则的方法。在实施方式中,基于规则的方法可以至少部分地基于视频通信的属性创建复合视频。在基于规则的办法的一个实例中,在存在一个或多个次要对等体和一个或多个主要对等体时,除了其余因素之外,次要对等体的修改后视频流可以叠加到主要对等体的视频流上使得每个主要对等体反映相等数量的次要对等体的修改后视频流。在基于规则的办法的另一个实例中,在存在一个或多个次要对等体和一个或多个主要对等体时,次要对等体的修改后视频流可以叠加到第一主要对等体的视频流上直到第一主要对等体的所有选定的静态对象或区域均被修改后视频流替换并且在这种情况出现时,次要对等体的任何剩余的修改后视频流叠加到第二主要对等体上,诸如此类。在基于规则的办法的又一个实例中,在存在一个或多个次要对等体和一个或多个主要对等体时,次要对等体的修改后视频流中描绘的用户可被放置为最接近主要对等体的视频流中与修改后视频流中描绘的该用户具有最高亲和度的一个或多个用户。创建复合视频的规则的许多其它实例是可能的。在一些实施方式中,可以为视频通信的属性的每个唯一组合确定规则。

呈现模块260可以将复合视频呈现给视频通信中涉及的对等体中的用户。在为观看对等体创建裁剪的复合视频的实施方式中,呈现模块260可以呈现为观看对等体裁剪的复合视频。呈现模块260还可以考虑可以为对等体呈现复合视频的屏幕数量。在实施方式中,呈现模块260可以分割复合视频以跨该数量的屏幕呈现。

呈现模块260可以在复合视频的呈现期间叠加关于复合视频或其中描绘的用户的上下文数据。在实施方式中,呈现模块260可以显示复合视频中反映的用户的名字以及复合视频中反映的用户之间的连接状态信息。例如,呈现模块260可以显示复合视频中反映的两个用户之间的或者复合视频中反映的一用户和观看对等体的一用户之间的连接的程度(例如,直接连接、二级连接等)。作为另一个实例,在用户被检测为在视频通信过程中讲话时,呈现模块260可以实时地显示用户的名字以及关于用户和复合视频中的其它用户的连接状态信息。在另一个实施方式中,在视频通信结束时或快结束时,呈现模块260可以提供列出视频通信中涉及的用户的身份以及用户之间的关系的记录。这样的记录可以提供关于视频通信的重要的要点或概括信息。

用户交互模块262可以使得观看对等体的用户能够与复合视频的呈现动态地交互并且改变复合视频的呈现。在实施方式中,用户交互模块262可以分量化(componentize,组件化)与复合视频有关的主要对等体的每个视频流和叠加到主要对等体的视频流上的次要对等体的修改后视频流。分量视频流可以由用户操控以由观看对等体或观看对等体的用户认为最佳的方式在复合视频中呈现分量视频流。在实施方式中,如果观看对等体的用户期望修改叠加到主要对等体的视频流上的次要对等体的修改后视频流的位置,则用户交互模块262可以允许用户选择修改后视频流并且将修改后视频流的位置移动至主要对等体的视频流或总体上的复合视频中的新的位置。例如,用户交互模块262可以允许用户将修改后视频流移动至修改后视频流首次出现的原始的主要对等体的视频流内的新的位置或者移动至不同的主要对等体的视频流内的新的位置。在实施方式中,如果观看对等体的用户期望改变主要对等体的视频流在复合视频中的相对位置,则用户可以将视频流移动至复合视频中的新的位置。在实施方式中,用户交互模块262可以允许用户通过合适用户输入来利用常规的界面工具和交互影响对复合视频的呈现的改变。例如,如果复合视频在触摸屏上显示给观看对等体的用户,则用户可以拖放(或滑动)视频流来改变复合视频中的它们的位置。此外,用户交互模块262可以允许用户通过合适的用户输入(例如,夹紧手势、扩大手势)利用常规的用户界面工具和交互来收缩、放大或以另外方式修改正在呈现的复合视频的各个视频流或其它部分。

图3A-图3E示出根据本技术的实施方式的基于与视频通信中涉及的多个对等体相关联的视频流创建复合视频并与复合视频交互的示例性情景300。在图3A中,与示例性情景300有关的视频通信涉及对等体A、对等体B、对等体C、对等体D和对等体E。示例性情景300包括与对等体A相关联的视频流(或对等体A视频流(VS))302、与对等体B相关联视频流(或对等体B视频流(VS))304、与对等体C相关联的视频流(或对等体C视频流(VS))306、与对等体D相关联的视频流(或对等体D视频流(VS))308、以及与对等体E相关联的视频流(或对等体E视频流(VS))310。对等体A视频流302和对等体B视频流304各自与构成其中参与视频通信的多个用户所在的会议室的对等体相关联。对等体C视频流306、对等体D视频流308和对等体E视频流310中的每一个与用户在参与视频通信的同时所位于的位置相关联。对于对等体C视频流306、对等体D视频流308和对等体E视频流310,用户的位置可以通过用户参与视频通信的同时用户的移动来改变。

在图3B中,对等体A和对等体B已被确定为主要对等体,因为它们各自的视频流均反映出通过视频分析已识别的阈值数量的用户。对等体C、对等体D和对等体E已被确定为次要对等体,因为它们各自的视频流中的每一个不反映通过视频分析已识别的阈值数量的用户。基于组成次要对等体的对等体C、对等体D和对等体E,对等体C视频流306、对等体D视频流308和对等体E视频流310已被修改。已进行对等体C视频流306、对等体D视频流308和对等体E视频流310的修改以便于视频复合的创建。在示例性情景300中,对等体C视频流306、对等体D视频流308和对等体E视频流310的原始的矩形显示形状已被修改为具有椭圆形显示形状。除了显示形状的改变之外,修改还可以涉及选择改变每一个修改后视频流中用户的描画的尺寸以及选择移除视频流中反映的不描绘用户的主题(例如,对象、背景、前景)。在图3C中,复合视频320根据对等体A视频流302、对等体B视频流304、对等体D视频流308和对等体E视频流310创建。复合视频320反映包括没有修改的对等体A视频流302和对等体B视频流304,因为对等体A和对等体B构成主要对等体。在示例性情景300中,对等体C视频流306不包括在复合视频320中,因为复合视频320是为给观看对等体,对等体C的用户呈现而裁剪的。在其它示例性情景中,复合视频可以包括所有对等体的视频流。

如修改的对等体D视频流308已被叠加到对等体A视频流302上并且如修改的对等体E视频流310已被叠加到对等体B视频流304上。在一些实施方式中,对等体D视频流308已基于对等体D视频流308可以叠加的对等体A视频流302中检测到的选择静态区域的存在而被叠加到对等体A视频流302上。所选择的静态区域可以构成不满足重要阈值的对象或区域。在一些实施方式中,对等体D视频流308可以叠加到对等体A视频流302而不是对等体B视频流304上,因为对等体D的用户已被确定为与对等体B的用户相比,与对等体A的一个或多个用户具有更大的亲和度。类似地,在一些实施方式中,对等体E视频流310已基于对等体E视频流310可以叠加的对等体B视频流304中检测到的选择的静态区域的存在而被叠加到对等体B视频流304上。所选择的静态区域可以构成不满足重要阈值的对象或区域。在一些实施方式中,对等体E视频流310可以叠加到对等体B视频流304上,因为对等体E的用户已被确定为与对等体B的一个或多个用户具有比对等体A的用户更大的亲和度。

在其他实施方式中,根据创建复合视频320的规则,对等体D视频流308可以叠加到对等体A视频流302上并且对等体E视频流310可以叠加到对等体B视频流304上。可以为次要对等体的修改后视频流提供均等地跨主要对等体的视频流分布并叠加到主要对等体的视频流上的示例性规则。例如,视频分析可以识别对等体A视频流302和对等体B视频流304中的选择的静态区域。在这种情况下,规则可以使得对等体D视频流308被叠加到对等体A视频流302上而对等体E视频流310被叠加到对等体B视频流304上。规则的应用可以产生复合视频320。其它规则可以产生其它复合视频。

在图3D中,复合视频330根据对等体B视频流304、对等体C视频流306、对等体D视频流308和对等体E视频流310创建。复合视频330反映包括没有修改的对等体B视频流304,因为对等体B构成主要对等体。在示例性情景300中,对等体A视频流302不包括在复合视频330中,因为复合视频330是为给观看对等体,对等体A的用户呈现而裁剪的。在其它示例性情景中,复合视频可以包括所有对等体的视频流。

如修改的对等体C视频流306、如修改的对等体D视频流308和如修改的对等体E视频流已被叠加到对等体B视频流304上。在一些实施方式中,对等体C视频流306、对等体D视频流308和对等体E视频流已基于各视频流已叠加的对等体B视频流304中检测到的选择静态区域的存在而被叠加到对等体B视频流304上。静态区域可以构成对等体B视频流304中反映的没有满足重要阈值的对象或区域。在一些实施方式中,对等体E视频流310可以基于与对等体B的其它用户相比与用户340的亲和度的值高而与用户340相邻地叠加到对等体B视频流304上。在一些实施方式中,对等体C视频流306和对等体D视频流308可以基于与用户340相比与用户342、用户344和用户346中的一个或多个之间的亲和度的值高而与用户342、用户344和用户346相邻地叠加到对等体B视频流304上。

在图3E中,复合视频320中的对等体A视频流302、对等体B视频流304、对等体D视频流308和对等体E视频流310可以呈现给对等体C(观看对等体)的用户。通过合适的用户输入,诸如光标的移动或者施加至呈现复合视频320的屏幕的拖曳运动,对等体C的用户可以改变对等体A视频流302、对等体B视频流304、对等体D视频流308和对等体E视频流310中的一个或多个的位置。在所示出的实例中,对等体C的用户可以将对等体D视频流308从复合视频320中的原始位置移动至邻近于对等体E视频流310的新的位置。在其它示例性情景中,视频流可以以其它方式移动或以另外方式操控。

图4示出根据本技术的实施方式的用于创建复合视频的第一示例性方法400。应当理解,除非另有说明,否则根据本文中论述的各种实施方式和特征,存在以相似的或可替代的顺序或者并行进行的另外的、更少的或可替代的步骤。

在框402,方法400可以接收视频通信中涉及的第一对等体的视频流。在框404,方法400可以接收视频通信中涉及的第二对等体的视频流。在框406,方法400可以修改第二对等体的视频流的图像内容以创建第二对等体的修改后视频流。在框408,方法400可以组合第一对等体的视频流和第二对等体的修改后视频流以创建复合视频。结合本技术的各个特征和实施方式的其它合适的技术是可能的。

图5示出根据本技术的实施方式的用于创建复合视频的第二示例性方法500。应当理解,除非另有说明,否则根据本文中论述的各种实施方式和特征,存在以相似的或可替代的顺序或者并行进行的另外的、更少的或可替代的步骤。

在框502,方法500可以基于阈值的满足确定视频通信中涉及的第一对等体是主要对等体。在框504,方法500可以基于阈值的不满足确定视频通信中涉及的第二对等体是次要对等体。在框506,方法500可以确定将第二对等体的修改后视频流叠加到第一对等体的视频流上以创建复合视频。结合本技术的各个特征和实施方式的其它合适的技术是可能的。

社交网络系统-示例性实现方式

图6示出根据本技术的实施方式的可以在各个情景中使用的示例性系统600的网络图。系统600包括一个或多个用户设备610、一个或多个外部系统620、社交网络系统(或服务)630以及网络650。在实施方式中,结合上面描述的实施方式论述的社交网络服务、供应商、和/或系统可以实现为社交网络系统630。为了说明的目的,由图6示出的系统600的实施方式包括单个外部系统620和单个用户设备610。然而,在其他实施方式中,系统600可以包括更多的用户设备610和/或更多的外部系统620。在某些实施方式中,社交网络系统630由社交网络供应商操作,而外部系统620独立于社交网络系统630,因为外部系统可以由不同的实体操作。然而,在各种实施方式中,社交网络系统630和外部系统620结合操作,以将社交网络服务提供给社交网络系统630的用户(或会员)。在这个意义上,社交网络系统630提供平台或主干,诸如外部系统620的其他系统,可以使用该平台或主干通过互联网将社交网络服务和功能提供给用户。

用户设备610包括可以从用户接收输入并通过网络650发送和接收数据的一个或多个计算设备。在一个实施方式中,用户设备610是常规的计算机系统,例如,执行Microsoft Windows兼容操作系统(OS)、Apple OS X和/或Linux分布的计算机系统。在另一个实施方式中,用户设备610可以是具有计算机功能的设备,诸如,智能电话、平板电脑、个人数字助理(PDA)、移动电话等。用户设备610被配置为通过网络650进行通信。用户设备610可以执行应用,例如,允许用户设备610的用户与社交网络系统630交互的浏览器应用。在另一个实施方式中,用户设备610通过由用户设备610的本地操作系统(例如,iOS和ANDROID)提供的应用编程接口(API)与社交网络系统630交互。用户设备610被配置为使用有线和/或无线通信系统,通过可以包括局域网和/或广域网的任何组合的网络650与外部系统620和社交网络系统630通信。

在一个实施方式中,网络650使用标准的通信技术和协议。因此,网络650可以包括使用诸如以太网、802.11、全球微波接入互操作性(WiMAX)、3G、4G、CDMA、GSM、LTE、数字用户线路(DSL)等技术的链路。同样地,网络650中使用的网络协议可以包括多协议标签交换(MPLS)、传输控制协议/因特网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、以及文件传输协议(FTP)等。可以使用包括超文本标记语言(HTML)和可扩展标记语言(XML)的技术和/或格式表示通过网络650交换的数据。此外,可以使用诸如安全套接层(SSL)、传输层安全(TLS)、以及因特网协议安全(Ipsec)等常规加密技术对所有或者一些链路进行加密。

在一个实施方式中,用户设备610通过使用浏览器应用612,处理从外部系统620中以及从社交网络系统630中接收的标记语言文档614,可以显示外部系统620和/或社交网络系统630的内容。标记语言文档614识别内容,和描述该内容的格式或呈现的一个或多个指令。通过执行包含在标记语言文档614内的指令,浏览器应用612使用由标记语言文档614描述的格式或呈现来显示所识别的内容。例如,标记语言文档614包括指令,用于产生和显示具有多个帧的网页,这些帧包括从外部系统620和社交网络系统630中检索的文本和/或图像数据。在各种实施方式中,标记语言文档614包括数据文件,其包括可扩展标记语言(XML)数据、可扩展超文本标记语言(XHTML)数据或其他标记语言数据。此外,标记语言文档614可以包括JavaScript对象表示法(JSON)数据、具有填充的JSON(JSONP)以及JavaScript数据,以便于在外部系统620与用户设备610之间的数据交换。在用户设备610上的浏览器应用612可以使用JavaScript编译器来解码标记语言文档614。

标记语言文档614还可以包括或者链接至应用或应用框架,例如,FLASHTM或UnityTM应用、SilverLightTM应用框架等。

在一个实施方式中,用户设备610还包括一个或多个小型文本文件(cookies)616,包括表示用户设备610的用户是否登录到社交网络系统630的数据,该小型文本文件能够修改从社交网络系统630传送给用户设备610的数据。

外部系统620包括一个或多个Web服务器,该Web服务器包括使用网络650传送给用户设备610的一个或多个网页622a、622b。外部系统620独立于社交网络系统630。例如,外部系统620与第一域相关联,而社交网络系统630与单独的社交网络域相关联。包括在外部系统620中的网页622a、622b包括:识别内容的并且包括规定所识别的内容的格式或呈现的指令的标记语言文档614。

社交网络系统630包括用于社交网络的一个或多个计算设备,社交网络包括多个用户并且为社交网络的用户提供与社交网络的其他用户通信和交互的能力。在有些情况下,社交网络可由图谱表示,即,包含边线与节点的数据结构。其他数据结构也可以用于表示社交网络,该数据结构包含但不限于数据库、对象、类、meta元素、文件或任何其他数据结构。社交网络系统630可以由操作者执行、管理或控制。社交网络系统630的操作者可以是人类、自动应用或用于在社交网络系统630内管理内容、调整策略以及收集使用度量的一系列应用。可以使用任何类型的操作者。

用户可以加入社交网络系统630,然后添加对与他们希望连接的任意数量的社交网络系统630的其他用户的连接。如本文中使用的,术语“好友”指社交网络系统630中用户经由社交网络系统630而与其形成连接、关联、或者关系的任何其他用户。例如,在实施方式中,如果社交网络系统630中的用户表示为社交图谱中的节点,那么术语“好友”可以指两个用户节点之间形成的并直接连接两个用户节点的边线。

连接可以由用户明确添加或者可以由社交网络系统630基于用户的共同特性(例如,用户是同一所教育机构的校友)自动创建。例如,第一用户明确选择特定的其他用户成为朋友。社交网络系统630中的连接通常是双向的,但不必如此,因此,术语“用户”和“好友”取决于参考体系。社交网络系统630中的用户之间的连接通常是双边的(“双向的”)或者“相互的”,但是,连接也可以是单边的或者“单向的”。例如,如果鲍勃和乔是社交网络系统630的两个用户并且连接至彼此,那么鲍勃和乔是彼此的连接。如果,另一方面,鲍勃希望连接至乔以观看由乔传送至社交网络系统630的数据,但是乔不希望形成相互连接,所以可以建立单边连接。用户之间的连接可以是直接连接;然而,社交网络系统630的一些实施方式允许通过一个或多个等级连接或一个或多个程度的隔离的间接连接。

除了建立和维护用户之间的连接并且允许用户之间进行交互之外,社交网络系统630向用户提供对社交网络系统630支持的各类项目采取行动的能力。这些项目可包括:社交网络系统630的用户可属于的组群或网络(即,人、实体和概念的社交网络),用户可能感兴趣的事件或日历条目,用户可以通过社交网络系统630使用的基于计算机的应用,允许用户经由由社交网络系统630提供的服务或者通过社交网络系统购买或销售商品的交易,以及用户可以在社交网络系统630上或社交网络系统外进行的与广告的交互。这些仅是用户可作用于社交网络系统630的项目的几个实例,并且许多其他实例也是可能的。用户可以与能够在社交网络系统630中、或者在独立于社交网络系统630的或通过网络650与社交网络系统630耦接的外部系统620中表示的任何事物交互。

社交网络系统630还能够链接各种实体。例如,社交网络系统630能够允许用户通过API、web服务或其他通信信道彼此以及与外部系统620或其他实体交互。社交网络系统630生成和维护包括通过多个边线互连的多个节点的“社交图谱”。社交图谱中的每个节点均可表示可作用于另一节点和/或被另一节点作用的任何实体。社交图谱可包括各种类型的节点。节点的类型的实例包括用户、非个人实体、内容项目、网页、组群、活动、消息、概念、以及可以由社交网络系统630中的对象表示的任何其他事情。在社交图谱中的两个节点之间的边线可以表示在这两个节点之间的特定类型的连接或关联,这可以由节点关系或者由一个节点在另一个节点上进行的动作而产生。在一些实例中,在节点之间的边线可以加权。边线的权重可以表示与边线相关联的属性,诸如,在节点之间的连接或关联的强度。不同类型的边线可设置有不同的权重。例如,可以给在一个用户“点赞”另一个用户时创建的边线提供一个权重,同时可以给在用户与另一个用户交好友时创建的边线提供一个不同的权重。

举例来说,当第一用户将第二用户识别为好友时,社交图谱中生成将表示第一用户的节点与表示第二用户的第二节点连接的边线。由于各个节点彼此相关或交互,所以社交网络系统630修改连接各个节点的边线以反映关系和交互。

社交网络系统630还包括增强用户与社交网络系统630之间交互的用户生成内容。用户生成内容可包括用户可添加、上传、发送、或者“发贴”到社交网络系统630的任何事物。例如,用户将帖子从用户设备610传送至社交网络系统630。帖子可包括数据(诸如,状态更新或其他文本数据)、位置信息、图像(诸如,照片)、视频、链接、音乐或其他类似的数据和/或媒体。第三方也可以将内容添加至社交网络系统630。内容“项目”表示为在社交网络系统630中的对象。以此方式,鼓励社交网络系统630的用户通过各种通信信道发布文本和各种媒体类型的内容项目来彼此通信。这种通信增加了用户彼此的交互,并且增加了用户与社交网络系统630交互的频率。

社交网络系统630包括Web服务器632、API请求服务器634、用户配置文件存储器636、连接存储器638、动作记录器640、活动日志642、以及授权服务器644。在本发明的实施方式中,社交网络系统630可以包括用于各种应用的另外的、更少的、或不同的部件。为了不使该系统的细节晦涩,未示出诸如网络接口、安全机制、负载平衡器、故障转移服务器、管理和网络操作控制台等的其他部件。

用户配置文件存储器636维护关于用户账户的信息,包括简介、人口统计数据或其他类型的描述信息,例如,用户公布的或者社交网络系统630推断的工作经历、教育背景、爱好或偏好、位置等。将该信息储存在用户配置文件存储器636内,以便唯一地识别每个用户。社交网络系统630还在连接存储器638中储存描述在不同的用户之间的一个或多个连接的数据。连接信息可表示具有相似或共同工作经历、组群成员资格、爱好或教育背景的用户。此外,社交网络系统630包括在不同的用户之间的用户定义连接,允许用户指定他们与其他用户的关系。例如,用户定义连接允许用户与其他用户生成对应于该用户现实生活中关系的诸如朋友、同事、伙伴等的关系。用户可从预定类型的连接中选择或者根据需要定义其自身的连接类型。与社交网络系统630中诸如非个人实体、储存桶(bucket)、集群中心(cluster centers)、图像、兴趣、页面、外部系统、概念等的其他节点的连接也可存储在连接存储器638中。

社交网络系统630维护关于用户可以与之交互的对象的数据。为了维护该数据,用户配置文件存储器636和连接存储器638存储通过社交网络系统630维护的对应类型对象的实例。每个对象类型均具有适合于存储适于该对象类型的信息的信息字段。例如,用户配置文件储存器636包括具有适合于描述用户的账户和与用户的账户相关的信息的字段的数据结构。在创建特定类型的新对象时,社交网络系统630初始化对应类型的新数据结构,将唯一对象标识符分配给该数据结构,并且根据需要,开始将数据添加至对象。这种情况可能发生在,例如,用户变成社交网络系统630的用户时,社交网络系统630在用户配置文件存储器636中生成用户配置文件的新实例,将唯一标识符分配给用户账户时,以及开始使用用户提供的信息来填充用户账户的字段时。

连接存储器638包括适合于描述用户与其他用户的连接、与外部系统620的连接、或者与其他实体的连接的数据结构。连接存储器638还可以使连接类型与用户的连接相关联,用户的连接可以与用户的隐私设置一起用于控制对关于用户的信息的访问。在本发明的实施方式中,用户配置文件存储器636和连接存储器638可以实现为联合数据库。

存储在连接存储器638、用户配置文件存储器636以及活动日志642中的数据使社交网络系统630能够生成这样一种社交图谱,即,使用节点来确定各种对象并且使用连接节点的边线确定不同对象之间的关系。例如,如果第一用户在社交网络系统630中与第二用户创建连接,则来自用户配置文件存储器636中的第一用户和第二用户的用户账户可用作社交图谱中的节点。连接存储器638储存的第一用户与第二用户之间的连接是在与第一用户和第二用户相关联的节点之间的边线。继续这个实例,然后,第二用户可以在社交网络系统630内给第一用户发送消息。可被存储的发送消息的动作是社交图谱中表示第一用户与第二用户的两个节点之间的另一边线。此外,可以识别消息本身,并且消息本身可被包括在社交图谱中作为连接至表示第一用户和第二用户的节点的另一节点。

在另一实例中,第一用户可在由社交网络系统630维护的图像中(或者,可替换地,在由社交网络系统630外部的另一系统维护的图像中)给第二用户加标签。图像本身可表示为社交网络系统630中的节点。加标签动作可在第一用户与第二用户之间创建边线以及在每个用户与图像(也是社交图谱中的节点)之间创建边线。在又一实例中,如果用户确认参加某事件,则用户和该事件是从用户配置文件存储器636中获得的节点,其中,对该事件的参加是可从活动日志642中检索到的节点之间的边线。通过生成并维护社交图谱,社交网络系统630包括描述多种不同类型的对象以及这些对象之间的交互和连接的数据,从而提供社交相关信息的丰富来源。

Web服务器632经由网络650将社交网络系统630链接至一个或者多个用户设备610和/或一个或者多个外部系统620。Web服务器632为web网页以及其他web相关的内容(例如,Java、JavaScript、Flash、XML等)服务。Web服务器632可包括用于接收和路由社交网络系统630与一个或者多个用户设备610之间的消息的邮件服务器或者其他消息功能。消息可以是即时消息、队列消息(例如,电子邮件)、文本和SMS消息或者任何其他合适的消息格式。

API请求服务器634允许一个或者多个外部系统620和用户设备610通过调用一个或者多个API功能来访问来自社交网络系统630中的信息。API请求服务器634还可以允许外部系统620通过调用API来将信息发送至社交网络系统630。在一个实施方式中,外部系统620通过网络650将API请求发送至社交网络系统630,并且API请求服务器634接收API请求。API请求服务器634通过调用与API请求相关联的API来处理该请求,以生成适当的响应,API请求服务器634通过网络650将该响应传送至外部系统620。例如,API请求服务器634响应于API请求来收集与用户相关联的数据,诸如已经登录到外部系统620中的用户连接,并且将收集的数据传送至外部系统620。在另一实施方式中,用户设备610以与外部系统620相同的方式通过API与社交网络系统630进行通信。

动作记录器640能够从Web服务器632接收有关社交网络系统630上和/或社交网络系统630外的用户动作的通信。动作记录器640利用有关用户动作的信息填充活动日志642,从而使社交网络系统630能够发现其用户在社交网络系统630内和在社交网络系统630之外所采取的各种动作。特定用户对社交网络系统630中另一节点采取的任何动作可以通过在活动日志642中或者相似数据库中或者其他数据存储库中维护的信息而与每个用户的账户相关联。所识别并且储存的用户在社交网络系统630内采取的动作的实例可以包括:例如添加与另一个用户的连接,将消息发送给另一个用户,从另一个用户读取消息,查看与另一个用户相关联的内容,参加另一个用户发布的事件,发布图像,尝试发布图像,或者与另一个用户或另一个对象交互的其他动作。当用户在社交网络系统630内采取动作时,该动作被记录在活动日志642中。在一个实施方式中,社交网络系统630将活动日志642维护为条目的数据库。当在社交网络系统630内采取动作时,将有关该动作的条目添加至活动日志642。活动日志642可以被称为动作日志。

此外,用户动作可与社交网络系统630外部的实体(诸如独立于社交网络系统630的外部系统620)内出现的概念(concept)和动作相关联。例如,动作记录器640可以从Web服务器632接收描述用户与外部系统620的交互的数据。在该实例中,外部系统620根据社交图谱中的结构化的动作和对象报告用户的交互。

用户与外部系统620交互的动作的其它实例包括用户表示对外部系统620或另一个实体感兴趣,用户将讨论外部系统620或外部系统620内的web网页622a的评论发布至社交网络系统630,用户将与外部系统620相关联的统一资源定位符(URL)或其它标识符发布至社交网络系统630,用户参与与外部系统620相关联的事件,或者用户进行的与外部系统620相关的任何其它动作。因此,活动日志642可包括描述社交网络系统630的用户与独立于社交网络系统630的外部系统620之间的交互的动作。授权服务器644强制执行社交网络系统630中用户的一个或多个隐私设置。用户的隐私设置确定可分享与用户相关的特定信息的方式。隐私设置包括与用户相关联的特定信息的规范和可与其分享信息的一个实体或多个实体的规范。可与其分享信息的实体的实例可包括其他用户、应用、外部系统620、或者可潜在访问该信息的任何实体。用户可以分享的信息包括用户账户信息,诸如,配置文件照片、与用户相关联的电话号码、用户的连接(connection,社会关系)、用户采取的动作(诸如,添加连接)、改变用户配置文件信息等。

可以提供不同的层面水平的隐私设置规范。例如,隐私设置可以确定与其他用户分享的特定信息;隐私设置确定工作电话号码或相关信息的特定组合,诸如,包括配置文件照片、住宅电话号码、和身份的个人信息。可替换地,隐私设置可应用于与用户相关联的所有信息。还可以在各个层面水平规定可访问特定信息的实体组合的规范。可以分享信息的各组实体可以包括例如用户的所有好友、好友的所有好友、所有应用或者所有外部系统620。一实施方式允许该组实体的规范包括实体的列举。例如,用户可提供允许访问特定信息的外部系统620的列表。另一实施方式允许该规范包括一组实体,以及不允许访问该信息的例外。例如,用户可允许所有外部系统620访问用户的工作信息,但是规定不允许访问该工作信息外部系统620的列表。某些实施方式将不被允许访问某些信息的例外的列表称为“黑名单”。阻止属于由用户规定的黑名单的外部系统620访问在隐私设置中规定的信息。信息的规范的层面以及与其分享信息的实体的规范的层面的各种组合是可能的。例如,所有的个人信息可以与好友分享,而所有工作信息可以与好友的好友分享。

授权服务器644包括逻辑,以确定用户的好友、外部系统620、和/或其他应用和实体是否能够访问与用户相关联的某些信息。外部系统620需要授权服务器644的授权以访问用户的更多私人的和敏感的信息,诸如用户的工作电话号码。授权服务器644基于用户的隐私设置来确定是否允许另一用户、外部系统620、应用或另一实体访问与该用户相关联的信息,包括有关用户采取的动作的信息。

在一些实施方式中,社交网络系统630可以包括复合视频模块646。复合视频模块646可以利用复合视频模块102实现,如本文中详细地论述的。在一些实施方式中,复合视频模块646的一个或多个功能可以在用户设备610中实现。

硬件实现方式

通过各种机器和计算机系统架构以及各种网络和计算环境可以实现上述过程和特征。图7示出了根据本发明的实施方式的可用于实现在本文中描述的一个或多个实施方式的计算机系统700的实例。计算机系统700包括使得计算机系统700执行本文中讨论的过程和特征的一系列指令。计算机系统700可以连接(例如,联网)至其他机器。在联网部署中,计算机系统700可在客户端-服务器网络环境中的服务器机器或客户端机器的能力下运行,或者作为对等(或分布式)网络环境中的对等机器运行。在本发明的实施方式中,计算机系统700可以是社交网络系统630、用户设备610以及外部系统720、或者它们的部件。在本发明的实施方式中,计算机系统700可以是构成所有或一部分社交网络系统630的多个服务器中的一个服务器。

计算机系统700包括处理器702、缓存704以及一个或多个可执行的模块和驱动器,其储存在计算机可读介质上,针对在本文中描述的过程和特征。此外,计算机系统700包括高性能输入/输出(I/O)总线706和标准I/O总线708。主桥710使处理器702耦接至高性能I/O总线706,而I/O总线桥712使这两个总线706和708彼此耦接。系统存储器714和一个或多个网络接口716耦接至高性能I/O总线706。计算机系统700可进一步包括视频存储器和耦接至视频存储器(未示出)的显示设备。大容量存储器718和I/O端口720耦接到标准I/O总线708。计算机系统700可以可选地包括键盘和点控设备、显示设备、或耦接至标准I/O总线708的其他输入/输出设备(未示出)。总之,这些元件旨在表示计算机硬件系统的广义分类,其中包括但不限于基于由加利福尼亚圣克拉拉因特尔公司制造的x86-兼容处理器和基于由加利福尼亚森尼韦尔超微半导体(AMD)公司制造的x86-兼容处理器以及任何其他合适的处理器的计算机系统。

操作系统管理和控制计算机系统700的操作,包括至软件应用的数据的输入和来自软件应用的数据的输出(未示出)。操作系统提供在系统上执行的软件应用程序与系统的硬件部件之间的接口。可以使用任何合适的操作系统,诸如,LINUX操作系统、从加利福尼亚库比蒂诺(Cupertino)苹果电脑公司可获得的Apple Macintosh操作系统、UNIX操作系统、操作系统、BSD操作系统等。其他实施方式是可能的。

下面将更为详细地描述计算机系统700的元件。具体地,网络接口716提供计算机系统700和任何大范围网络之间,如以太网(例如,IEEE 802.3)网络,背板(backplane)等的通信。大容量存储器718为执行以上确定的各个计算系统实现的上述进程和特征的数据和编程指令提供永久存储器,而系统存储器714(例如,DRAM)提供当由处理器702执行时的数据和编程指令的临时存储器。I/O端口720可以是提供可以耦接至计算机系统700的另外的外围设备之间的通信的一个或多个串行和/或并行通信端口。

计算机系统700可以包括各种系统架构,并且可以重新布置计算机系统700的各个部件。例如,缓存704可以与处理器702一起在芯片上。可替换地,缓存704和处理器702可以封装在一起作为“处理器模块”,处理器702称为“处理器核”。此外,本发明的某些实施方式可以既不需要也不包括所有的上述部件。例如,耦接至标准I/O总线708的外围设备可耦接至高性能I/O总线706。此外,在一些实施方式中,可以仅存在单个总线,计算机系统700的部件耦接至单个总线。此外,计算机系统700可包括诸如额外处理器、存储设备或存储器的额外部件。

通常,本文中描述的过程和特征可以实现为操作系统或具体应用、部件、程序、对象、模块、或称为“程序”的一系列指令中的部分。例如,一个或多个程序可用于执行本文描述的具体进程。通常,程序包括计算机系统700中的各个存储器和存储设备中的一个或者多个指令,该一个或者多个指令在由一个或者多个处理器读取或者执行时,使得计算机系统700进行操作以执行本文中所描述的进程和特征。在软件、固件、硬件(例如,专用集成电路)、或者它们的任意组合中可以实现本文中所描述的进程和特征。

在一个实现方式中,本文中所描述的进程和特征被计算机系统700实现为独自或者共同地在分布式计算环境中运行的一系列可执行模块。通过硬件、存储在计算机可读介质(或者机器可读介质)上的可执行模块、或者两者的组合可以实现上述模块。例如,模块可以包括由在硬件系统中的处理器(例如,处理器702)执行的多个或一系列指令。最初,该一系列指令可被存储在存储设备上,诸如,大容量存储器718。然而,该一系列指令可被存储在任何合适的计算机可读存储介质上。此外,该一系列指令不需要本地存储,可通过网络接口716从远程存储设备(例如,网络上的服务器)接收。指令从诸如大容量存储器718等存储设备被复制到系统存储器714中,然后被处理器702访问和执行。在各个实现方式中,一个模块或多个模块可由一个或多个位置中的一个处理器或多个处理器执行,例如,在并行处理环境中的多个服务器。

计算机可读介质的实例包括但不是限于,诸如易失性和非易失性存储设备的可记录型介质;固态存储器;软磁盘和其它可移动磁盘;硬盘驱动器;磁性介质;光盘(例如,光盘只读存储器(CD ROMS)、数字多用途磁盘(DVD));其它类似的非瞬时性(或瞬时性的)、有形的(或非有形的)存储介质;或者适合于存储、编码或携带由计算机系统700执行以进行本文中描述的任意一个或多个进程和特征的一系列指令的任何类型的介质。

为了说明性目的,提出很多具体细节以提供对描述的全面理解。然而,对本领域技术人员显而易见的是,在没有这些具体细节的情况下可以实现本公开的实施方式。在一些实例中,以框图形式示出了模块、结构、过程、特征以及设备,以避免描述变得晦涩。在其他情况下,示出了表示数据和逻辑流的功能框图和流程图。可以通过除了本文中明确描述和描绘的方式以外的方式不同地组合、分开、去除、重新排列以及替换框图和流程图的组成部分(例如,模块、方框、结构、设备、特征等)。

在该说明书中引用“一个实施方式”、“实施方式”、“其他实施方式”、“一系列实施方式”、“一些实施方式”、“各个实施方式”等意味着结合实施方式描述的特定特征、设计、结构或特性包括在本公开的至少一个实施方式中。例如,在本说明书中的各个地方中出现的短语“在一个实施方式中”或者“在实施方式中”并不一定必须全部指同一个实施方式,也不是其他实施方式的相互排斥的独立或者可替代的实施方式。此外,无论是否存在参考“实施方式”等的表达,描述的各个特征可以不同地结合和包括在一些实施方式中,而且在其他实施例中可以不同地省去。相似地,描述的各个特征可以是一些实施方式的优选或要求,而不是其他实施方式的优选或要求。

本文使用的语言主要出于可读性和说明性目的而选择,并且选择其不是为了界定或限制发明主题。因此,旨在不由细节描述限制本发明的范围,而是由基于此的申请中发布的任何权利要求限制本发明的范围。因此,本发明的实施方式的公开内容旨在说明而并非限制本发明的范围,本发明的范围在所附权利要求中阐述。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1