用于直播流的锚的制作方法

文档序号:17933822发布日期:2019-06-15 01:09阅读:354来源:国知局
用于直播流的锚的制作方法

本公开一般涉及直播流,并且更具体地,涉及在直播流中生成锚以使得加入或重新加入直播流的用户能够在适当的时间进入。



背景技术:

流托管服务器用作流创建者的平台,以向流托管服务器的用户提供直播流。在许多场景中,用户使用客户端设备来访问和加入直播流。对于流行流,流的创建者可以获得对创建者呈现的信息感兴趣的大量观看者。

然而,直播流独有的问题是观看者可能在各种次优时间加入。例如,当观看者加入时,创建者可能处于讨论的中间,因此,观看者可能没有适当的上下文来完全理解正在进行的讨论。当用户新加入直播流时或者当用户在先前被转移之后重新加入直播流时,可能发生这种情况。在次优时刻加入直播流会导致糟糕的用户体验,甚至可能使用户无法参与未来的直播流。



技术实现要素:

流托管服务器在直播流中生成锚,其使得新加入的用户能够在适当的时间点开始消费流内容,即使用户在次优时间加入。流托管服务器为创建者提供传输直播流的平台。在直播流期间的各个时间点,服务器提供接收创建者输入的用户界面元素,该创建者输入指示时间点适合于生成直播流锚。例如,当创建者继续讨论新主题时,用户界面元素接收创建锚的输入。在另一示例中,直播流是流视频游戏,并且用户界面元素接收在新游戏开始时生成与直播流中的时间戳对应的锚的输入。每个锚指定直播流的时间戳以及有效性持续时间。锚的有效性持续时间描述了锚保持有效的时间长度,使得加入的用户可以在锚是有效的情况下开始在锚处观看直播流。

观看者客户端设备向流托管服务器提供加入直播流的请求。客户端设备发送的请求在特定时间发送,因此与直播流的时间戳相关联。在一个实施例中,流托管服务器分析所生成的锚的列表并识别适当的锚,观看者客户端设备将从该锚开始访问直播流。基于由锚指定的直播流的时间戳和与锚相关联的有效性持续时间来选择适当的锚。流托管服务器从由所识别的锚指定的时间戳开始向观看者客户端设备提供直播流。因此,本公开解决了在直播流内观看者导航的技术问题,并且可以实现观看者能够比不存在锚时更快速地定位和观看感兴趣内容的技术效果。此外,本公开可以实现如下技术效果:由于观看者没有观看直播流的紧前部分,所以用户不必查看他或她不感兴趣的内容或者甚至是不可理解的内容。

流托管服务器还能够生成从完成的直播流导出的视频点播(vod)内容。另外,与完成的直播流相关联的所生成的锚也包括在所创建的vod中。vod中的锚有多种用途。在一种情况下,vod可以由观看者客户端设备呈现给用户。在接收到用户输入时,观看者客户端设备可以在由与vod相关联的锚指定的不同时间戳处显示vod。这在游戏流中是期望的,其中,可以快速跳过vod的会话场景。因此,具有相关联的锚的vod使得能够跳到下一个游戏的开始。

另外,可以用诸如关键字的主题标签来标记vod中的锚。当流托管服务器接收包括关键字(或更一般地,主题标签)的查询时,流托管服务器返回与所提供的关键字相关的锚的列表。因此,与必须从头开始显示vod相反,服务器使得观看者客户端设备能够从具有特别相关主题的锚开始访问vod。

本公开提供了计算机实现的方法、用于实现所述方法的计算机系统以及包括用于实现所述方法的计算机程序指令的计算机程序产品。每个计算机程序产品通常是非暂时性计算机可读介质。然而,原则上,计算机程序产品也可以是通过通信网络传输的信号。

本公开中包含的一些计算机实现的方法由权利要求1和13表达,并且在权利要求12和20中表达本公开中包含的一些计算机程序产品。

附图说明

图1是根据一个实施例的流托管服务器的系统环境。

图2描绘了根据一个实施例的直播流模块的架构。

图3a描绘了根据一个实施例的创建者客户端设备的软件模块的架构。

图3b描绘了根据一个实施例的观看者客户端设备的软件模块的架构。

图4是根据一个实施例的由流托管服务器基于生成的锚提供直播流的示例流程图。

图5是根据一个实施例的由观看者客户端设备根据生成的锚回放直播流的示例流程图。

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

具体实施方式

系统环境概述

图1描绘了根据一个实施例的用于提供直播流的流托管服务器150的系统环境100。系统环境100包括创建者客户端设备108、观看者客户端设备110、网络130和流托管服务器150。

转向图1中所示的各个实体,创建者客户端设备108和观看者客户端设备110分别生成直播流并访问直播流。如这里所使用的,“直播流”涉及在创作者和观看者(或在音频内容的情况下的听众)之间分发的任何流媒体内容,而不管该内容是被广播、多播还是在创作者和单个观看者之间直接交换。

创建者客户端设备108和观看者客户端设备110中的每一个是具有经由网络130发送和/或接收数据的软件模块300a/b的计算设备。创建者客户端设备108和观看者客户端设备110的示例包括台式计算机、膝上型计算机、平板计算机(平板电脑)、移动电话、个人数字助理(pda)、游戏设备或包括计算功能和数据通信能力的任何其他电子设备。创建者客户端设备108和观看者客户端设备110均可以使用诸如microsoftinternetexplorer、mozillafirefox、googlechrome、applesafari和/或opera之类的web浏览器作为与网络130连接的接口。补充或替代地,在移动设备上本地运行的专用应用软件被用作连接到网络130的接口。创建者108和观看者客户端设备110通常包括处理器、显示设备(或到显示设备的输出)、诸如硬盘驱动器或闪存设备的本地存储器(创建者108和浏览器客户端设备110向其存储用户在执行任务时使用的数据)以及用于经由网络130耦合到流托管服务器150的网络接口。虽然图1描绘了一个创建者客户端设备108和一个观看者客户端设备110,但是本领域技术人员可以理解,任何数量的创建者客户端设备108和观看者客户端设备110可以存在于与网络130和流托管服务器150通信的系统架构中。

创建者使用创建者客户端设备108来生成直播流。创建者客户端设备108通过用户界面180接收用户输入。例如,创建者客户端设备108(例如,膝上型计算机)接收输入,该输入指示创建者客户端设备108使用软件或硬件来实时或近实时连续捕获视频和音频以生成直播流。在各种实施例中,创建者客户端设备108还包括软件模块300a,其在记录直播流的视频和音频时适当地处理直播流的视频和音频。然后,创建者客户端设备108连续地将该流发送到流托管服务器150,直到该流结束。

观看者客户端设备110发送访问直播流的请求,并且在接收到直播流时,开始在由与直播流相关联的锚指定的时间戳处访问直播流。观看者客户端设备110包括用户界面180和软件模块300b,它们一起处理观看者客户端设备110的用户与流托管服务器150提供的内容之间的交互。

例如,观看者客户端设备110的用户界面180接收用于加入直播流的用户输入(例如,点击、触摸输入)。软件模块300b向流托管服务器150发送用于直播流的加入请求。在发送加入请求之后的时间,软件模块300b接收具有指定直播流的时间戳的识别的锚的直播流。在接收到直播流时,软件模块300b适当地解码直播流的视频和音频以在观看者客户端设备110的用户界面180上回放。观看者客户端设备110继续显示从由锚指定的时间戳开始的直播流。

流托管服务器150负责从创建者客户端设备108接收直播流,例如响应于来自创建者客户端设备108的锚生成请求在各种情况下生成与直播流相关联的锚,并且提供直播流以用于在多个不同的观看者客户端设备上回放,每个观看者客户端设备可能从一个或多个锚所指定的流内的不同时间戳开始并且向前进行。在一个示例实施例中,流托管服务器150包括直播流模块200、内容服务器104、摄取服务器106、内容存储器120。

直播流模块200处理直播流。在服务器侧,直播流模块200接收要发送给观看者客户端设备110的流,并且还接收锚生成请求。如上所述,每个锚指定直播流中的时间戳,使得直播流模块200可以从时间戳开始向观看者客户端设备110提供直播流。在观看者侧,直播流模块200从一个或多个观看者客户端设备110接收加入直播流的加入请求。直播流模块200针对每个加入请求分析和识别与直播流相关联的适当锚。直播流模块200向观看者客户端设备110提供直播流和指定直播流中的时间戳的锚,使得观看者客户端设备110可以从时间戳开始播放直播流。在下面参考图2描述关于直播模块200的进一步细节。

直播流模块200还负责向观看者客户端设备110提供内容项(例如,视频广告)。例如,内容项最初可由第三方系统(例如,广告商)提供并由摄取服务器106处理。摄取服务器106处理所提供的内容项并将内容项存储在内容存储器120中。内容服务器104检索位于内容存储器120中的内容项并将该内容项提供给观看者客户端设备以在观看者客户端设备110的用户界面180上显示。作为一个示例,内容项将被显示在观看者客户端设备110上以暂时替换直播流。一旦观看者客户端设备110在其持续时间内播放内容项,观看者客户端设备110就返回到在生成的锚处播放直播流。

网络130促进一个或多个客户端设备110和流托管服务器150之间的通信。网络130可以是任何有线或无线局域网(lan)和/或广域网(wan),例如内联网、外联网或互联网。在各种实施例中,网络130使用标准通信技术和/或协议。网络130使用的技术的示例包括以太网、802.11,3g、4g、802.16或任何其他合适的通信技术。网络130可以使用无线、有线或无线和有线通信技术的组合。网络130使用的协议的示例包括传输控制协议/因特网协议(tcp/ip)、超文本传输协议(http)、简单邮件传输协议(smtp)、文件传输协议(tcp)或任何其他合适的通信协议。

直播流模块

图2描绘了根据一个实施例的直播流模块200及其相关联模块。在该示例实施例中,直播流模块200包括锚生成模块210、流通信模块220、锚分析器模块230、锚列表240、视频点播(vod)生成器模块250和搜索模块260。在一些实施例中,直播流模块200具有与本文描述的模块和/或逻辑结构不同的模块和/或逻辑结构,并且功能可以以与此处描述的方式不同的方式分布在模块和/或逻辑结构中。

锚生成模块210生成要与直播流相关联的一个或多个锚。每个锚表示用于观看者客户端设备110访问直播流的在直播流中的适当时间戳。例如,在游戏流中,锚可以与对应于新游戏的开始的时间点相关联。作为另一示例,创建者可以在直播流期间从第一主题切换到第二主题。

锚生成模块210允许创建者通过在创建者客户端设备108上呈现的图形用户界面180来创建锚。创建者他/她可以自行决定选择在正在进行的直播流的当前时间戳处放置锚。例如,创建者在图形用户界面上提供用户输入(例如,点击按钮或拖放)。作为另一示例,创建者可以稍后手动指定在直播流中较早发生的时间戳以生成锚。这对于可能忘记实时生成锚的创建者很有用。响应于用于在直播流中生成锚的用户输入,创建者客户端设备108向锚生成模块210发送锚生成请求,然后锚生成模块210继续生成锚。在各种实施例中,锚生成模块210可以在生成新锚时向当前正在访问直播流的观看者客户端设备110提供通知。

每个锚与直播流相关联,并指定:1)直播流的持续时间内的时间戳,以及2)有效性持续时间。例如,直播流的时间戳对应于直播流中与创建者提供用于创建锚的输入的时间重合的时间点。作为另一示例,时间戳对应于创建者手动指定的时间。

锚的有效性持续时间描述锚在生成之后有效的时间段。一旦锚的有效性持续时间到期,观看者客户端设备110就不能再访问从该锚开始的直播流。在一些实施例中,锚的有效性持续时间由锚生成模块210预先确定。在其他实施例中,每个锚的有效性持续时间可由创建者手动指定。例如,在直播流开始之前,锚生成模块210可以提示创建者输入将在直播流期间生成的每个锚的默认有效性持续时间(例如,5分钟)。另外,锚生成模块210可以提示创建者实时地(例如,在创建者指定锚的创建之后立即)输入每个生成的锚的有效性持续时间。

锚的生成也可以由锚生成模块210自动执行,而无需创建者的干预。锚生成模块210可以实现机器学习模型,其分析创建者的偏好和/或特征以理解适当锚的可能位置。例如,当创作者考虑对下一个主题说什么时,创作者可能倾向于持续超过阈值时间的静默时刻。因此,当在流中出现长于阈值的静默持续时间时,机器学习模型可以选择在直播流中嵌入锚。作为另一示例,创建者可以使用指示新主题正在开始的特定短语(例如,“好的,换档......”)。可以专门训练机器学习模型以识别创建者的倾向或使用过的短语并相应地生成锚。

每个生成的锚存储在锚列表240中。锚列表240可以是可读数据文件或数据库表,其存储相关联流、锚的标识符(例如,锚1、锚2等)、时间戳和与每个锚相关联的有效性持续时间。

流通信模块220从创建者客户端设备108接收直播流,并负责处理、存储和/或缓冲流,并将流传输到一个或多个观看者客户端设备110。用于处理流的一个示例包括对从创建者客户端设备108接收的直播流进行转码。例如,视频和音频可能先前已由创建者客户端设备108编码。视频可以是h.264格式,而音频是高级音频编码(aac)格式。流通信模块220可以将视频转码为不同的格式、视频分辨率和/或帧速率,并将音频转码为不同的格式或不同的比特率。转码后的视频和音频由流通信模块220根据标准协议(例如,实时传输协议(rtp)、实时消息传递协议(rtmp)、用户数据报协议(udp)、传输控制协议(tcp))传输到观看者客户端设备110。

流通信模块220处理与各种观看者客户端设备110的通信。例如,流通信模块220接收来自各种观看者客户端设备110的访问直播流的请求,并另外提供从通过生成的锚指定的时间戳开始的直播流。一种类型的请求是来源于新访问直播流的观看者客户端设备110的加入请求。另一种类型的请求是来自先前正在访问直播流、暂时退出并且现在正尝试重新加入该流的观看者客户端设备110的重新加入请求。

在接收到加入请求的用例中,响应于从观看者客户端设备110接收到加入请求,流通信模块220将与加入请求相关联的时间戳提供给锚分析器模块230。锚分析器模块230根据提供的与加入请求相关联的时间戳从锚列表240中选择锚。将在下面进一步描述关于锚的分析和选择的细节。

流通信模块220从锚分析器模块230接收来自锚列表的所识别的锚。所识别的锚指定从观看者客户端设备110开始访问直播流时开始的直播流的时间戳。因此,流通信模块220从在所选择的锚中指定的时间戳开始向客户端设备110提供直播流。

接收重新加入请求的用例包括观看者客户端设备110访问直播流,从直播流转移以播放内容项,然后在完成内容项时尝试重新加入直播流的地方。作为示例,内容项是用于临时替换在观看者客户端设备110上显示的直播流的广告。该广告可以是trueview广告,其允许用户在阈值时间段(例如,5秒)之后跳过广告。因此,用户可以通过提供用于在阈值时间量之后跳过内容项的用户输入(例如,点击)来完成内容项。当内容项完成播放时,观看者客户端设备110向流通信模块220发送重新加入请求。因此,直播流的锚是有利的,因为它们使得观看者客户端设备110能够在观看了一个内容项目之后在适当的时间戳重新加入直播流。

为了使观看者客户端设备110能够适当地离开直播流并播放内容项,除了内容项之外,流通信模块220还向观看者客户端设备110提供进一步的指令。作为一个示例,指令包括对内容项的信息进行编码/解码,使得观看者客户端设备110可以充分地回放内容项的视频和音频数据。作为另一示例,流通信模块220还传送离开时间间隔。离开时间间隔表示观看者客户端设备110在被从直播流转移到内容项之前可以访问直播流的时间长度。在离开时间间隔期满时,观看者客户端设备110临时退出直播流以显示内容项。当观看者客户端设备110退出直播流时,它记录与其退出时相对应的直播流的时间戳(例如,离开时间戳)。

虽然内容项由观看者客户端设备110临时播放(即,与离开时间戳一致或在离开时间戳之后),但是锚生成模块210可以生成用于直播流的附加锚。当流通信模块220在终止播放内容项之后接收重新加入请求时,流通信模块220还从观看者客户端设备110接收离开时间戳。流通信模块220将接收的离开时间戳传递给锚分析器模块230,使得在给定重新加入请求的情况下可以识别适当的锚。当流通信模块220从锚分析器模块230接收所识别的适当锚时,流通信模块220提供从由适当锚指定的时间戳开始的直播流。因此,流通信模块220允许观看者客户端设备110通过提供从所识别的锚开始的直播流来重新加入直播流。更一般地,所生成的锚的实现允许观看者客户端设备110的用户不会错过任何直播流或错过非常少量的直播流或者在被转向观看内容项时在适当的锚点处重新加入。

流通信模块220能够向观看者客户端设备110提供指示直播流当前处于“半直播”状态的信息。也就是说,直播流(由实时生成的内容组成(例如,通过被摄像机捕获))以(故意)延迟显示给观看者,该延迟取决于所识别的锚;该延迟可以被选择为大于显示系统将用于缓冲目的的直播流上的延迟。例如,观看者客户端设备110在用户界面180上向查看用户显示在图形用户界面(gui)上的半直播状态的指示。指示可以是彩色按钮或指示器。另外,观看者客户端设备110还可以在gui上向用户呈现可选选项。当gui接收用户输入时,观看者客户端设备110向流通信模块220发送访问直播流的直播段的请求。因此,这为观看者客户端设备110的用户提供了关于在直播或半直播状态下观看直播流的控制。响应于该请求,流通信模块220将直播流的直播段提供给观看者客户端设备110。观看者客户端设备110可以改变在gui上的指示以显示不同的指示器(例如,不同的颜色或不同的按钮),使得用户可以容易地理解直播流现在处于直播状态。

锚分析器模块230从锚列表240中选择适当的锚,使得观看者客户端设备110可以在由锚指定的适当时间戳处加入或重新加入直播流。锚分析器模块230基于由锚指定的时间戳、由锚指定的有效性持续时间以及与客户端设备110发送的加入或重新加入请求相关联的时间戳来选择锚作为适当的锚。锚分析器模块230可以默认为没有选择锚的情况。在这种情况下,锚分析器模块230指示流通信模块220在其当前的直播时刻(而不是从锚开始)向观看者客户端设备110提供直播流。

锚分析器模块230通过依赖于由观看者客户端设备110发送的请求的类型(例如,加入或重新加入请求)的过程从锚列表240识别适当的锚。例如,如果观看者客户端设备110新加入直播流(例如,加入请求),则锚分析器模块230检索包括与直播流相关联的所有生成的锚的锚列表240。或者,如果观看者客户端设备正在重新加入直播流(例如,重新加入请求),则锚定分析器模块230检索仅包括在内容项在观看者客户端设备110上播放时生成(或者在内容项开始在观看者客户端设备上播放之前的短暂的预定时间其间生成)的锚的锚列表。

在检索到的锚列表240中的锚中,锚分析器模块230基于与每个锚相关联的有效性持续时间来确定哪些锚保持有效。为此,锚分析器模块230计算由锚指定的时间戳和与何时发送加入或重新加入请求相关联的时间戳(“当前时间”)之间的差。将该差和与所识别的锚相关联的有效性持续时间进行比较。如果该差低于有效性持续时间,指示该锚有效,则锚分析器模块230将该锚标记为有效。或者,如果当前时间与由所识别的锚指定的时间戳之间的差高于有效性持续时间,则该锚被标记为无效。无效锚被忽略不再进一步考虑,而有效锚被进一步分析。在锚列表240中的所有锚都无效的情况下,锚分析器模块230继续默认情况,并指示流通信模块220提供直播状态的直播流。

在识别出有效锚之后,锚分析器模块230根据观察器客户端设备110是否已经向流通信模块220发送了加入请求或重新加入请求来识别锚。如果观看者客户端设备110新加入直播流,则锚分析器模块230识别并选择锚列表240中的最新锚。最新锚指定直播流中的时间戳,该时间戳比锚列表240中的所有其他锚指定的时间戳更新。

如果观看者客户端设备110在被临时转移(例如,转向观看内容项)之后重新加入直播流,则锚定分析器模块230识别观看者客户端设备110何时退出直播流(例如,离开时间)。离开时间可以由观看者客户端设备110预先与重新加入请求一起发送。锚分析器模块230选择具有最接近所识别的离开时间的时间戳的锚。最接近所识别的离开时间的锚的时间戳可以在所识别的离开时间之前发生,这意味着在重新加入该锚处的直播流时,观看者客户端设备110将重放直播流的一部分。在这种情况下,观看者客户端设备110避免跳过直播流的任何部分。或者,最接近所识别的离开时间的锚的时间戳可以在所识别的离开时间之后发生。因此,观看者客户端设备110可以在锚的适当时间戳处重新加入直播流,同时错过了非常少的直播流。

一旦锚分析器模块230识别出适当的锚,锚分析器模块230就指示流通信模块220从所选择的锚开始向观看者客户端设备110发送直播流。流通信模块220可以通过将直播流与所识别的锚一起发送来做到这一点。

在直播流完成之后,视频点播(vod)生成器模块250获得流并生成要存储在内容存储器120中的vod。因此,观看者客户端设备110可以在随后时间访问vod,并显示直播流,即使它不再是直播流传输。在生成vod时,vod生成器模块250将最初在直播流期间创建的生成的锚与vod相关联。例如,vod生成器模块250将丢弃的锚与流一起编码。另外,vod生成器模块250创建相关联的数据文件(或数据库表),其包括由每个锚在流中指定的时间戳以及描述每个锚的标签(例如,描述性关键字)。例如,锚可以指示创建者在流中的时间戳处从谈论狗的主题切换到猫的主题。因此,数据文件可以在时间戳处用关于猫的特定主题标记锚。数据文件可以包括用于每个锚的多个标签。

搜索模块260使得观看者客户端设备110的用户能够对vod有效地搜索感兴趣的锚。因此,搜索模块260提供改进的搜索粒度,使得观看者客户端设备110可以访问vod内的特定锚,而不必从头开始访问vod。例如,搜索模块260接收搜索查询并解析查询以获得关键字。搜索模块260在内容存储器120中搜索与查询或查询中的关键字匹配的vod中的锚。例如,如果来自客户端设备的查询搜索“小狗”,则搜索模块260搜索与每个vod相关联的元数据文件以识别用“小狗”的主题标记的锚。匹配可以是在搜索查询和与锚相关联的关键字之间的文本串匹配。搜索模块260将标记有匹配主题的锚的搜索结果返回给发送查询的观看者客户端设备110。如果观看者客户端设备110的用户选择锚,指示他/她有兴趣观看从该锚开始的vod,则搜索模块260从内容存储器120检索在那个锚开始的在vod中的适当视频片段,并且将其提供到观看者客户端设备110。这使得用户能够查看vod文件的相关剪辑,而不必查看可能与提供的查询不整体相关的整个vod。

软件模块

图3a描绘了根据一个实施例的创建者客户端设备108上的软件模块300a及其相关联模块。软件模块300a包括流生成器模块305和流处理模块310。

流生成器模块305生成从通信地耦合到观看者客户端设备110的一部分或在该设备上运行的硬件(例如,相机)或软件(例如,视频游戏)源获得的流的视频和音频。生成的流存储在流存储器315中。流生成器模块305设置包括视频分辨率、视频帧速率和音频比特率的直播流的特性。或者,可以由创建者设置直播流的特征,以便为他/她的观看者提供最佳的直播流观看体验。

流生成器模块305在直播流的部分被捕获时将它们传递到流处理模块310。因此,流处理模块310可以在流生成器模块305继续记录直播流的新部分的同时处理和发送流。流处理模块310根据视频和音频的特性(例如,分辨率、帧速率、比特率)对视频和音频进行编码。作为示例,使用h.264编码器对视频进行编码,同时使用aac编码器对音频进行单独编码。一旦被编码,流处理模块310就继续将编码的视频和音频发送到流托管服务器150。

流处理模块310使用标准协议(例如,rtp、rtmp、udp、tcp)将直播流的编码的视频和音频发送到流托管服务器150。例如,对于直播流,rtp相对于udp是优选,以确保观看者可以以有限的延迟观看流。

图3b描绘了根据一个实施例的在观看者客户端设备110上的软件模块300b及其相关联模块。软件模块300b使得观看者客户端设备110能够访问直播流。在各种实施例中,软件模块300b包括用户界面管理器350、请求模块355和回放模块365。在一些实施例中,创建者客户端设备108或观看者客户端设备110的软件模块300a/300b具有与这里描述的模块和/或逻辑结构不同的模块和/或逻辑结构,并且功能可以以与这里描述的方式不同的方式分布在模块和/或逻辑结构中。

用户界面管理器350通过用户界面180从客户端设备110的用户接收信息并向客户端设备110的用户提供信息。例如,客户端设备可以是具有触摸显示界面的移动客户端设备(例如,蜂窝电话)。因此,用户界面管理器350接收触摸输入并且还通过用户界面180显示直播流以供查看。用户界面管理器350可以在直播流期间提供信息。如前所述,用户界面管理器350在观看者客户端设备110的用户界面180上提供gui。gui可以提供当前流处于半直播状态(例如,黄色按钮)而不是直播状态(例如,绿色按钮)的指示。作为另一示例,每当在直播流中生成新锚时,用户界面管理器350可以提供通知。

用户界面管理器350向观看者客户端设备110呈现具有锚的vod。在显示vod时,用户界面管理器350可以通过用户界面180呈现另外的可选选项。例如,可选选项可以是在用户界面180上显示的前向或后向箭头。当在前向箭头上接收到用户输入时,用户界面管理器350识别后续锚(例如,指定vod中的下一个时间戳的锚)和在该锚显示vod。类似地,如果在后向箭头上接收到用户输入,则用户界面管理器350识别先前的锚(例如,指定vod中的先前时间戳的锚)并在先前的锚处显示vod。可以由查询流托管服务器150的用户界面管理器执行识别后续或先前锚的操作。

用户界面管理器350可以维护计数器,该计数器跟踪用户从vod中的锚开始或跳过其的次数。计数器表示在vod中的锚的流行度。可以将更新的计数器信息提供给流托管服务器150以进一步改进搜索功能。例如,观看者客户端设备110可以发送对术语“小狗”的搜索,然后接收与“小狗”相关联的vod中的特定锚。如果已经提供“小狗”搜索查询的大多数观看者客户端设备110最终在锚处开始显示vod(例如,不跳过锚),则可以将该信息提供回流托管服务器150。或者,如果已经提供“小狗”搜索查询的大多数观看者客户端设备110短暂地显示从锚开始的vod,但是快速停止观看,则关键字“小狗”可能是与锚的不良主题关联。流托管服务器150可以使用该信息来调整与锚相关联的关键字标签,并进一步更新用于运行识别vod内容中的锚的搜索查询的排名算法。

用户界面管理器350识别观看者客户端设备110何时正在显示vod以及观看者客户端设备110何时停止显示vod。在随后的时间,如果指示观看者客户端设备110再次开始显示vod,则观看者客户端设备110可以开始在由锚指定的vod的相关点处显示。在示例场景中,用户界面管理器350可以在网页上呈现vod,并且用户决定在网页上向上或向下滚动,使得vod不再在视野中。因此,用户界面管理器350记录指示观看者客户端设备110何时停止显示vod的时间戳。如果vod不再在视野中,vod将停止播放。在随后的时间,用户可以滚动回vod。因此,用户界面管理器350接收观看者客户端设备110继续显示vod的指示。用户界面管理器350可以开始在最近的锚处播放vod,该最近的锚可以在指示观看者客户端设备110何时停止显示vod的时间戳之前或之后。

用户界面管理器350接收指示用户想要访问直播流的输入。用户界面管理器350将该输入提供给请求模块355。请求模块355被配置为从观看者客户端设备110向流托管服务器150提供各种不同的请求。作为第一示例,响应于从用户界面管理器350接收用户输入,请求模块355向流托管服务器150发送加入或重新加入请求(取决于用户是新加入还是重新加入)。在第二示例中,请求模块355可以向流托管服务器150发送用户查询以搜索可能与用户查询相关的vod的锚。以下进一步描述这些示例中的每一个。

参考第一示例,当观看者客户端设备110期望访问直播流时,请求模块355确定是发送加入请求还是重新加入请求。例如,如果观看者客户端设备110新访问直播流,则请求模块355选择发送加入请求。如果观看者客户端设备110先前已经访问了直播流并且被临时转移(例如,1-5分钟),则请求模块355选择发送重新加入请求。在一些情况下,即使观看者客户端先前已经访问过流,请求模块355也选择发送加入请求而不是重新加入请求。例如,请求模块355确定观看者客户端设备先前已经访问了直播流,但是在阈值时间量(例如30分钟、1小时)之前退出了流。因此,请求模块355将该观看者客户端设备110视为新的加入请求。

请求模块355可以向流托管服务器150发送重新加入请求以及从时间戳存储器370检索的时间戳。所包括的时间戳有助于流托管服务器150确定观看者客户端设备110何时先前离开直播。例如,观看者客户端设备110可以预先访问直播流,并且随后被转移以在直播流的离开时间戳处观看内容项。因此,当观看者客户端设备110尝试重新加入流时,请求模块355将离开时间连同重新加入请求一起发送到流托管服务器150。流托管服务器150确定在客户端设备110根据离开时间播放内容项目时生成的锚。

现在参考第二示例,请求模块355还处理所提交的用户查询以在vod中搜索与感兴趣的特定主题相关联的锚。请求模块355将搜索请求发送到流托管服务器150的搜索模块260。例如,请求模块355可以发送针对“小狗”的搜索请求。作为回报,观看者客户端设备110接收与“小狗”的主题相关联的锚的列表。可以以根据由搜索模块260使用的搜索算法排名的顺序来呈现锚列表。因此,用户可以从与搜索查询中包括的特定感兴趣主题有关的锚选择和播放vod。

在一些实施例中,观看者客户端设备110的软件模块300b还包括锚分析器模块230,并且负责识别适当的锚以开始访问直播流。因此,代替锚分析器模块230是流托管服务器150的模块,该实施例在观看者客户端设备110中包括锚分析器模块230。

在观察器客户端设备110上的锚分析器模块230从流托管服务器150接收锚列表240。作为一个示例,锚分析器模块230基于锚列表240中的每个锚的时间戳以及与加入或重新加入请求相关联的时间戳自动识别适当的锚。如前所述,如果请求是加入请求,则锚分析器模块230选择指定最新近(mostrecent)的时间戳的锚。如果请求是重新加入请求,则锚分析器模块230选择指定最接近离开时间的时间戳的锚。

作为第二示例,锚分析器模块230可以向用户客户端设备110的用户询问用户输入以识别适当的锚。锚分析器模块230在观看者客户端设备110的用户界面180上呈现在锚列表240中的锚,并接收指定用于加入或重新加入流的适当锚的用户输入。在该示例中,锚分析器模块230向用户提供对在直播流中开始观看的位置的最终控制。

回放模块365基于所识别的锚从流托管服务器150接收要在观看者客户端设备110上播放的直播流。直播流可以在元数据文件中包含关于回放模块365如何播放直播流的附加指令(例如,解码器、视频分辨率和音频比特率)。例如,回放模块365可以接收直播流和相关联的音频文件,并且可以在将它们在观看者客户端设备110的用户界面管理器350上播放之前单独解码它们。

回放模块365a还接收来自流托管服务器150的内容项以在客户端设备110上播放。内容项可以存储在客户端内容存储器375中。另外,内容项可以具有相关联的指令(例如,存储在与内容项相关联的元数据文件中),其指示客户端设备110在直播流的离开时间戳处播放内容项。因此,客户端设备110自动转向在离开时间戳处播放内容项。该离开时间戳可以存储在时间戳存储器370中,并且当客户端设备110要重新加入直播流时,用于由锚分析器模块360进一步分析。

提供直播流

图4描绘了根据一个实施例的流托管服务器150基于生成的锚提供要在客户端设备110上播放的直播流的示例流程图。流托管服务器150从创建者客户端设备108接收405直播流。流托管服务器150接收410在直播流的时间戳处从创建者客户端设备108生成锚的请求。

当直播流正在进行时,流托管服务器150生成415锚。如上所述,生成具有时间戳和有效性持续时间的每个锚。流托管服务器150从客户端设备接收420请求(例如,加入请求或重新加入请求),并基于与每个锚相关联的有效性持续时间确定425有效的锚。从有效的锚列表中,流托管服务器150识别430锚。例如,如果接收的请求是加入请求,则流托管服务器150识别指定最新近的时间戳的锚。如果接收的请求是重新加入请求,则流托管服务器150识别指定最接近离开时间戳的时间戳的锚。一旦流托管服务器150识别出锚,流托管服务器150就向观看者客户端设备110提供435直播流,以便在由所识别的锚指定的时间戳开始播放。

直播流的请求和播放

图5描绘了根据一个实施例的由观看者客户端设备110基于所生成的锚回放所接收的直播流的示例流程图。观看者客户端设备110接收505指定访问直播流的期望的用户输入。例如,用户可以通过用户界面180提供触摸输入。观看者客户端设备110确定510代表用户发送的请求的类型。例如,观看者客户端设备110确定观看者客户端设备110是正在新访问直播流,还是在转移之后返回到直播流。因此,该请求可以是加入请求或重新加入请求。观看者客户端设备向流管理服务器150发送515访问直播流的请求。如果观看者客户端设备110正在发送重新加入请求,则该请求还包括与先前离开直播流的观看者客户端设备110相关联的离开时间戳。

观看者客户端设备110接收520直播流以及指定直播流的时间戳的所识别的锚。如果观看者客户端设备110新加入直播流,则所识别的锚是与直播流相关联的最新近生成的锚。如果观看者客户端设备110重新加入直播流,则所识别的锚指定最接近与观看者客户端设备110何时离开直播流相对应的离开时间的时间戳。观看者客户端设备110在由所识别的锚指定的时间戳开始为用户播放525直播流。

综述

已经出于说明的目的呈现了本公开的实施例的前述描述;其并非旨在穷举或将本公开限制于所公开的精确形式。相关领域的技术人员可以理解,鉴于以上公开内容,许多修改和变化是可能的。

本说明书的一些部分在关于信息的操作的算法和符号表示方面描述了本公开的实施例。数据处理领域的技术人员通常使用这些算法描述和表示来有效地将其工作的实质传达给本领域其他技术人员。这些操作虽然在功能上、计算上或逻辑上被描述,但应理解为由计算机程序或等效电路或微代码等实现。此外,在不失一般性的情况下,将这些操作安排称为模块有时也证明是方便的。所描述的操作及其相关模块可以以软件、固件、硬件或其任何组合体现。在一个实施例中,用计算机程序产品实现软件模块。该计算机程序产品可以包括含有计算机程序代码的计算机可读介质,该计算机程序代码可以由计算机处理器执行,用于执行所描述的任何或所有步骤、操作或过程。或者,计算机程序产品可以是编码计算机程序代码的信号,并且通过信号路径(例如,无线电路径、电信号路径或光路)传输而不被记录在非暂时性记录介质上。

本公开的实施例还可以涉及用于执行本文的操作的装置。该装置可以为所需目的而专门构造,并且/或者,它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算设备。这样的计算机程序可以存储在非暂时性有形计算机可读存储介质中或者适合于存储电子指令的任何类型的介质中,该介质可以耦合到计算机系统总线。此外,在说明书中提到的任何计算系统可以包括单个处理器,或者可以是采用多个处理器设计以提高计算能力的架构。

本公开的实施例还可以涉及通过本文描述的计算过程产生的产品。这样的产品可以包括由计算过程产生的信息,其中,信息存储在非暂时性有形计算机可读存储介质上,并且可以包括计算机程序产品的任何实施例或本文描述的其他数据组合。

最后,说明书中使用的语言主要是出于可读性和指导目的而选择的,并且可能未选择它来描绘或限制本发明的主题。因此,本公开的范围旨在不受该详细描述的限制,而是受基于此在本申请上发布的任何权利要求的限制。因此,本公开的实施例的公开内容旨在说明而非限制本公开的范围,本公开的范围在所附权利要求中阐述。

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