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

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

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



背景技术:

现今,出于了各种各样的目的,人们经常使用计算设备(或系统)。例如,用户可以使用他们的计算设备互相交互、访问内容、分享内容、并且创建内容。在一些情况下,内容项可以包括来自社交网络的成员的发帖。发帖可以包括文本和媒体内容项,诸如,图像、视频和音频。发帖可以被公布到社交网络以供其他人消费。



技术实现要素:

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

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

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

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

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

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

在实施方式中,系统、方法和非暂时性计算机可读介质被配置为:将该组比特的第一部分散列到倒排索引中的二进制数,其中,二进制数参考描述至少一个候选帧的信息。

在实施方式中,描述候选帧的信息标识参考内容项和偏移,偏移标识候选帧在参考内容项中的位置。

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

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

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

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

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

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

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

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

在实施方式中,第一指纹和第二指纹对应于以下各项之一:音频指纹、视频指纹、或缩略图指纹。

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

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

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

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

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

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

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

在实施方式中,系统、方法和非暂时性计算机可读介质被配置为:继续分阶段地生成和测试失真,直到阈值中央处理单元(cpu)使用率;和/或达到阈值查询时间。

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

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

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

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

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

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

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

具体地,在所附权利要求中公开了根据本发明的实施方式,涉及一种方法、存储介质、系统和计算机程序产品,其中,可以在另一权利要求类别(例如,系统)中要求保护在一个权利要求类别(例如,方法)中提到的任何特征。所附权利要求中的依赖或引用关系仅出于形式原因而选择。但是,从之前的任何权利要求中(具体而言,多重依赖性)刻意引用的任何主题也可被要求,因此无论所附权利要求选择何种依赖性,权利要求及其特征的任何组合都能被要求。可以要求保护的主题不仅包括所附权利要求中阐述的特征的组合,还包括权利要求中的特征的任何其他组合,其中,权利要求中提及的每个特征可以与权利要求中的任何其他特征或其他特征的组合相结合。此外,本文中描述或描绘的任何实施方式和特征可以以单独的权利要求和/或与本文中描述或描绘的任何实施方式或特征或者与所附权利要求的任何特征的任何组合来要求保护。

附图说明

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

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

图3示出了根据本公开的实施方式的指纹化模块的实例。

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

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

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

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

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

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

图10示出了根据本公开的各种实施方式的用于指纹化内容的示例过程。

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

图12示出了根据本公开的各种实施方式的用于使用失真指纹匹配内容的示例过程。

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

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

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

具体实施方式

用于识别匹配内容的方法

现今,出于各种各样的目的,人们经常使用计算设备(或系统)。例如,用户可以使用他们的计算设备互相交互、访问内容、分享内容、并且创建内容。在一些情况下,内容项可以包括来自社交网络的成员的发帖。发帖可以包括文本和媒体内容项,诸如,图像、视频和音频。发帖可以被公布到社交网络以供其他人消费。

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

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

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

图1示出了根据本公开的实施方式的示例系统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可以用于将描述要流式直播的内容的数据从计算设备传送到社交网络系统。直播流模块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毫秒。可以从音频信号中提取的特征的一些实例可以包括频域中的声学特征(例如,在音频信号的幅度谱上计算的频谱特征)、音频信号的mel频率倒谱系数(mfcc)、音频信号的频谱带宽和频谱平坦度测量、频谱波动、极值频率和音频信号的静音频率。从音频信号中提取的音频特征还可以包括时域中的特征,诸如,音频信号的纹理窗口上的特征向量的均值、标准偏差和协方差矩阵。与上述实例分开地或除了上述实例之外,可以提取其他特征,包括例如在某个时间段内的音频信号的音量改变以及如果音频信号被压缩时音频信号的压缩格式。

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

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

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

在一些实施方式中,每个视频指纹对应于预定的帧速率(例如,每秒8帧、每秒16帧、每秒32帧等)。例如,按每秒16帧,内容项的视频指纹可以对应于一系列的16个帧并且可以表示内容项中的一秒视频。在该实例中,对应于视频指纹的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个值)的对应特征向量表示。然后,如果需要,可以对该组视频帧的特征向量进行内插,并且例如通过应用离散余弦变换和/或快速傅立叶变换将其转换到频域,如上所述。在一些实施方式中,通过应用通常已知的特征检测方法(例如,定向fast和旋转brief(orb:orientedfastandrotatedbrief))来确定特征向量中包括的一些或所有特征值。

在一些实施方式中,视频指纹化模块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小时内,得到77等等)提供(例如,流式传输和/或上传)的内容项(例如,直播内容流和点播内容项)的指纹被存储在实时参考数据库中,而超过该阈值时间段提供的内容项的指纹被存储在静态参考数据库中。在这样的实施方式中,存储模块402根据需要基于阈值时间段将内容项的指纹数据从实时参考数据库移动到静态参考数据库,以满足这两个数据库之间的指纹数据的分离。

在一些实施方式中,索引模块404将指纹数据存储在一个或多个数据结构中。使用的数据结构可以根据可用于存储和处理指纹数据的计算资源而变化。在一个实例中,一组计算资源可以证明索引数据结构的使用是合理的,而另一组计算资源可以证明使用倒排索引数据结构是合理的。例如,音频指纹可以存储在第一倒排索引数据结构中,视频指纹可以存储在第二倒排索引数据结构中,并且缩略图指纹可以存储在第三倒排索引数据结构中。如上所述,单独的倒排索引数据结构可以用于存储为直播内容流和点播内容项生成的指纹。图7示出了示例倒排索引数据结构702。在该实例中,倒排索引702包括一组二进制数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之间的匹配。可以将相同的过程应用于其余的指纹化帧(例如,指纹化帧810),其被帧804所散列到的二进制数806参考以识别任何其他匹配。

当已经识别出测试内容项的帧804与参考内容项的指纹化帧(例如,指纹化帧808)之间的匹配时,指纹匹配模块504可以评估生成匹配的指纹化帧808的参考内容项,以确定测试内容项与参考内容项之间的匹配内容的程度或边界。如上所述,存储在倒排索引802中的每一帧还可以指示生成指纹化帧的参考内容项(例如,文件名、流标识符等)和指示指纹化帧对应的参考内容项的部分的偏移。使用这样的信息,指纹匹配模块504可以访问按照时间顺序为整个参考内容项生成的一组指纹化帧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至图8b描述的匹配过程仅是用于确定两个内容项之间的匹配内容的一个示例方法,并且自然地,其他方法也是可能的。在一些实施方式中,对匹配过程进行优化,使得不需要评估测试内容项和参考内容项的所有指纹化帧以确定匹配。例如,一旦识别到测试内容项的第一指纹化帧与参考内容项的第一指纹化帧之间的匹配时,指纹匹配模块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置换与指纹化帧相对应的一组比特的索引部分(例如,前24比特)。在一些实施方式中,该索引部分用于在一个或多个倒排索引中找到参考内容项,如上所述。在一些实施方式中,失真模块510一次一比特地置换指纹化帧的索引部分。例如,假设使用六比特“010111”表示帧,并且使用前三比特表示索引部分,例如“010”。在该实例中,失真模块510可以一次一比特地置换索引部分以生成以下一组失真:“000”、“011”、“110”。这些失真可以预先加到对应于该帧的其余三个比特,例如“111”,以产生以下一组失真的指纹化帧:“000111”、“001111”、“011111”、“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之处在于外部系统120可以由不同的实体运行。然而,在各种实施方式中,社交网络系统1330和外部系统1320一起运行以将社交网络服务提供给社交网络系统1330的用户(或成员)。在这种意义上,社交网络系统1330提供了平台或主干,诸如外部系统1320的其他系统可以使用该平台或主干将社交网络服务和功能提供给互联网上的用户。

用户设备1310包括一个或多个计算设备(或系统),其可以接收来自用户的输入并且经由网络1350发送和接收数据。在一个实施方式中,例如,用户设备1310是执行与操作系统(os)、appleosx、和/或linux发行套件兼容的microsoftwindows的常规计算机系统。在另一实施方式中,用户设备1310可以是计算设备或者具有计算机功能的设备,诸如,智能电话、平板电脑、个人数字助理(pda)、移动电话、膝上型计算机、可穿戴设备(例如,一副眼镜、手表、手链等)、相机、电器等。用户设备1310被配置为经由网络1350进行通信。例如,用户设备1310可以执行允许用户设备1310的用户与社交网络系统1330交互的浏览器应用等程序。在另一实施方式中,用户设备1310通过由用户设备1310的本地操作系统(诸如,ios和android)提供的应用编程接口(api)来与社交网络系统1330交互。用户设备1310被配置为使用有线和/或无线通信系统经由网络1350与外部系统1320和社交网络系统1330通信,网络可以包括局域网和/或广域网的任何组合。

在一个实施方式中,网络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还包括包含指示用户设备1310的用户是否登录到社交网络系统1330的数据的一个或多个小程序(cookie)1316,其使得能够修改从社交网络系统1330到用户设备1310传送的数据。

外部系统1320包括包含使用网络1350传送给用户设备1310的一个或多个网页1322a、1322b的一个或多个网络服务器。外部系统1320独立于社交网络系统1330。例如,外部系统1320与第一域相关联,而社交网络系统1330与独立的社交网络域相关联。包含在外部系统1320中的网页1322a、1322b包括标记语言文档1314,其识别内容并且包括指定所识别的内容的格式或呈现的指令。如上所述,应当理解,可以存在许多变化或者其他可能性。

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

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

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

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

社交网络系统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将api请求发送至社交网络系统1330,并且api请求服务器1334接收api请求。api请求服务器1334通过调用与api请求相关联的api而处理该请求以产生适当的响应,其中,api请求服务器1334经由网络1350将该响应通信给外部系统1320。例如,api请求服务器1334响应于api请求来收集与用户相关联的数据(诸如已经登录到外部系统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;用户将统一资源定位符(url)或与外部系统1320相关联的其他标识符发布至社交网络系统1330;用户参加与外部系统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兼容处理器以及由位于加利福尼亚的森尼韦尔的超微半导体(amd)公司制造的x86兼容处理器以及任何其他合适处理器的计算机系统。

操作系统管理并控制计算机系统1400的操作,包括将数据输入到软件应用(未示出)并且从软件应用输出数据。操作系统提供在系统上执行的软件应用与系统的硬件部件之间的接口。可以使用任何合适的操作系统,诸如,linux操作系统、从加利福尼亚库比蒂诺苹果电脑公司可商购的applemacintosh操作系统、unix操作系统、操作系统、bsd操作系统等。其他实现方式是可能的。

下面将更为详细地描述计算机系统1400的元件。具体地,网络接口1416提供计算机系统1400与任何大范围网络之间的通信,诸如,以太网(例如,ieee802.3)网络、底板(backplane)等。大容量存储器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访问和执行。在不同实现方式中,一个或多个模块可以由一个或多个位置中的一个或多个处理器执行,诸如,在并行处理环境中的多个服务器。

计算机可读介质的实例包括但不限于可记录类型的介质,诸如,易失性和非易失性存储器设备;固态存储器;软盘和其他可移除磁盘;硬盘驱动器;磁性介质;光盘(例如,光盘只读存储器(cdroms),数字通用盘(dvd));其他类似的非暂时性(或暂时性)有形(或无形)存储介质;或者适用于存储、编码或携带一系列指令以用于由计算机系统1400执行以执行本文中所述的任何一个或多个过程和特征的任何类型的介质。

出于说明的目的,阐述了许多具体细节以提供对本说明的透彻理解。然而,对本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实现本公开的实施方式。在一些情况下,以框图形式示出了模块、结构、过程、特征、以及设备,以避免使本说明变得模糊。在其他情况下,示出了表示数据和逻辑流的功能框图和流程图。可以各种形式组合、分离、移除、记录、并且以不同于明确描述和本文中描写的方式替换框图和流程图中的部件(例如,模块、块、接口、设备、特征等)。

在本说明书中对“一个实施方式”、“实施方式”、“其他实施方式”、“一系列实施方式”、“一些实施方式”、“各种实施方式”等的引用意味着结合实施方式描述的特定特征、设计、结构或特性包括在本公开的至少一个实施方式中。例如,在本说明书中的各处出现的短语“在一个实施方式中”或“在实施方式中”未必全部指同一实施方式,也不是指与其他实施方式相互排斥的单独的或可替换的实施方式。而且,不论是否存在对“实施方式”等的表达引用,都描述各种特征,各种特征可不同地合并且包括在一些实施方式中,但是在其他实施方式中也不同地省略。类似地,描述的各个特征可以是一些实施方式而不是其他实施方式的优选或要求。

原则上,出于可读性和指示性的目的,选择了本文中所使用的语言,并且其不被选择为描绘或限制本发明主题。因此,本发明的范围并不旨在由详细描述来限制,而是由在此基础上针对本申请所发布的任何权利要求来限定。因此,本发明的实施方式的公开旨在是说明性的,而并非限制本发明的范围,本发明的范围在所附权利要求中进行阐述。

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