用于识别匹配内容的系统和方法与流程

文档序号:17439454发布日期:2019-04-17 04:33阅读:165来源:国知局
用于识别匹配内容的系统和方法与流程

本技术涉及内容匹配领域。更具体地,本技术涉及用于识别匹配内容项的技术。



背景技术:

如今,人们经常将计算装置(或系统)用于各种各样的目的。用户可以使用其计算装置来例如彼此交互、访问内容、共享内容和创建内容。在某些情况下,内容项可以包括来自社交网成员的帖子。帖子可以包括文本和媒体内容项,例如,图像、视频和音频。这些帖子可以发布到社交网上,以供他人消费。



技术实现要素:

本公开的各种实施例可以包括系统、方法和非暂时性计算机可读介质,其被配置为:获得具有多个视频帧的测试内容项;基于对应于测试内容项的一组视频帧来生成至少一个视频指纹;使用所述视频指纹的至少一部分来确定至少一个参考内容项;并且至少部分地基于所述测试内容项的视频指纹和所述参考内容项的一个或多个视频指纹来确定所述测试内容项中与所述参考内容项的至少一部分匹配的至少一部分。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为:分别为该组视频帧中的每个视频帧生成特征向量,其中,特征向量包括描述视频帧的一组特征值;将该组视频帧的特征向量转换到频域;并且通过量化对应于一个或多个视频帧的一组频率分量,来分别为每个视频帧生成一组比特。

在一个实施例中,包括在视频帧的特征向量中的特征值至少对应于测量的视频帧的亮度、测量的视频帧的色调(coloration)或测量的视频帧中的一组或多组像素之间的变化。

在一个实施例中,通过应用快速傅立叶变换(fft)、离散余弦变换(dct)或这两者,将视频帧的特征向量转换到频域。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为在频域内对视频帧插值,其中,所述插值使视频指纹对应于预定义的帧速率。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为获得与生成视频指纹的一组帧中的第一帧对应的一组比特,至少部分基于该组比特的第一部分识别至少一个候选帧,并基于该候选帧确定参考内容项。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为将该组比特的第一部分散列到倒排索引中的库(bin),其中,所述库引用描述所述至少一个候选帧的信息。

在一个实施例中,描述候选帧的信息确定:参考内容项和确定候选帧在参考内容项中的位置的偏移。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为:获得与从其生成视频指纹的该组帧中的至少一个第一帧对应的一组比特;至少部分地基于该组比特的第一部分来识别至少一个候选帧;并且确定对应于第一帧的该组比特和对应于候选帧的一组比特之间的汉明距离满足阈值。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为:获得与从其生成视频指纹的该组帧中的至少一个第二帧对应的一组比特;确定与参考内容项中的新帧对应的一组比特;并且确定对应于第二帧的该组比特和对应于新帧的该组比特之间的汉明距离满足阈值。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为:当识别出测试内容项的帧和参考内容项的指纹帧之间的匹配时,评价从其中生成匹配指纹帧的参考内容项,以确定测试内容项和参考内容项之间的匹配内容的范围。

本公开的各种实施例可包括系统、方法和非暂时性计算机可读介质,其被配置为:使用测试内容项的一个或多个第一指纹和参考内容项的一个或多个第一指纹,来评价测试内容项的至少一部分和参考内容项的至少一部分,其中,所述第一指纹对应于第一类型的媒体;确定满足至少一个验证标准;并且使用测试内容项的一个或多个第二指纹和参考内容项的一个或多个第二指纹,来评价测试内容的部分和参考内容的部分,其中,所述第二指纹对应于与所述第一类型的媒体不同的第二类型的媒体。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为:获得与测试内容项的部分对应的一个或多个第二指纹;获得与参考内容项的部分对应的一个或多个第二指纹;并且使用测试内容项的第二指纹和参考内容项的第二指纹来确定测试内容项的部分与参考内容项的部分匹配。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为使用测试内容项的第一指纹和参考内容项的第一指纹来确定测试内容项的部分与参考内容项的部分不匹配。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为使用测试内容项的第一指纹和参考内容项的第一指纹来确定测试内容项的部分与参考内容项的部分匹配。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为确定在阈值时间段内的测试内容项和参考内容项之间没有确定匹配。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为确定在阈值帧数的测试内容项和参考内容项之间没有确定匹配。

在一个实施例中,第一指纹和第二指纹对应于:音频指纹、视频指纹或缩略图指纹中的一个。

在一个实施例中,第一指纹对应于音频指纹,并且其中,第二指纹对应于视频指纹。

在一个实施例中,第一指纹对应于缩略图指纹,并且其中,第二指纹对应于视频指纹。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为:使用测试内容项的一个或多个第三指纹和参考内容项的一个或多个第三指纹来评价测试内容的部分和参考内容的部分,其中,第三指纹对应于与第一类型媒体和第二类型媒体不同的第三类型媒体。

本公开的各种实施例可以包括系统、方法和非暂时性计算机可读介质,其被配置为:基于对应于测试内容项的一组帧生成至少一个指纹;使用指纹的至少一部分生成一组失真指纹;并且使用该组失真指纹确定一个或多个参考内容项,其中,针对至少一个参考内容项评价测试内容项,以识别匹配内容。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为获得与从其中生成指纹的该组帧中的第一帧对应的一组比特,并为该组比特的至少一部分生成一组二进制串置换。

在一个实施例中,在每个二进制串中置换一个或多个比特。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为:为该组比特的部分生成第一组二进制串置换,其中,在每个二进制串中置换一个比特,使用第一组二进制串置换确定没有识别出参考内容项,并且为该组比特的部分生成第二组二进制串置换,其中,在每个二进制串中置换多个比特。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为:获得对应于第一失真指纹的一组比特;至少部分基于该组比特的一部分识别至少一个候选帧;并且基于该候选帧,确定至少一个参考内容项。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为将该组比特的部分散列(hash)到倒排索引中的库,其中,所述库引用描述所述至少一个候选帧和参考内容项的信息。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为确定使用该组失真指纹识别参考内容项不会使计算系统的中央处理单元(cpu)负载超过阈值负荷。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为确定使用所述至少一个指纹没有识别出参考内容项。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为使用至少一个指纹来确定至少一个参考内容项,并且确定没有识别出测试内容项和参考内容项之间的匹配。

在一个实施例中,所述系统、方法和非暂时性计算机可读介质被配置为使用至少一个指纹来确定至少一个参考内容项,并且确定测试内容项和参考内容项之间的匹配在阈值匹配距离内。

应该理解,从附图和下面的详细描述中,公开的技术的许多其他特征、应用、实施例和/或变化将是显而易见的。在不脱离所公开技术的原理的情况下,可以采用本文描述的结构、系统、非暂时性计算机可读介质和方法的额外和/或替代实现方式。

在所附权利要求中特别公开了根据本发明的实施例,涉及一种方法、存储介质、系统和计算机程序产品,其中,在一个权利要求类别(例如,方法)中提到的任何特征也可以在另一权利要求类别(例如,系统)中要求保护。仅出于形式原因而选择所附权利要求中的向前的从属或引用。然而,也可以要求保护由对任何先前权利要求(特别是多个从属关系)的有意引用而产生的任何主题,使得公开了权利要求及其特征的任何组合,并且可以对其要求保护,而与所附权利要求中选择的从属关系无关。可以要求保护的主题不仅包括所附权利要求中阐述的特征的组合,还包括权利要求中的特征的任何其他组合,其中,权利要求中提到的每个特征可以与权利要求中的任何其他特征或其他特征的组合结合。此外,在本文中描述或描绘的任何实施例和特征可以在单独的权利要求中和/或与在本文中描述或描绘的任何实施例或特征或与所附权利要求的任何特征的任何组合中进行保护。

附图说明

图1示出了根据本公开的实施例的示例系统,该示例系统包括被配置为提供对各种内容项的接入的示例内容提供商模块。

图2示出了根据本公开的实施例的内容匹配模块的示例。

图3示出了根据本公开的实施例的指纹采集模块的示例。

图4示出了根据本公开的实施例的存储模块的示例。

图5示出了根据本公开的实施例的匹配模块的示例。

图6示出了根据本公开的实施例的用于从帧中提取特征值的示例方法。

图7示出了根据本公开的实施例的用于存储和检索指纹数据的示例倒排索引。

图8a-b示出了根据本公开的实施例的用于识别内容项之间的匹配内容的示例方法。

图9a-c示出了根据本公开的实施例的用于处理直播内容流的示例方法。

图10示出了根据本公开的各种实施例的用于指纹识别内容的示例处理。

图11示出了根据本公开的各种实施例的使用不同类型的指纹的匹配内容的示例处理。

图12示出了根据本公开的各种实施例的使用失真指纹的匹配内容的示例处理。

图13示出了根据本公开的实施例的示例系统的网络图,该示例系统包括可以在各种场景中使用的示例社交网络系统。

图14示出了根据本公开的实施例的可以在各种场景中使用的计算机系统或计算装置的示例。

附图仅出于说明的目的而绘制了所公开技术的各种实施例,其中,附图使用相同的附图标记来标识相同的元件。本领域技术人员将从下面的讨论中容易地认识到,在不脱离本文描述的公开技术的原理的情况下,可以采用附图中所示的结构和方法的替代实施例。

具体实施方式

识别匹配内容的方法

如今,人们经常将计算装置(或系统)用于各种各样的目的。用户可以使用其计算装置来例如彼此交互、访问内容、共享内容和创建内容。在某些情况下,内容项可以包括来自社交网成员的帖子。帖子可以包括文本和媒体内容项,例如,图像、视频和音频。这些帖子可以发布到社交网上,以供他人消费。

在传统方法下,内容可以通过内容提供商广播。例如,这样的内容提供商可以通过各种广播媒体(例如,电视、卫星、互联网等)广播内容。在一个示例中,广播可以包括发布者正在捕捉和流式直播的内容。例如,发布者可以提供内容(例如,直播音乐会、电视节目首播等),以作为直播内容流的一部分来广播。可以使用例如视频捕捉装置(例如,摄像机)和/或音频捕捉装置(例如,麦克风)来捕捉这些事件。该捕捉的内容然后可以由内容提供商(例如,社交网络系统)实时编码并通过网络(例如,互联网)分发给用户装置。在一些情况下,未经授权的实体可以捕捉发布者的直播内容流的副本,并通过内容提供商而流式传输所复制的内容,作为单独的直播内容流的一部分。例如,当在电视显示器上呈现内容时,该实体可以记录发布者的直播内容流的视频。在另一示例中,未授权实体可以捕捉通过不同媒体(例如,卫星等)广播的事件流并通过内容提供商发布所捕捉的流。

在传统方法下,很难检测到这种未经授权的直播内容流,当直播内容流包含受版权保护的内容时,这种困难尤其成问题。例如,在传统方法下,内容提供商通常会在内容项已经全部上传到内容提供商之后检查内容项是否侵犯了受版权保护的内容项。内容提供商然后针对受版权保护的内容项分析上传的内容项,以识别是否有任何部分匹配。虽然这种方法可能足以检测按需服务的内容项的版权侵权,但是通常不足以检测流式直播内容项中的版权侵权。因此,这种传统方法在解决计算机技术中出现的这些和其他问题方面可能并不有效。

植根于计算机技术的改进方法克服了与特别是计算机技术领域中出现的传统方法相关的前述和其他缺点。在各种实施例中,发布者可以通过社交网络系统提供要流式传输或广播的内容作为直播内容流的一部分。发布者可以指示直播内容流是受版权保护的,并且基于该指示,社交网络系统可以在内容流式直播时生成内容的指纹。例如,这些指纹可以存储在参考数据库中,并用于识别其他直播内容流和/或点播(on-demand,按需)内容项中的复制内容。例如,当发布者的内容正在流式直播时,社交网络系统可以确定任何其他直播内容流和/或点播内容项是否全部或部分匹配发布者的受版权保护的直播内容流。与发布者的直播内容流匹配的内容项的任何部分都可能侵犯版权或其他合法权利。在这种情况下,可以向未授权的广播公司和/或直播内容流的发布者(例如,版权持有者)通知可能的版权侵犯,并且可以采取适当的行动。在一些实施例中,未经授权的广播公司发布的侵权直播内容流和/或点播内容项自动变得通过社交网络系统不可访问。

图1示出了根据本公开的实施例的示例系统100,该示例系统100包括被配置为提供对各种内容项的接入的示例内容提供商模块102。如图1的示例所示,内容提供商模块102可以包括内容上传模块104、直播流模块106、内容模块108和内容匹配模块110。在一些实例中,示例系统100可以包括至少一个数据存储器112。在该图以及本文中的所有附图中所示的部件(例如,模块、元件等)仅是示例性的,并且其他实现方式可以包括额外的、更少的、集成的或不同的部件。一些部件可能未示出,以免相关细节晦涩。

在一些实施例中,内容提供商模块102可以部分或全部实现为软件、硬件或其任意组合。通常,本文所讨论的模块可以与软件、硬件或其任意组合相关联。在一些实现方式中,模块的一个或多个功能、任务和/或操作可以由软件例程、软件进程、硬件和/或其任意组合来实施或执行。在一些情况下,内容提供商模块102可以部分或全部实现为在一个或多个计算装置或系统上运行的软件,例如,在用户或客户端计算装置等上运行的软件。在一个示例中,内容提供商模块102或其至少一部分可以被实现为在诸如图13的用户装置1310等用户计算装置或客户端计算系统上运行的应用程序(例如,app)、程序或小应用程序等或在其中实现。在另一示例中,可以使用包括一个或多个服务器,例如网络服务器或云服务器的一个或多个计算装置或系统来实现内容提供商模块102或其至少一部分。在一些实例中,内容提供商模块102可以部分或全部在社交网络系统(或服务)内实现或被配置为与社交网络系统(或服务)结合操作,例如,图13的社交网络系统1330。

内容提供商模块102可以被配置为与至少一个数据存储器112通信和/或操作,如示例系统100所示。至少一个数据存储器112可以被配置为存储和维护各种类型的数据。例如,数据存储器112可以存储描述通过社交网络系统流式直播的各种内容或社交网络系统的用户发布的内容项的信息。这种信息可以包括例如为直播内容流和点播内容项生成的指纹(例如,比特序列)。在一些实现方式中,至少一个数据存储器112可以存储与社交网络系统(例如,图13的社交网络系统1330)相关联的信息。与社交网络系统相关联的信息可以包括关于用户、社交关系、社交互动、位置、地理围栏区域、地图、地点、事件、页面、群组、帖子、通信、内容、提要、账户设置、隐私设置、社交图的数据和各种其他类型数据。在一些实现方式中,至少一个数据存储器112可以存储与用户相关联的信息,例如,用户标识符、用户信息、简档信息、用户指定的设置、由用户产生或发布的内容以及各种其他类型的用户数据。

内容提供商模块102可以被配置为向用户提供对通过社交网络系统发布的内容项的接入。例如,用户可以与在用户的计算装置上运行的软件应用程序(例如,社交网络应用程序)提供的界面交互。该界面可以包括向社交网络系统发布或上传内容项的选项。当发布内容项时,内容上传模块104可用于将描述内容项的数据从计算装置传送到社交网络系统。例如,这样的内容项可以包括文本、图像、音频和视频。社交网络系统然后可以通过社交网络系统提供内容项,包括例如在一个或多个新闻提要中。在一些实施例中,该界面还可以包括用于通过社交网络系统流式直播内容项的选项。当发起直播内容流时,直播流模块106可用于将描述要流式直播(steamedlive)的内容的数据从计算装置传送到社交网络系统。直播流模块106可以利用允许内容的直播流传输的任何公知的技术,包括例如实时消息传送协议(rtmp)。

软件应用程序提供的界面也可以用于例如使用内容模块108访问发布的内容项。例如,内容模块108可以在用户的新闻提要中包括内容项。这样的内容项可以包括点播内容项(例如,视频点播或“vod”)以及正在流式直播的内容。在该示例中,用户可以在浏览新闻提要的同时访问内容项。在另一示例中,用户可以通过界面搜索内容项、发布内容项的用户和/或使用与内容项对应的搜索项,来访问内容项。在一个示例中,用户可以选择观看直播内容流的选项,并且作为响应,社交网络系统可以向用户的计算装置发送对应于直播内容流的数据。在该示例中,社交网络系统可以继续发送与直播内容流对应的数据,直到例如直播内容流的发布者停止流传输,或者如果用户选择停止直播内容流的选项。内容匹配模块110可以被配置为识别正在通过社交网络系统流式直播或点播可用的内容项之间的匹配(例如,版权侵权)。下面将参考图2提供关于内容匹配模块110的更多细节。

图2示出了根据本公开的实施例的内容匹配模块202的示例。在一些实施例中,图1的内容匹配模块110可以实现为内容匹配模块202。如图2所示,内容匹配模块202可以包括指纹采集模块204、存储模块206、匹配模块208和通知模块210。

在各种实施例中,指纹采集模块204被配置为确定或获得内容项的相应指纹。例如,当社交网络系统接收到直播内容流时,可以确定该流的一组指纹。在另一示例中,在内容项上传到社交网络系统之后,可以为该内容项确定一组指纹。在一些实施例中,正在流式直播或上传内容项的发布者可以选择一个选项来指示该内容项受到保护,例如,受版权保护。在这样的实施例中,响应于选项被选择,直播内容流或上传的内容项可被采指纹并存储在例如参考数据库(例如,图1的数据存储器112)中。存储在该参考数据库中的指纹可用于确定通过社交网络系统可获得的其他内容项(无论是直播流还是点播视频)是否与已被识别为受保护(例如,受版权保护)的内容匹配(例如,侵权)。

在一些实施例中,指纹采集模块204可以从一个或多个指纹采集服务获得内容项的指纹,每个指纹采集服务被配置为使用一种或多种技术来确定指纹。这种指纹可以例如使用与内容项对应的视频数据、与内容项对应的音频数据或这两者来确定。将在下面参考图3提供关于指纹采集模块204的更多细节。

存储模块206可以被配置为管理与各种内容项相关的信息的存储。在各种实施例中,存储模块206被配置为优化为内容项获得或生成的指纹的存储。下面将参考图4提供关于存储模块206的更多细节。

在各种实施例中,匹配模块208被配置为确定内容项之间的相关性的测度。这种测度可用于确定内容项(例如,直播内容流和/或点播内容项)是否全部或部分匹配直播内容流的任何部分、最近流式直播的内容的任何部分和/或可通过社交网络系统点播获得的视频的任何部分。例如,匹配模块208可以确定受保护的直播内容流的一个或多个部分(例如,帧)匹配候选直播流的一个或多个部分(例如,帧)。在一些实施例中,匹配模块208可用于识别和分离内容项,包括被标记为包括不适当或淫秽内容的任何内容。下面将参考图5提供关于匹配模块208的更多细节。

通知模块210可以被配置为响应于任何受保护内容被复制(例如,版权侵犯、潜在的或其他的)而采取各种动作。例如,在确定第一内容项(例如,受保护的直播内容流)和第二内容项(例如,候选直播内容流)之间的阈值内容匹配时,通知模块210可以将复制(例如,潜在的版权侵权)通知给候选直播内容流的广播公司。在一些实施例中,广播公司可以选择结束候选直播内容流或继续直播内容流。在这样的实施例中,通过继续直播内容流,广播公司主张其流式传输候选直播内容流的权利。在某些情况下,如果广播公司结束候选直播内容流,则不需要发布者采取任何行动,并且根据实现方式,可能将广播公司的直播内容流通知给或不通知发布者。然而,如果广播公司决定继续候选直播内容流,则通知模块210可以向发布者提供关于匹配内容的信息。在一些实施例中,发布者可以接入由通知模块210提供的界面,该界面标识候选直播内容流中找到匹配的各个部分。发布者可以访问界面,以回放内容项的匹配部分。例如,发布者还可以访问该界面,以将直播内容流和/或上传的内容项标记为复制违规(例如,版权违规),不采取任何行动(例如,由于内容项的合理使用),或者授权使用受保护的(例如,受版权保护的)部分。在一些实施例中,使得用户通过社交网络系统不可接入被标记为对发布者的受保护内容的侵犯的任何直播内容流和/或上传的内容项。在一些实施例中,发布者可以创建匹配规则,所述规则规定在通知发布者匹配之前要满足的各种标准。例如,在一些实施例中,发布者可以规定匹配类型(例如,音频、视频、仅视频、仅音频或音频和视频两者)。在该示例中,只要匹配满足匹配类型,就会通知发布者该匹配。在一些实施例中,发布者可以指定地理区域(例如,特定的城市、州、地区、国家、世界范围等)。在该示例中,只要匹配内容源自指定地理区域或从指定地理区域广播,就通知发布者匹配。在一些实施例中,发布者可以指定一个或多个匹配条件以及如果满足这些条件则将执行的动作。一个示例匹配条件涉及设置匹配持续时间。在该示例中,如果匹配内容的时间长度满足(例如,大于、等于或小于)匹配持续时间,则可以通知发布者。在一些实施例中,发布者可以指定匹配长度(例如,帧数),并且如果匹配内容满足指定的匹配长度,则通知发布者。在一些实施例中,发布者可以指定允许使用发布者的受保护内容的一个或多个经批准的或列入白名单的用户和/或页面。在这样的实施例中,如果匹配内容是由任何未经批准或列入白名单的用户或页面发布的,则通知发布者。在一些实施例中,发布者可以将用户和/或页面列入黑名单,并且如果匹配内容来自列入黑名单的用户和/或通过列入黑名单的页面广播,则通知发布者。在一些实施例中,发布者可以指定当满足匹配规则时要执行的一个或多个动作。例如,发布者可以指定不应对满足一个或多个特定规则的匹配采取任何行动。在另一示例中,发布者可以指示当匹配满足一个或多个特定规则时,应该向发布者发送通知或报告。提供上面描述的匹配规则和条件,作为示例,并且在一些实施例中,发布者可以使用其他约束来创建匹配规则。通常,上述任何示例匹配规则和/或条件可以与其他规则和/或条件组合。

图3示出了根据本公开的实施例的指纹采集模块302的示例。在一些实施例中,图2的指纹采集模块204可以实现为指纹采集模块302。如图3所示,指纹采集模块302可以包括音频指纹采集模块304、视频指纹采集模块306、缩略图指纹采集模块308和分布式指纹采集模块310。

音频指纹采集模块304可以被配置为获得或生成内容项的音频指纹。可以使用各种通常已知的技术生成这种音频指纹。在一些实施例中,音频指纹采集模块304从对应于内容项的音频信号获得或生成音频指纹。音频信号可以由一个或多个离散音频帧组成,每个离散音频帧对应于在某个时间的音频信号的一部分。每个音频帧可以对应于某一时间长度(例如,32毫秒、64毫秒、128毫秒等)的音频信号的一部分。在一些实施例中,每个音频帧对应于固定的时间长度。例如,每个音频帧可以表示音频信号的某一部分,长度为64毫秒。可以从音频信号中提取的特征的一些示例可以包括频域中的声学特征(例如,根据音频信号的幅度谱计算的频谱特征)、音频信号的梅尔频率倒谱系数(mfcc)、音频信号的频谱带宽和频谱平坦度测度、频谱波动、极值频率和音频信号的静默频率(silentfrequency)。从音频信号中提取的音频特征还可以包括时域中的特征,例如,音频信号的纹理窗口上的特征向量的均值、标准差和协方差矩阵。其他特征可以单独提取,或者作为上述示例的补充,包括例如音频信号在某一时间段内的音量变化以及(如果音频信号压缩)音频信号的压缩格式。

音频指纹采集模块304可以从音频信号的一个或多个音频帧生成音频指纹。在一些实施例中,基于由音频信号的某一部分捕捉的各种声学和/或感知特性,生成对应于音频信号的该部分的音频指纹。为帧计算的音频指纹可以表示为一组比特(例如,32比特、64比特、128比特等),该组比特表示音频指纹对应的波形或帧。在一些实施例中,音频指纹采集模块304预处理音频信号,将音频信号从一个域(例如,时域)转换到另一域(例如,频域),对转换后的音频信号进行滤波,并根据滤波的音频信号生成音频指纹。在一些实施例中,使用离散余弦变换(dct)生成音频指纹。在一些实施例中,当对应于第一音频指纹的组比特和对应于第二音频指纹的组比特之间的汉明距离满足阈值时,可以确定第一音频指纹和第二音频指纹之间的匹配。在美国专利申请第14/153,404号和第14/552,039号中描述了描述这种音频指纹生成和匹配的更多细节,这两个专利申请都通过引用结合于此。为内容项生成的音频指纹可以存储并用于识别匹配的内容。在一些情况下,内容项的一部分可以包括静默,即,没有可感知的音频。例如,可以基于与内容项对应的音频波形来确定内容项的一部分是听觉上静默的。在一些实施例中,可以通过将那些音频指纹的比特串变为全零来标记为包含静默内容的部分而生成的音频指纹,例如。在这样的实施例中,当执行指纹匹配时,可以跳过内容项中被标记为静默的部分。

在一些实施例中,每个音频指纹对应于预定义的帧速率(例如,每秒8帧、每秒16帧、每秒32帧等)。例如,每秒16帧,内容项的音频指纹可以对应于一系列帧(例如,16个音频帧),并且可以表示内容项中的1秒音频。在该示例中,对应于音频指纹的16帧中的每一帧可以表示为一组64个比特或64位整数。在一些实施例中,音频指纹、视频指纹和缩略图指纹由指纹采集模块302以相同的预定义帧速率生成。下面将参考图4提供描述音频指纹存储和检索的更多细节。

视频指纹采集模块306可以被配置为获得或生成内容项的视频指纹。在一些实施例中,当计算视频指纹时,视频指纹采集模块306将描述内容项的一组视频帧(例如,8帧、16帧、32帧等)的数据从时域转换到频域。例如,这组帧可以是内容项中的一组连续帧(例如,帧1至帧8、帧1至帧16等)。在这样的实施例中,视频指纹采集模块306确定用于将帧转换到频域的这组帧的相应特征值。可以基于对应于该帧的一个或多个特征来确定帧的特征值。在一个示例中,可以通过计算帧的亮度来确定帧的特征值,例如,通过对帧中像素的值进行平均。在另一示例中,可以基于帧中的色调分量来确定帧的特征值,例如,基于rgb颜色模型和/或yuv颜色空间。该组帧的每个特征值可以包含在一个阵列或缓冲器中。然后,这些特征值可以转换成一个或多个其他域。通常,可以应用任何类型的变换。例如,在一些实施例中,时间-频率变换应用于特征值。在一些实施例中,空间频率变换应用于特征值。在一些实施例中,通过应用快速傅立叶变换(fft)、离散余弦变换(dct)或这两者,特征值转换到不同的域。一旦转换,这组帧随时间的值表示为频率分量的分布。在一些实施例中,帧中的对象被分段,并且变换应用于这些分段。在一些实施例中,帧中的区域被分段,并且变换应用于这些分段。

在一些实施例中,每个视频指纹对应于预定义的帧速率(例如,每秒8帧、每秒16帧、每秒32帧等)。例如,每秒16帧,内容项的视频指纹可以对应于一系列16个帧,并且可以表示内容项中的1秒视频。在该示例中,对应于视频指纹的16帧中的每一帧可以表示为一组64个比特或64位整数。在各种实施例中,尽管内容项被指纹采集为具有不同的帧速率,但视频指纹采集模块306可以执行通常已知的插值技术,使得视频指纹对应于预定义的帧速率。可以在频域中,使用为这组帧确定的频谱分量,来执行这种内插。例如,可以通过丢弃超过阈值的任何高频系数(例如,低通滤波器),同时保留剩余的低频系数,来进行两个帧的插值。

视频指纹采集模块306可以量化这些低频系数,以生成对应于视频指纹中包括的帧的一组比特。如上所述,在一些实施例中,视频指纹对应于帧序列,并且每个帧表示为一组64个比特或64位整数。在一些实施例中,如果对这组帧应用8点fft,则视频指纹采集模块306可以量化四个低频分量,以生成表示这组帧中的每个帧的相应64个比特。为了计算下一个视频指纹,视频指纹采集模块306可以通过丢弃该组中第一帧的值并附加内容项的下一帧的相应值来将这组帧移位一个。因此,例如,如果这组初始帧包括帧1至8的值,则移位的这组帧将包括帧2至9的值。视频指纹采集模块306然后可以使用移位的这组帧来生成另一视频指纹,如上所述。在各种实施例中,视频指纹采集模块306继续移动这组帧,以生成视频指纹,直到到达内容项中的最后一帧(例如,直播内容流的末尾或点播内容项文件的末尾)。因此,在这样的实施例中,指纹对应于采集指纹的内容项的重叠帧。例如,可以从帧1到16确定第一指纹,可以从帧2到17确定第二指纹,可以从帧3到18确定第三指纹,依此类推。

在一些实施例中,不是依赖于单个特征值,而是为这组帧中的每个帧确定特征值的向量,并且这些向量用于将这组视频帧变换到频域。例如,为视频帧确定的特征向量可以描述对应于该帧的各种特征的值。在一些实施例中,特征值可以描述在帧中的一组或多组像素之间的变化(例如,亮度变化、色调变化等)。在这样的实施例中,可以在帧602中的像素604周围识别第一区域606和第一区域606内的第二区域608,如图6的示例所示。第一区域606和第二区域608都可以分成一组扇区(例如,6、8、10等个扇区)。例如,在图6中,第一区域606划分为扇区a1、a2、a3、a4、a5、a6、a7和a8,而第二区域608划分为扇区b1、b2、b3、b4、b5、b6、b7和b8。可以为每个扇区计算特征值。这些特征值可以存储在矩阵610中。接下来,计算每个内部扇区的特征值(例如,b1)与其对应的外部扇区的特征值(例如,a1)之间的差值。这些差值可以存储在矩阵612中(例如,f1、f2、…、f8)。在一些实施例中,为帧602中的每个像素计算这样的差值,并且将各个差值相加,以产生矩阵612。可以为如上所述处理的这组视频帧中的每个帧生成矩阵612。结果,在一些实施例中,这组视频帧中的每个帧将由一组值(例如,8个值)的相应特征向量表示。然后,如果需要,这组视频帧的特征向量可被插值,并且例如通过应用离散余弦变换和/或快速傅立叶变换来转换到频域,如上所述。在一些实施例中,通过应用通常已知的特征检测方法,例如快速定向和简短旋转(orb)来确定包括在特征向量中的一些或全部特征值。

在一些实施例中,视频指纹采集模块306为每帧生成不止一个指纹。例如,在一些实施例中,视频指纹采集模块306将被指纹采集的帧水平分成上半部分和下半部分。在这样的实施例中,为帧的上半部分生成第一指纹,为帧的下半部分生成第二指纹。例如,第一指纹和第二指纹都可以使用32位来表示。在一个示例中,这种方法可用于区分包括滚动文本(例如,结束信用)的内容项。自然,帧可以以多种不同的方式划分(例如,垂直地、对角地等)并且可以生成每个分割部分的相应指纹。在一些实施例中,在内容指纹采集之前,视频指纹采集模块306移除与内容相关联的所有颜色信息,并将内容转换成黑白或灰度表示。在一些情况下,视频中的帧可以从其原始状态翻转(例如,水平翻转、垂直翻转等)。可以进行帧的这种翻转,以防止视频中的匹配内容被识别。因此,在一些实施例中,当对视频的帧进行指纹采集时,视频指纹采集模块306为处于其原始状态的帧生成指纹,并为处于一个或多个相应翻转状态(例如,水平翻转、垂直翻转等)的帧生成一个或多个单独的指纹。为内容项生成的视频指纹可以存储并用于识别匹配的内容。下面将参考图4提供描述视频指纹存储和检索的更多细节。

缩略图指纹采集模块308可以被配置为获得或生成内容项的缩略图或图像指纹。在一些实施例中,当生成内容项的缩略图指纹时,缩略图指纹采集模块308以预定时间间隔(例如,每1秒、每3秒等)捕捉内容项中的帧的缩略图快照。这种缩略图快照可用于使用通常已知的图像指纹技术生成相应的缩略图指纹。在一些实施例中,使用一组比特(例如,32位、64位、128位等)来表示每个缩略图指纹。在一些实施例中,以每个预定义的时间间隔,缩略图指纹采集模块308以一个或多个放缩比例和/或分辨率捕捉多个缩略图快照。在这样的实施例中可以为多个缩略图快照生成单独的指纹。尽管被评价的内容存在失真,这多个指纹也可用于识别两个内容项之间的匹配缩略图。为内容项生成的缩略图指纹可以存储并用于识别匹配的内容。下面将参考图4提供描述缩略图指纹的存储和检索的更多细节。

在一些实施例中,当内容项要指纹采集时,指纹采集模块302为内容项生成音频指纹、视频指纹和/或缩略图指纹。这些指纹可以单独使用或组合使用,以识别其他内容项包括与指纹采集过的内容项匹配的部分内容(例如,音频、视频、缩略图)。在一些实施例中,一旦对应于点播内容项的文件可用或上传到例如内容提供商系统(例如,社交网络系统),就可以指纹采集点播内容项。在一些实施例中,一旦内容提供商系统接收到描述直播内容流的数据,就对直播内容流进行指纹采集。

在一些实施例中,指纹采集模块302在内容提供商系统上实现。在这样的实施例中,在接收到描述内容项的数据之后,内容提供商系统执行内容项的指纹采集。在一些实施例中,指纹采集模块302在用户装置上实现。在这样的实施例中,当描述内容项的数据发送到内容提供商系统时,由用户装置执行内容项的指纹采集。在一些实施例中,分布式指纹采集模块310被配置为使得用户装置和内容提供商系统生成不同类型的指纹。例如,在一些实施例中,分布式指纹采集模块310可以指示用户装置为提供给内容提供商系统的内容项生成一种或多种类型的指纹(例如,音频指纹和/或缩略图指纹)。在这样的实施例中,分布式指纹采集模块310可以指示内容提供商系统在接收内容项时生成一种或多种不同类型的指纹(例如,视频指纹)。这种分布式指纹采集可以允许更优化地使用计算资源。

在一些实施例中,分布式指纹采集模块310可以指示用户装置为提供给内容提供商系统的内容项生成并发送一个或多个第一类型的指纹(例如,音频指纹)。在这样的实施例中,如果使用一个或多个第一类型的指纹(例如,音频指纹)来识别内容项和参考内容项之间的匹配,则分布式指纹采集模块310可以指示用户装置开始为所提供的内容项生成和发送一个或多个第二类型的指纹(例如,视频指纹和/或缩略图指纹),以使用额外类型的指纹(例如,视频指纹和/或缩略图指纹)来进一步验证匹配的内容。在各种实施例中,指纹(例如,音频指纹、视频指纹、缩略图指纹)也可以与元数据相关联,该元数据提供了关于从中确定指纹的各个内容项的各种信息。这样的信息可以包括对应于内容项的标题、描述、关键字或标签。在一些实施例中,信息可以包括例如使用通常已知的光学字符识别(ocr)技术从内容项(或对应于内容项的帧)提取的任何文本。

图4示出了根据本公开的实施例的存储模块402的示例。在一些实施例中,图2的存储模块206可以实现为存储模块402。如图4所示,存储模块402可以包括索引模块404和优化模块406。

索引模块404可以被配置为存储为内容项生成的指纹(例如,音频指纹、视频指纹、缩略图指纹)。通常,可以使用任何通常已知的用于存储和检索数据的方法来存储这种指纹。在一些实施例中,为直播内容流生成的指纹存储在直播参考数据库中,而为点播内容项生成的指纹存储在静态参考数据库中。在一些实施例中,在阈值时间段内(例如,过去24小时、48小时等内)提供(例如,流式传输和/或上传)的内容项(例如,直播内容流和点播内容项)的指纹存储在实时参考数据库中,而超过该阈值时间段提供的内容项的指纹存储在静态参考数据库中。在这样的实施例中,存储模块402根据需要将内容项的指纹数据从实时参考数据库移动到静态参考数据库,以满足基于阈值时间段在两个数据库之间分离指纹数据。

在一些实施例中,索引模块404将指纹数据存储在一个或多个数据结构中。所使用的数据结构可以根据可用于存储和处理指纹数据的计算资源而变化。在一个示例中,一组计算资源可以证明索引数据结构的使用是正当的,而另一组计算资源可以证明倒排索引数据结构的使用是正当的。例如,音频指纹可以存储在第一倒排索引数据结构中,视频指纹可以存储在第二倒排索引数据结构中,缩略图指纹可以存储在第三倒排索引数据结构中。如上所述,单独的倒排索引数据结构可用于存储为直播内容流和点播内容项生成的指纹。图7示出了示例性倒排索引数据结构702。在该示例中,倒排索引702包括一组库(bin,存储箱,排序箱)704。每个库可以引用已经散列到该库中的一组指纹帧。例如,指纹帧708和710都散列到库706。

如上所述,每个指纹可以对应于一组帧,并且每个帧可以表示为一组比特,例如,64比特或者整数。在一些实施例中,当将指纹帧插入倒排索引702时,对应于指纹帧的一部分比特,用于散列到倒排索引702中的一个库704。例如,对应于指纹帧708的64位中的前24位(例如,索引部分)可以散列到库706。指纹帧708然后可以添加到已经散列到库706的指纹帧列表712中。在一些实施例中,当将指纹帧708添加到列表712时,存储比特的剩余部分。因此,在这个示例中,存储对应于指纹帧708的64位中的剩余40位。在一些实施例中,指纹帧708存储有描述从其中生成指纹帧的内容项的信息(例如,文件标识符、流标识符等)和指示从中生成指纹的内容项部分的偏移(例如,时间戳、帧号等)。

在一些实施例中,多个倒排索引可用于指纹存储和匹配。例如,对应于指纹帧的比特的第一部分可以散列到第一倒排索引的一个库中。第一倒排索引中的这个库可以引用第二倒排索引。在这个示例中,对应于指纹帧的比特的第二部分可以散列到第二倒排索引中的一个库,以识别已经散列到该库的指纹帧的列表。对应于指纹帧的一组比特(整组比特或比特的剩余部分)可以在第二倒排索引中添加到该列表中。例如,64位指纹帧的前24位可以散列到第一倒排索引中的一个库,以识别第二倒排索引。在该示例中,64位指纹帧的接下来的20位可以散列到第二倒排索引中的一个库,以识别由该库引用的指纹帧的列表。在此处,64位指纹帧的剩余20位(或全部64位)可以存储在列表中。指纹帧可以存储在第二倒排索引中,该索引具有描述从其中生成指纹帧的内容项的信息(例如,文件标识符、流标识符等)和指示从其中生成指纹帧的内容项部分的偏移(例如,时间戳、帧号等)。

优化模块406可以被配置为管理用于指纹存储和匹配的倒排索引数据结构。例如,在一些实施例中,优化模块406可以自动更新或清理倒排索引,以移除对应于已经从内容提供商系统移除的内容项的条目。在一些实施例中,优化模块406可以自动更新或清理倒排索引,以移除已经存储了阈值时间段的条目。在一些实施例中,优化模块406可以对倒排索引进行排序,以实现期望的组织。在一个示例中,优化模块406可以对倒排索引中的条目进行排序,使得相似的指纹帧(例如,作为彼此的阈值汉明距离的指纹帧)聚类或组织成相同的(或附近的)块或库。

图5示出了根据本公开的实施例的匹配模块502的示例。在一些实施例中,图2的匹配模块208可以实现为匹配模块502。如图5所示,匹配模块502可以包括指纹匹配模块504、组合的匹配模块506、直播处理模块508和失真模块510。

指纹匹配模块504可以被配置为识别第一(或测试)内容项中与一个或多个第二(或参考)内容项中的内容部分匹配的任何内容部分。在各种实施例中,指纹匹配模块504可以使用与测试内容项对应的一组指纹(例如,音频指纹、视频指纹、缩略图指纹)来评价测试内容项,并且这些指纹可以用于识别要分析的一个或多个参考内容项。这种参考内容项可能已经被识别或指定为受保护(或受版权保护)。通常,可以标记包括与参考内容项中的内容匹配的任何内容的测试内容项,并且可以采取各种动作。如上所述,可以例如使用倒排索引数据结构来识别参考内容项。

例如,如图8a所示,指纹匹配模块504可以获得从测试内容项生成的视频指纹。视频指纹可以对应于一组帧(例如,16帧),并且每个帧可以表示为一组比特(例如,64比特)。在一些实施例中,指纹中的帧804的第一部分(例如,前24比特)可用于散列到倒排索引802中的库806,帧804的第二部分(例如,剩余的40比特)可用于验证帧之间的匹配。如上所述,倒排索引802包括一组库,并且每个库可以引用已经散列到该库的一组指纹帧。例如,在图8a中,库806引用指纹帧808和指纹帧810。在该示例中,指纹帧808和指纹帧810都是候选匹配。指纹匹配模块504可以评价对应于库806的指纹帧808、810中的每一个,以确定指纹帧是否与帧804匹配。在一些实施例中,指纹匹配模块504确定对应于第一帧的一组比特和对应于第二帧的一组比特之间的汉明距离。在这样的实施例中,当汉明距离满足阈值时,指纹匹配模块504确定第一帧和第二帧之间的匹配。因此,例如,指纹匹配模块504可以确定对应于帧804的这组比特和对应于指纹帧808的这组比特之间的汉明距离。如果该汉明距离满足阈值,则确定帧804和指纹帧808之间的匹配。相同的处理可以应用于帧804散列到的库806所引用的剩余的指纹帧(例如,指纹帧810),以识别任何其他匹配。

当已经识别出测试内容项的帧804和参考内容项的指纹帧(例如,指纹帧808)之间的匹配时,指纹匹配模块504可以评价从其中生成匹配指纹帧808的参考内容项,以确定测试内容项和参考内容项之间的匹配内容的范围或边界。如上所述,存储在倒排索引802中的每个帧还可以指示从其中生成指纹帧的参考内容项(例如,文件名、流标识符等)和指示指纹帧对应的参考内容项的部分的偏移。使用这样的信息,指纹匹配模块504可以访问一组指纹帧840,该组指纹帧840是针对整个参考内容项按时间顺序生成的,如图8b的示例所示。指纹匹配模块504还可以访问对应于测试内容项的一组指纹帧860。在一些实施例中,指纹匹配模块504以块(例如,一秒块)的形式处理测试内容项和参考内容项。因此,例如,如果每个指纹对应于每秒16帧,则指纹匹配模块504每秒处理16帧的内容。

如图8b所示,指纹匹配模块504可以针对测试内容项的指纹帧804之前的每个相应指纹帧,来评价参考内容项的匹配指纹帧808之前的每个指纹帧。因此,例如,指纹匹配模块504可以计算参考内容项的指纹帧820和测试内容项的指纹帧824之间的汉明距离。如果汉明距离满足阈值,则找到内容匹配。指纹匹配模块504可以继续这种与每个前一帧的匹配,直到没有找到匹配,或者直到参考内容项和/或测试内容项起始。类似地,指纹匹配模块504可以针对测试内容项中的匹配指纹帧804之后的每个对应指纹帧来评价参考内容项中匹配指纹808之后的每个指纹帧。因此,例如,指纹匹配模块504可以计算参考内容项的指纹帧822和测试内容项的指纹帧826之间的汉明距离。如果汉明距离满足阈值,则找到内容匹配。指纹匹配模块504可以继续这种与每个后续帧的匹配,直到没有找到匹配,或者直到参考内容项和/或测试内容项结束。一旦这种匹配完成,指纹匹配模块504可以识别测试内容项的哪个部分832与参考内容项的边界830匹配。可以应用该匹配过程,以发现测试内容项和参考内容项的音频指纹、测试内容项和参考内容项的视频指纹和/或测试内容项和参考内容项的缩略图指纹之间的匹配。参考图8a-b描述的匹配过程仅仅是用于确定两个内容项之间的匹配内容的一个示例方法,当然,其他方法也是可行的。在一些实施例中,优化匹配过程,使得不需要评价测试内容项和参考内容项的所有指纹帧来确定匹配。例如,在识别测试内容项的第一指纹帧和参考内容项的第一指纹帧之间的匹配时,指纹匹配模块504可以跳过测试内容项和参考内容项中的一个或多个中间帧(例如,阈值数量的指纹帧),然后评价测试内容项的第二指纹帧和参考内容项的第二指纹帧。如果第一指纹帧和第二指纹帧都匹配,则假设测试内容项和参考内容项的一个或多个中间帧也匹配。在一些实施例中,匹配过程是双层的,其中,优化第一验证步骤,以在跳过对内容项中的阈值数量的中间指纹帧的评价的同时,确定一组第一指纹帧匹配和一组第二指纹帧匹配时的匹配。在这样的实施例中,还在第二验证步骤期间单独评价每个中间指纹帧,以确认匹配的全长。

在一些实施例中,描述匹配部分830和832的信息提供给各种人员,以供进一步查看。在一些实施例中,如果匹配部分830和832满足阈值时间长度(例如,30秒),则指纹匹配模块504可以自动标记测试内容项,以供进一步查看。在一些实施例中,如果匹配部分830和832满足阈值时间长度(例如,30秒),则指纹匹配模块504可以自动阻止用户访问测试内容项。在一些实施例中,指纹匹配模块504可以确定测试内容项和参考内容项是复制的(即,所有测试内容项匹配所有参考内容项)。在这样的实施例中,可以自动删除测试内容项。

组合的匹配模块506可以被配置为利用多种类型的指纹(例如,音频、视频、缩略图)来识别测试内容项和参考内容项之间的匹配内容。例如,在一些实施例中,如上所述,组合的匹配模块506可以使用音频指纹来确定测试内容项和参考内容项之间的匹配内容。在这样的实施例中,当在阈值时间段和/或阈值帧数内使用音频指纹没有找到匹配时,组合的匹配模块506使用其他类型的指纹(例如,视频指纹和/或缩略图指纹)来补充匹配。在一些实施例中,组合的匹配模块506可以通过额外使用相应的视频指纹(或缩略图指纹)来验证使用音频指纹确定的内容匹配。例如,这种验证可用于区分包括音乐视频上的受版权保护音乐的视频广告。类似地,在一些实施例中,组合的匹配模块506可以通过额外使用相应的音频指纹(或缩略图指纹)来验证使用视频指纹确定的内容匹配。在各种实施例中,以预定义的帧速率生成音频指纹和视频指纹。结果,组合的匹配模块506可以容易地在给定帧的音频指纹和视频指纹之间交叉引用。

在一些实施例中,可以指示向内容提供商系统提供内容项的用户装置生成并发送内容项的缩略图指纹。在这样的实施例中,组合的匹配模块506可以利用缩略图指纹来识别内容项和参考内容项之间的匹配内容。如果找到匹配,则可以指示用户装置生成并发送内容项的其他类型的指纹(例如,音频指纹和/或视频指纹)。组合的匹配模块506可以利用其他类型的指纹来验证使用缩略图指纹确定的帧匹配。例如,如果使用缩略图指纹来确定内容项的帧和参考内容项的帧之间的匹配,则组合的指纹匹配模块506可以使用与内容项和参考内容项的匹配帧对应的视频指纹,来确认匹配。在一些实施例中,如果使用缩略图指纹发现匹配,则内容提供商系统可以开始为内容项生成其他类型的指纹(例如,音频指纹和/或视频指纹),以用于验证目的。

通常,当评价点播内容项的内容时,匹配模块502能够识别一个或多个参考内容项,并且针对点播内容项评价这些参考内容项,以识别匹配内容。在一些实施例中,匹配模块502可以被配置为为了内容匹配的目的而不同地处理直播内容流。例如,在一些实施例中,直播处理模块508可以被配置为处理使用滑动窗口在固定部位接收的直播内容流。在一些实施例中,直播处理模块508可以定义滑动窗口,以包括对应于固定时间长度(例如,内容的最后20秒)或固定数量的帧(例如,16帧)的直播内容流的帧。图9a示出了内容提供商系统从用户装置接收的直播内容流902的示例图。在图9a的示例中,滑动窗口904对应于由帧906和帧908定义的20秒的直播内容流902。在一些实施例中,当正在接收直播内容流时,直播处理模块508缓冲直播内容流,直到满足滑动窗口904的长度。例如,如果滑动窗口对应于20秒的长度,则直播处理模块508缓冲20秒的直播内容流。一旦缓冲,如上所述,直播处理模块508就对滑动窗口904中的一部分内容(例如,滑动窗口904中最后一秒的内容)进行指纹采集。一旦指纹采集,直播处理模块508可以确定直播内容流的指纹采集部分是否匹配任何参考内容项。如上所述,匹配过程将通过评价直播内容流902中先前接收的帧来尝试确定匹配内容的边界。在该示例中,当接收到另一秒的直播内容流时,滑动窗口前进,以包含最近20秒的直播内容流。图9b示出了在接收到另一秒的直播内容流之后的直播内容流912的示例图。在

图9b的示例中,滑动窗口914已经前进到最近20秒的直播内容流,并且现在由帧906和918限制边界。类似地,在该示例中,直播处理模块508对接收到的最后一秒的直播内容流进行指纹采集,并确定指纹采集部分是否匹配任何参考内容项。图9c示出了在接收到另一秒的直播内容流之后的直播内容流922的示例图。在图9c的示例中,滑动窗口924已经前进到最近20秒的直播内容流,并且现在由帧906和928限制边界。类似地,在该示例中,直播处理模块508对接收到的最后一秒的直播内容流进行指纹采集,并确定指纹采集部分是否匹配任何参考内容项。这种使用滑动窗口处理直播内容流的方法允许最佳地检测参考内容项中的匹配内容。这种方法还可以解决参考直播内容流的接收延迟的情况。在这种情况下,内容提供商系统能够确定测试直播内容流和延迟的参考直播内容流之间的匹配内容。在一些实施例中,滑动窗口可以扩展,以有助于识别包括重复图案的内容。

在某些情况下,直播内容流可能容易受到失真的影响,这可能会使匹配过程复杂化。例如,用户可以提供使用计算装置捕捉的音乐会的直播内容流。可以从某个角度和/或缩放级别捕捉该直播内容流。捕捉的内容还可能容易受到由计算装置的抖动引起的各种旋转的影响。例如,这些失真可能使得难以找到与授权广播公司提供的参考直播内容流(即,受保护或受版权保护的流)的精确匹配。在一些实施例中,尽管存在这些失真,失真模块510被配置为应用各种方法来促进内容匹配。

例如,在一些实施例中,当试图查找直播内容流的指纹帧的匹配时,失真模块510可以生成一组失真指纹帧,并且试图使用每个失真指纹帧查找匹配。因此,在上述示例中,当试图找到与直播内容流的最后一秒对应的指纹帧的匹配时,失真模块510置换(permute)与指纹帧对应的一组比特的索引部分(例如,前24比特)。在一些实施例中,如上所述,该索引部分用于在一个或多个倒排索引中查找参考内容项。在一些实施例中,失真模块510一次一位地置换指纹帧的索引部分。例如,假设使用六位“010111”表示帧,并且使用前三位(例如,“010”)表示索引部分。在该示例中,失真模块510可以一次一位地置换索引部分,以生成以下失真组:“000”、“011”、“110”。这些失真可以预先添加到对应于该帧的剩余三个比特,例如,“111”,以产生以下一组失真的指纹帧:“000111”、“001111”、“01111”、“100111”、“101111”、“110111”和“111111”。如上所述,这些失真的指纹帧中的每一个可用于识别一个或多个参考内容项,并确定这些参考内容项的哪些部分包括匹配内容。在一些实施例中,失真模块510一次多个比特(例如,两个比特)置换指纹帧的索引部分,以生成额外的失真指纹帧,从而识别匹配的内容。在以上示例中,失真模块510可以一次两个比特置换索引部分“010”,以生成以下一组失真:“001”、“111”和“100”。在一些实施例中,不仅仅是使索引部分失真,失真模块510置换对应于指纹帧的所有比特。在一些实施例中,失真模块510抑制在一组比特中置换的部分(或比特数)。例如,在一些实施例中,当试图查找指纹帧的匹配时,置换的部分(或比特数)可以根据中央处理单元(cpu)的使用量而变化。在一个示例中,当cpu使用率在阈值内时,失真模块510可以置换帧的前24位,并且当cpu使用率达到阈值时,失真模块510可以将置换减少到帧的前16位。

当确定两个内容项的匹配部分时,这种置换通常会增加要评价的内容量,从而考虑到失真可能存在于分析的测试内容项中。然而,在一些情况下,为了提高系统性能,可以应用各种方法来调节要评价的内容量。例如,在一些实施例中,可以分阶段生成和测试失真,直到达到阈值中央处理单元(cpu)使用率(例如,70%、75%等)。例如,可以首先在没有任何失真的情况下评价指纹帧。如果没有找到匹配,则指纹帧可通过一次置换一位而失真。如果使用置换没有找到匹配,则指纹帧可通过一次置换两位而失真。在一些实施例中,可以分阶段生成和测试失真,直到到达阈值查询时间(例如,150毫秒、200毫秒等)。在这样的实施例中,当达到阈值查询时间时,匹配处理中断。如上所述,指纹可以对应于某一长度的内容(例如,一秒钟的内容)上的一系列帧(例如,16帧)。在一些实施例中,并非评价对应于指纹的16个指纹帧中的每一个,失真模块510可以被配置为跳过对一个或多个指纹帧的评价(例如,跳过15个帧并且仅评价对应于指纹的第16个帧)。在一些实施例中,当评价指纹时,匹配模块502可以被配置为将指纹分成一组较小的块,并且可以使用通常已知的并行处理技术并行处理该组中的每个块。

图10示出了根据本公开的各种实施例的用于指纹采集内容的示例处理1000。应当理解,除非另有说明,否则在本文讨论的各种实施例的范围内,可以以类似或替代顺序或并行地执行额外的、更少的或替代的步骤。

在方框1002,获得具有多个视频帧的测试内容项。在方框1004,基于对应于测试内容项的一组视频帧,生成至少一个视频指纹。在方框1006,使用视频指纹的至少一部分来确定至少一个参考内容项。在方框1008,至少部分地基于测试内容项的视频指纹和参考内容项的一个或多个视频指纹,确定测试内容项的至少一部分匹配参考内容项的至少一部分。

图11示出了根据本公开的各种实施例的使用不同类型的指纹的匹配内容的示例处理1100。应当理解,除非另有说明,否则在本文讨论的各种实施例的范围内,可以以类似或替代顺序或并行执行额外的、更少的或替代的步骤。

在方框1102,使用测试内容项的一个或多个第一指纹和参考内容项的一个或多个第一指纹,来评价测试内容项的至少一部分与参考内容项的至少一部分。第一指纹对应于第一类型的媒体。在方框1104,确定满足至少一个验证标准。在方框1106,使用测试内容项的一个或多个第二指纹和参考内容项的一个或多个第二指纹,来评价测试内容的一部分与参考内容的一部分。第二指纹对应于与第一类型媒体不同的第二类型媒体。

图12示出了根据本公开的各种实施例的使用失真指纹匹配内容的示例处理1200。应当理解,除非另有说明,否则在本文讨论的各种实施例的范围内,可以以类似或替代顺序或并行执行额外的、更少的或替代的步骤。

在方框1202,基于对应于测试内容项的一组帧生成至少一个指纹。在方框1204,使用指纹的至少一部分生成一组失真指纹。在方框1206,使用该组失真指纹确定一个或多个参考内容项,其中,相对至少一个参考内容项评价测试内容项,以识别匹配内容。

预期可以有许多与本公开的各种实施例相关联的其他用途、应用和/或变化。例如,在某些情况下,用户可以选择是否选择加入以利用所公开的技术。所公开的技术还可以确保维护各种隐私设置和偏好,并且可以防止泄露隐私信息。在另一示例中,本公开的各种实施例可以随着时间学习、改进和/或完善。

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

图13示出了根据本公开的实施例的可以在各种场景中使用的示例系统1300的网络图。系统1300包括一个或多个用户装置1310、一个或多个外部系统1320、社交网络系统(或服务)1330和网络1350。在一个实施例中,结合上述实施例讨论的社交网服务、提供商和/或系统可以实现为社交网络系统1330。出于说明的目的,图13所示的系统1300的实施例包括单个外部系统1320和单个用户装置1310。然而,在其他实施例中,系统1300可以包括更多的用户装置1310和/或更多的外部系统1320。在某些实施例中,社交网络系统1330由社交网提供商运行,而外部系统1320与社交网络系统1330分开,因为这两个系统可以由不同的实体运行。然而,在各种实施例中,社交网络系统1330和外部系统1320一起运行,以向社交网络系统1330的用户(或成员)提供社交网服务。在这个意义上,社交网络系统1330提供平台或主干,其他系统(例如外部系统1320等)可以使用该平台或主干通过互联网向用户提供社交网服务和功能。

用户装置1310包括一个或多个计算装置(或系统),其可以接收来自用户的输入并经由网络1350发送和接收数据。在一个实施例中,用户装置1310是执行例如微软windows兼容操作系统(os)、苹果osx和/或linux发行版本等的传统计算机系统。在另一实施例中,用户装置1310可以是计算装置或具有计算机功能的装置,例如,智能电话、平板电脑、个人数字助理(pda)、移动电话、膝上型计算机、可穿戴装置(例如,一副眼镜、手表、手镯等)、照相机、电器等。用户装置1310被配置为经由网络1350通信。用户装置1310可以执行应用程序,例如,允许用户装置1310的用户与社交网络系统1330交互的浏览器应用程序。在另一实施例中,用户装置1310通过用户装置1310的本机操作系统提供的应用编程界面(api)与社交网络系统1330交互,例如,ios和android。用户装置1310被配置为使用有线和/或无线通信系统经由网络1350与外部系统1320和社交网络系统1330通信,网络1350可以包括局域网和/或广域网的任意组合。

在一个实施例中,网络1350使用标准通信技术和协议。因此,网络1350可以包括使用诸如以太网、802.11、全球微波接入互操作性(wimax)、3g、4g、cdma、gsm、lte、数字用户线路(dsl)等技术的链路。类似地,网络1350上使用的联网协议可以包括多协议标签交换(mpls)、传输控制协议/互联网协议(tcp/ip)、用户数据报协议(udp)、超文本传输协议(http)、简单邮件传输协议(smtp)、文件传输协议(ftp)等。可以使用包括超文本标记语言(html)和可扩展标记语言(xml)的技术和/或格式来表示通过网络1350交换的数据。此外,可以使用传统加密技术对所有或某些链路进行加密,例如,安全套接字层(ssl)、传输层安全性(tls)和互联网协议安全性(ipsec)。

在一个实施例中,用户装置1310可以通过处理使用浏览器应用程序1312从外部系统1320和社交网络系统1330接收的标记语言文档1314来显示来自外部系统1320和/或来自社交网络系统1330的内容。标记语言文档1314标识内容和描述内容的格式或呈现的一个或多个指令。通过执行标记语言文档1314中包括的指令,浏览器应用程序1312使用标记语言文档1314所描述的格式或呈现,来显示所识别的内容。例如,标记语言文档1314包括用于生成和显示具有多个帧的网页的指令,所述多个帧包括从外部系统1320和社交网络系统1330检索的文本和/或图像数据。在各种实施例中,标记语言文档1314包括包含可扩展标记语言(xml)数据、可扩展超文本标记语言(xhtml)数据或其他标记语言数据的数据文件。另外,标记语言文档1314可以包括javascript对象表示法(json)数据、带填充的json(jsonp)和javascript数据,以便于外部系统1320和用户装置1310之间的数据交换。用户装置1310上的浏览器应用程序1312可以使用javascript编译器来解码标记语言文档1314。

标记语言文档1314还可以包括或链接到应用程序或应用程序框架,例如,flashtm或unitytm应用程序、silverlighttm应用程序框架等。

在一个实施例中,用户装置1310还包括一个或多个信息记录程序(cookies)1316,信息记录程序1316包括指示用户装置1310的用户是否登录到社交网络系统1330的数据,这可以允许修改从社交网络系统1330传送到用户装置1310的数据。

外部系统1320包括一个或多个网络服务器,该网络服务器包括一个或多个网页1322a、1322b,这些网页使用网络1350传送给用户装置1310。外部系统1320与社交网络系统1330分离。例如,外部系统1320与第一域相关联,而社交网络系统1330与单独的社交网域相关联。外部系统1320中包括的网页1322a、1322b包括标记语言文档1314,其标识内容并且包括指定标识的内容的格式或呈现的指令。如前所述,应该理解,可以有许多变化或其他可能性。

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

用户可以加入社交网络系统1330,然后向他们希望连接的社交网络系统1330的任何数量的其他用户添加联系。如本文所使用的,术语“朋友”是指用户已经经由社交网络系统1330与其形成了联系、关联或关系的社交网络系统1330的任何其他用户。例如,在一个实施例中,如果社交网络系统1330中的用户被表示为社交图中的节点,则术语“朋友”可以指在两个用户节点之间形成的并直接连接两个用户节点的边缘。

联系可以由用户明确添加,或者可以由社交网络系统1330基于用户(例如,同一教育机构的校友用户)的共同特征自动创建。例如,第一用户特别选择特定的其他用户作为朋友。社交网络系统1330中的联系通常是双向的,但不一定是双向的,因此,术语“用户”和“朋友”取决于参照系。社交网络系统1330的用户之间的联系通常是双边(“双向”)或“相互的”,但是联系也可以是单边的或“单向的”。例如,如果鲍勃和乔都是社交网络系统1330的用户并且彼此联系,则鲍勃和乔是彼此的联系人。另一方面,如果鲍勃希望联系乔,以查看乔传送到社交网络系统1330的数据,但是乔不希望形成相互联系,则可以建立单向联系。用户之间的联系可以是直接联系;然而,社交网络系统1330的一些实施例允许经由一个或多个联系级别或分离程度来间接联系。

除了建立和维护用户之间的联系并允许用户之间的交互之外,社交网络系统1330还为用户提供了对社交网络系统1330支持的各种类型的项目采取行动的能力。这些项目可以包括社交网络系统1330的用户可能属于的群组或网络(即,人、实体和概念的社交网络)、用户可能感兴趣的事件或日历条目、用户可经由社交网络系统1330使用的基于计算机的应用程序、允许用户经由由社交网络系统1330提供的服务或通过社交网络系统1330提供的服务购买或出售项目的交易、以及与用户可在社交网络系统1330上或在社交网络系统1330之外执行的广告的交互。这些仅仅是用户可以在社交网络系统1330上操作的项目的几个示例,许多其他项目也是可能的。用户可以与能够在社交网络系统1330或外部系统1320中表示、与社交网络系统1330分离或经由网络1350耦合到社交网络系统1330的任何事物交互。

社交网络系统1330也能够链接各种实体。例如,社交网络系统1330使得用户能够通过api、网络服务或其他通信信道彼此交互以及与外部系统1320或其他实体交互。社交网络系统1330生成并维护包括由多个边缘互连的多个节点的“社交图”。社交图中的每个节点可以表示可以作用于另一节点和/或可以由另一节点作用的实体。社交图可以包括各种类型的节点。节点类型的示例包括用户、非个人实体、内容项、网页、群组、活动、消息、概念以及社交网络系统1330中的对象可以表示的任何其他事物。社交图中的两个节点之间的边缘可以表示两个节点之间的特定类型的联系或关联,这可能是由节点关系或由另一节点上的一个节点执行的动作引起的。在某些情况下,可以对节点之间的边缘进行加权。边缘的权重可以表示与边缘相关联的属性,例如,节点之间的联系或关联的强度。不同类型的边缘可以具有不同的权重。例如,当一个用户“喜欢”另一用户时创建的边缘可以被赋予一个权重,而当一个用户与另一用户成为朋友时创建的边缘可以被赋予不同的权重。

作为示例,当第一用户将第二用户识别为朋友时,生成社交图中的边缘,连接表示第一用户的节点和表示第二用户的第二节点。当各种节点彼此相关或交互时,社交网络系统1330修改连接各种节点的边缘,以反映关系和交互。

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

社交网络系统1330包括网络服务器1332、api请求服务器1334、用户简档存储器1336、联系存储器1338、动作记录器1340、活动日志1342和授权服务器1344。在本发明的实施例中,社交网络系统1330可以包括用于各种应用程序的额外的、更少的或不同的部件。没有示出其他部件,例如,网络接口、安全机制、负载平衡器、故障转移服务器、管理和网络操作控制台等,以免系统的细节晦涩。

用户简档存储器1336维护关于用户账户的信息,包括传记、人口统计和其他类型的描述性信息,例如,已经由用户声明或由社交网络系统1330推断的工作经历、教育历史、爱好或偏好、位置等。该信息存储在用户简档存储器1336中,使得唯一识别每个用户。社交网络系统1330还将描述不同用户之间的一个或多个联系的数据存储在联系存储器1338中。联系信息可以指示具有类似或共同工作经历、群组成员身份、爱好或教育历史的用户。另外,社交网络系统1330包括不同用户之间的用户定义的联系,允许用户指定他们与其他用户的关系。例如,用户定义的联系允许用户生成与其他用户的关系,这些关系平行于用户的现实生活关系,例如,朋友、同事、合作伙伴等。用户可以从预定义的联系类型中进行选择,或者根据需要定义他们自己的联系类型。与社交网络系统1330中的其他节点的联系也存储在联系存储器1338中,例如,非个人实体、桶、集群中心、图像、兴趣、页面、外部系统、概念等。

社交网络系统1330维护关于用户可以与之交互的对象的数据。为了维护该数据,用户简档存储器1336和联系存储器1338存储由社交网络系统1330维护的相应类型的对象的实例。每个对象类型都有信息字段,适合于存储适合于对象类型的信息。例如,用户简档存储器1336包含具有适于描述用户账户的字段和与用户账户相关的信息的数据结构。当创建特定类型的新对象时,社交网络系统1330初始化相应类型的新数据结构,向其分配唯一的对象标识符,并根据需要开始向该对象添加数据。例如,当用户成为社交网络系统1330的用户时,社交网络系统1330在用户简档存储器1336中生成用户简档的新实例,向用户帐户分配唯一标识符,并开始用用户提供的信息填充用户帐户的字段时,这可能会发生。

联系存储器1338包括适于描述用户与其他用户的联系、与外部系统1320的联系或与其他实体的联系的数据结构。联系存储器1338还可以将联系类型与用户的联系相关联,该联系类型可以与用户的隐私设置结合使用,以调节对关于用户的信息的接入。在本发明的实施例中,用户简档存储器1336和联系存储器1338可以实现为联合数据库。

存储在联系存储器1338、用户简档存储器1336和活动日志1342中的数据使得社交网络系统1330能够生成社交图,该社交图使用节点来识别连接节点的各种对象和边缘,以识别不同对象之间的关系。例如,如果第一用户在社交网络系统1330中与第二用户建立联系,则来自用户简档存储器1336的第一用户和第二用户的用户账户可以充当社交图中的节点。由联系存储器1338存储的第一用户和第二用户之间的联系是与第一用户和第二用户相关联的节点之间的边缘。继续该示例,第二用户然后可以向第一用户发送在社交网络系统1330内的消息。发送可以存储的消息的动作是社交图中表示第一用户和第二用户的两个节点之间的另一边缘。另外,可以识别并在社交图中包括消息本身,作为连接到表示第一用户和第二用户的节点的另一节点。

在另一示例中,第一用户可以在社交网络系统1330维护的图像中(或者,在社交网络系统1330之外的另一系统维护的图像中)标记第二用户。图像本身可以表示为社交网络系统1330中的节点。该标记动作可以在第一用户和第二用户之间创建边缘以及在每个用户和图像之间创建边缘,该图像也是社交图中的节点。在又一示例中,如果用户确认参加事件,则该用户和该事件是从用户简档存储器1336获得的节点,其中,该事件的参加是可以从活动日志1342检索的节点之间的边缘。通过生成和维护社交图,社交网络系统1330包括描述许多不同类型的对象以及这些对象之间的交互和联系的数据,提供了丰富的社交相关信息来源。

网络服务器1332经由网络1350将社交网络系统1330链接到一个或多个用户装置1310和/或一个或多个外部系统1320。网络服务器1332提供网页以及其他与网络相关的内容,例如,java、javascript、flash、xml等。网络服务器1332可以包括邮件服务器或其他消息收发功能,用于在社交网络系统1330和一个或多个用户装置1310之间接收和路由消息。消息可以是即时消息、排队消息(例如,电子邮件)、文本和sms消息或者任何其他合适的消息格式。

api请求服务器1334允许一个或多个外部系统1320和用户装置1310通过调用一个或多个api函数来调用来自社交网络系统1330的接入信息。api请求服务器1334还可以允许外部系统1320通过调用api来向社交网络系统1330发送信息。在一个实施例中,外部系统1320经由网络1350向社交网络系统1330发送api请求,并且api请求服务器1334接收api请求。api请求服务器1334通过调用与api请求相关联的api来处理请求,以生成适当的响应,api请求服务器1334经由网络1350将该响应传送给外部系统1320。例如,响应于api请求,api请求服务器1334收集与用户相关联的数据,例如,已经登录到外部系统1320的用户联系,并将收集的数据传送到外部系统1320。在另一实施例中,用户装置1310以与外部系统1320相同的方式经由api与社交网络系统1330通信。

动作记录器1340能够从网络服务器1332接收关于用户在社交网络系统1330上和/或之外的动作的通信。动作记录器1340用关于用户动作的信息填充活动日志1342,使得社交网络系统1330能够发现其用户在社交网络系统1330内和社交网络系统1330外采取的各种动作。特定用户针对社交网络系统1330上的另一节点采取的任何动作可以通过活动日志1342或类似数据库或其他数据储存库中维护的信息与每个用户的账户相关联。识别和存储的社交网络系统1330内的用户所采取的动作的示例可以包括例如向另一用户添加连接、向另一用户发送消息、从另一用户读取消息、查看与另一用户相关联的内容、出席由另一用户发布的事件、发布图像、试图发布图像、或与另一用户或另一对象交互的其他动作。当用户在社交网络系统1330内采取动作时,该动作记录在活动日志1342中。在一个实施例中,社交网络系统1330将活动日志1342维护为条目数据库。当在社交网络系统1330内采取动作时,该动作的条目添加到活动日志1342。活动日志1342可以称为动作日志。

此外,用户动作可以与发生在社交网络系统1330外部的实体内的概念和动作相关联,例如,与社交网络系统1330分离的外部系统1320。例如,动作记录器1340可以从网络服务器1332接收描述用户与外部系统1320的交互的数据。在该示例中,外部系统1320根据社交图中的结构化动作和对象报告用户的交互。

用户与外部系统1320交互的动作的其他示例包括:用户表示对外部系统1320或另一实体感兴趣、用户向社交网络系统1330发布评论以讨论外部系统1320或外部系统1320内的网页1322a、用户向社交网络系统1330发布统一资源定位器(url)或与外部系统1320相关联的其他标识符、用户出席与外部系统1320相关联的事件或者与外部系统1320相关的用户的任何其他动作。因此,活动日志1342可以包括描述社交网络系统1330的用户和与社交网络系统1330分离的外部系统1320之间的交互的动作。

授权服务器1344强制实施社交网络系统1330的用户的一个或多个隐私设置。用户的隐私设置确定如何共享与用户相关联的特定信息。隐私设置包括与用户相关联的特定信息的规范以及可以与之共享该信息的一个或多个实体的规范。可以与之共享信息的实体的示例可以包括其他用户、应用程序、外部系统1320或任何可能接入信息的实体。用户可以共享的信息包括用户账户信息,例如,简档照片、与用户相关联的电话号码、用户的联系、用户采取的动作,例如,添加联系、改变用户简档信息等。

隐私设置规范可以以不同的粒度级别提供。例如,隐私设置可以标识要与其他用户共享的特定信息;隐私设置标识工作电话号码或一组特定的相关信息,例如,个人信息,包括简档照片、家庭电话号码和状态。或者,隐私设置可以应用于与用户相关联的所有信息。也可以在各种粒度级别指定可以接入特定信息的一组实体的规范。可以与之共享信息的各组实体可以包括例如用户的所有朋友、朋友的所有朋友、所有应用程序或所有外部系统1320。一个实施例允许这组实体的规范包括实体的枚举。例如,用户可以提供允许接入某些信息的外部系统1320的列表。另一实施例允许规范包括一组实体以及不允许接入信息的例外。例如,用户可以允许所有外部系统1320接入用户的工作信息,但是指定不允许接入工作信息的外部系统1320的列表。某些实施例将不允许接入某些信息的异常列表称为“黑名单”。阻止属于用户指定的黑名单的外部系统1320接入隐私设置中指定的信息。信息的规范粒度和与之共享信息的实体的规范粒度的各种组合是可能的。例如,所有个人信息可以与朋友共享,而所有工作信息可以与朋友的朋友共享。

授权服务器1344包含确定用户的朋友、外部系统1320和/或其他应用和实体是否可以接入与用户相关联的某些信息的逻辑。外部系统1320可能需要来自授权服务器1344的授权来接入用户更私密和敏感的信息,例如,用户的工作电话号码。基于用户的隐私设置,授权服务器1344确定是否允许另一用户、外部系统1320、应用程序或另一实体接入与用户相关联的信息,包括关于用户所采取的动作的信息。

在一些实施例中,社交网络系统1330可以包括内容提供商模块1346。内容提供商模块1346可以例如实现为图1的内容提供商模块102。如前所述,应该理解,可以有许多变化或其他可能性。

硬件实现方式

前述的过程和特征可以通过各种各样的机器和计算机系统架构并且在各种各样的网络和计算环境中来实现。图14示出了根据本发明的一个实施例的可以用于实现本文描述的一个或多个实施例的计算机系统1400的示例。计算机系统1400包括用于使计算机系统1400执行本文讨论的过程和特征的指令集。计算机系统1400可以连接(例如,联网)到其他机器。在网络化部署中,计算机系统1400可以在客户端-服务器网络环境中的服务器机器或客户端机器的能力下操作,或者在对等(或分布式)网络环境中作为对等机器操作。在本发明的实施例中,计算机系统1400可以是社交网络系统1330、用户装置1310和外部系统1420或者其部件。在本发明的实施例中,计算机系统1400可以是构成全部或一部分社交网络系统1330的许多服务器中的一个服务器。

计算机系统1400包括处理器1402、高速缓存1404以及一个或多个可执行模块和驱动程序,其存储在计算机可读介质上,针对本文所述的过程和特征。此外,计算机系统1400包括高性能输入/输出(i/o)总线1406和标准i/o总线1408。主桥1410将处理器1402耦合到高性能i/o总线1406,而i/o总线桥1412将两条总线1406和1408彼此耦合。系统存储器1414和一个或多个网络接口1416耦合到高性能i/o总线1406。计算机系统1400还可以包括视频存储器和耦合到视频存储器的显示装置(未示出)。大容量存储器1418和i/o端口1420耦合到标准i/o总线1408。计算机系统1400可以可选地包括耦合到标准i/o总线1408的键盘和定点装置、显示装置或其他输入/输出装置(未示出)。总的来说,这些元件旨在表示一大类计算机硬件系统,包括但不限于基于加利福尼亚州圣克拉拉市英特尔公司制造的x86兼容处理器、加利福尼亚州桑尼维尔市advancedmicrodevices(amd)公司制造的x86兼容处理器以及任何其他合适的处理器的计算机系统。

操作系统管理和控制计算机系统1400的操作,包括向软件应用程序(未示出)输入数据和从软件应用程序输出数据。操作系统在系统上执行的软件应用程序和系统的硬件部件之间提供界面。可以使用任何合适的操作系统,例如,linux操作系统、可从加州库比蒂诺的苹果电脑公司获得的苹果macintosh操作系统、unix操作系统、操作系统、bsd操作系统等。其他实现方式也是可能的。

下面更详细地描述计算机系统1400的元件。具体而言,网络接口1416提供计算机系统1400与诸如以太网(例如,ieee802.3)网络、背板等任何广泛网络之间的通信。大容量存储器1418为数据和编程指令提供永久存储,以执行上述由上述各个计算系统实现的上述过程和特征,而系统存储器1414(例如,dram)在由处理器1402执行时为数据和编程指令提供临时存储。i/o端口1420可以是一个或多个串行和/或并行通信端口,其提供可以耦合到计算机系统1400的额外外围装置之间的通信。

计算机系统1400可以包括各种系统架构,并且计算机系统1400的各种部件可以重新设置。例如,高速缓存1404可以与处理器1402在芯片上。或者,高速缓存1404和处理器1402可以打包在一起,作为“处理器模块”,处理器1402称为“处理器核心”。此外,本发明的某些实施例可能既不需要也不包括所有上述部件。例如,耦合到标准i/o总线1408的外围装置可以耦合到高性能i/o总线1406。此外,在一些实施例中,可以仅存在单个总线,计算机系统1400的部件耦合到单个总线。此外,计算机系统1400可以包括额外部件,例如,额外处理器、存储装置或存储器。

通常,本文描述的过程和特征可以被实现为操作系统的一部分或者称为“程序”的特定应用程序、部件、程序、对象、模块或一系列指令。例如,可以使用一个或多个程序来执行本文描述的特定过程。程序通常包括计算机系统1400中的各种存储器和存储装置中的一个或多个指令,当这些指令被一个或多个处理器读取和执行时,促使计算机系统1400执行操作,以执行本文描述的过程和特征。本文描述的过程和特征可以用软件、固件、硬件(例如,专用集成电路)或其任意组合来实现。

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

计算机可读介质的示例包括但不限于可记录类型的介质,例如,易失性和非易失性存储装置;固态存储器;软盘和其他可移动磁盘;硬盘驱动器;磁介质;光盘(例如,光盘只读存储器(cdrom)、数字多功能光盘(dvd));其他类似的非暂时性(或暂时性)、有形(或非有形)存储介质;或适于存储、编码或传送一系列指令以由计算机系统1400执行的任何类型的介质,以执行本文描述的任何一个或多个过程和特征。

为了解释的目的,阐述了许多具体细节,以提供对描述的透彻理解。然而,对于本领域技术人员来说,显而易见的是,可以在没有这些具体细节的情况下实施本公开的实施例。在某些情况下,模块、结构、过程、特征和装置以方框图形式显示,以避免描述模糊。在其他情况下,功能方框图和流程图被显示为表示数据和逻辑流程。方框图和流程图的部件(例如,模块、方框、结构、装置、特征等)可以以不同于本文明确描述和描绘的方式进行各种组合、分离、移除、重新排序和替换。

本说明书中提及“一个实施例”、“实施例”、“其他实施例”、“一系列实施例”、“一些实施例”、“各种实施例”等,意味着结合该实施例描述的特定特征、设计、结构或特性包括在本公开的至少一个实施例中。例如,在说明书中的不同地方出现短语“在一个实施例中”或“在实施例中”,不一定都指同一实施例,也不是与其他实施例互斥的单独或替代实施例。此外,无论是否明确提及“实施例”等,都描述了各种特征,这些特征可以不同地组合并包括在一些实施例中,但是在其他实施例中也可以不同地省略。类似地,描述了各种特征,这些特征可以是某些实施例(但不是其他实施例)的偏好或要求。

本文使用的语言主要是出于可读性和指导性目的而选择的,可能没有被选择来描绘或限定本发明的主题。因此,本发明的范围不是由该详细描述限制的,而是由基于此的申请上发布的任何权利要求限制的。因此,本发明的实施例的公开旨在说明而非限制在下面的权利要求中阐述的本发明的范围。

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