比赛直播方法、设备及存储介质与流程

文档序号:25992806发布日期:2021-07-23 21:05阅读:249来源:国知局
比赛直播方法、设备及存储介质与流程

本申请涉及网络技术领域,特别涉及一种比赛直播方法、设备及存储介质。



背景技术:

目前,随着网络技术的快速发展,直播技术也得到了飞速发展。基于直播技术,主播可以方便地在直播间内进行直播,观众也可以方便地进入主播的直播间来观看主播的表演。而且,随着直播功能的多样化,还可以进行比赛直播。

目前的比赛直播一般为线上比赛的直播,线上比赛是指多个主播通过在各自的直播间内进行表演来进行比赛。线上比赛的比赛时间一般比较长,一般为一周、半个月或一个月等。在比赛期间,参与比赛的多个主播可以分别在各自的直播间内进行直播,观众则可以在主播的直播间内为喜欢的主播投票。在比赛结束时,直播服务器可以统计各个主播在比赛期间接收到的投票数,然后根据每个主播的投票数确定每个主播的比赛分数,再根据每个主播的比赛分数确定最终的比赛结果,并将比赛结果推送到各个主播的直播间。由于线上比赛直播一般持续时间较长,因此对比赛结果的实时性要求不高,一般采用事后统计和修复的方式来进行比赛分数的计算,比赛分数计算逻辑较为简单。

但是,在很多场景中,观众还希望能够观看到一些线下比赛的直播,比如线下选秀比赛的直播,但是由于线下比赛的直播一般直播时间较短,对实时性要求较高,线上比赛的投票和分数计算逻辑无法直接应用在线下比赛直播中,因此如何进行线下比赛直播成为目前亟待解决的问题。



技术实现要素:

本申请实施例提供了一种比赛直播方法、设备及存储介质,可以用于进行线性比赛的直播。所述技术方案如下:

一方面,提供了一种比赛直播方法,所述方法包括:

接收观众终端发送的第一投票请求消息,所述第一投票请求消息携带参赛者标识和第一消息标识,所述第一投票请求消息是由所述观众终端基于直播间内的投票操作触发的,所述第一消息标识用于标识由同一投票操作触发的投票请求消息,所述直播间用于显示线下比赛的直播视频;

基于所述参赛者标识和所述第一消息标识,对所述线下比赛的比赛分数进行更新;

将更新后的比赛分数发送给所述观众终端,由所述观众终端根据所述更新后的比赛分数对所述直播间内显示的比赛信息进行刷新,所述比赛信息至少包括比赛分数。

一方面,提供了一种比赛直播方法,所述方法包括:

显示线下比赛的比赛状态控制界面;

基于所述比赛状态控制界面接收状态切换指令;

基于所述状态切换指令,向服务器发送状态切换消息,所述状态切换消息用于控制所述线下比赛的比赛状态信息。

一方面,提供了一种比赛直播装置,所述装置包括:

接收模块,用于接收观众终端发送的第一投票请求消息,所述第一投票请求消息携带参赛者标识和第一消息标识,所述第一投票请求消息是由所述观众终端基于直播间内的投票操作触发的,所述第一消息标识用于标识由同一投票操作触发的投票请求消息,所述直播间用于显示线下比赛的直播视频;

更新模块,用于基于所述参赛者标识和所述第一消息标识,对所述线下比赛的比赛分数进行更新;

发送模块,用于将更新后的比赛分数发送给所述观众终端,由所述观众终端根据所述更新后的比赛分数对所述直播间内显示的比赛信息进行刷新,所述比赛信息至少包括比赛分数。

一方面,提供了一种比赛直播装置,所述装置包括:

显示模块,用于显示线下比赛的比赛状态控制界面;

接收模块,用于基于所述比赛状态控制界面接收状态切换指令;

发送模块,用于基于所述状态切换指令,向服务器发送状态切换消息,所述状态切换消息用于控制所述线下比赛的比赛状态信息。

一方面,提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述任一种比赛直播方法。

一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述比赛直播方法。

一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现上述任一种比赛直播方法。

一方面,提供了一种计算机程序产品,当所述计算机程序产品被执行时,用于实现上述任一种比赛直播方法。

本申请实施例提供的技术方案带来的有益效果是:

本申请实施例中,在对线下比赛进行直播的过程中,可以接收观众终端发送的投票请求消息,然后根据投票请求消息中携带的参赛者标识和消息标识,对线下比赛的比赛分数进行更新,并将更新数据发送给观众终端,由观众终端根据更新数据对直播间内所显示的比赛分数进行刷新,如此可以实现实时对参数者分数进行加分,并可以在直播间内实时显示参数者的比赛分数,满足了线下比赛直播的实时性要求。另外,通过在投票请求消息中增加消息标识,使用消息标识来标识同一投票操作触发的投票请求消息,如此可以避免基于同一投票操作的重复加分,提高了加分的准确性。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例涉及的一种直播系统的架构示意图;

图2是本申请实施例涉及的另一种直播系统的架构示意图;

图3是本申请实施例提供的一种比赛直播的流程图;

图4是本申请实施例提供的一种线下比赛的直播间的示意图;

图5是本申请实施例提供的一种重做处理的逻辑示意图;

图6是本申请实施例提供的一种直播间内显示的榜单示意图;

图7是本申请实施例提供的一种比赛状态控制界面示意图;

图8是本申请实施例提供的一种比赛直播装置的结构框图;

图9是本申请实施例提供的另一种比赛直播装置的结构框图;

图10是本申请实施例提供的一种终端终端的结构框图;

图11是本申请实施例提供的一种服务器的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景予以说明。

本申请实施例提供的比赛直播方法应用于对线下比赛进行直播的场景中,比如对线下选秀类比赛或线下展示类比赛等线下比赛进行直播。作为一个示例,观众可以通过直播间观看线下比赛的直播,而且,观众还可以在直播间内为线下比赛的参赛者进行投票,直播间可以实时显示线下比赛的比赛分数。

需要说明的是,线上比赛由于比赛时间较长,对实时性要求不高,不需要实时显示比赛分数,因此也就不需要实时计算比赛分数,且对实时分数的准确性要求也不高,可以采用事后修复的方式来保证数据的一致性。而本申请实施例中,为了满足线下比赛的实时性要求,方便用户直观的看到实时的比赛分数,提出了一种在直播间内实时显示线下比赛的比赛分数的方案。而且,为了保证实时分数的准确性,提出了一种基于投票请求消息中的参赛者标识和消息标识,来对线下比赛的比赛分数进行更新的加分逻辑,可以避免重复加分的情况,提高加分的准确性。

此外,线上比赛的比赛状态比较简单,一般只有开始状态和结束状态这两种状态,且这两种状态可以通过预先设置的固定开始时间和固定结束时间进行判断。但是,由于线下比赛是线下进行的,比赛进程环环相扣,干扰因素较多,比赛状态不可控,因此无法通过固定的时间来判断比赛状态。本申请实施例中,为了能够准确确定线下比赛的比赛状态,在直播系统中增加了一个导播终端,导播可以通过导播终端来对线下比赛的比赛状态进行控制,从而实现线下比赛和线上直播的紧密配合,保证比赛的正常进行。

接下来,对本申请实施例涉及的实施环境进行介绍。

图1是本申请实施例涉及的一种直播系统的架构示意图,如图1所示,该直播系统包括观众终端10、服务器20和存储系统30。观众终端10和服务器20之间可以通过有线网络或无线网络进行连接,服务器20可以对存储系统30进行读/写操作。

观众终端10为观看线下比赛直播的终端,可以为手机、平板电脑或计算机等终端。服务器20可以为线下比赛直播的后台服务器,且可以为服务器集群中的一个或多个服务器。

服务器20可以将线下比赛的直播数据发送给观众终端10,由观众终端10通过直播间进行显示,且直播间可以实时显示线下比赛的比赛分数。观众可以通过观众终端10在直播间内为参数者进行投票,触发观众终端10向服务器20发送投票请求消息。服务器20接收到投票请求消息后,可以基于投票请求消息对比赛分数进行更新,并将更新后的比赛分数发送给观众终端10,由观众终端10对显示的比赛分数进行刷新。

此外,如图1所示,该直播系统还可以包括导播终端40,导播终端40为线下比赛的导播所使用的终端,可以为手机、平板电脑或计算机等。导播可以使用导播终端40控制线下比赛的比赛状态,从而实现线下比赛和线上直播的紧密配合,保证比赛的正常进行。

作为一个示例,观众终端10可以通过接入系统接入服务器20,该接入系统可以实现多网统一接入、外网网络请求转发、自动负载均衡、移动连通服务和网页代理服务中的一种或多种。

比如,该接入系统可以包括tgw(tencentgateway,腾讯网关)、wns(wirelessnetworkservice,无线网络服务)和nginx(一种开源的网页服务器软件)中的一种或多种。其中,tgw是一种能够实现多网统一接入、外网网络请求转发、支持自动负载均衡的系统,wns用于为app(应用)提供高连通、高可靠、强安全的网络连接通道的服务,nginx是一种开源的网页服务器软件,用于为web(网页)提供代理服务。

比如,若观众终端10通过直播客户端观看线下比赛直播,则观众终端10可以通过tgw和wns接入服务器。若观众终端10通过网页观看线下比赛直播,则观众终端10可以通过tgw和nginx接入服务器。

作为一个示例,服务器20可以通过消息通道向观众终端10推送比赛信息。该比赛信息可以包括比赛分数和比赛状态中的至少一种。

作为一个示例,服务器20的逻辑模块可以包括活动写服务、push(推送)服务、活动读服务和导播服务。其中,活动写服务用于向存储系统30中写入数据,比如写入观众的投票请求消息。push服务用于通过消息通道向观众终端10推送比赛信息,比如推送榜单信息。活动读服务用于从存储系统30中读取数据,比如读取比赛分数或比赛状态等信息。导播服务用于切换线下比赛的比赛状态。

作为一个示例,存储系统30可以为分布式存储系统,如codis(一种分布式存储系统)或ckv(一种分布式存储系统)等。另外,存储系统30还可以包括第一存储系统和第二存储系统,第一存储系统用于存储比赛分数及其相关信息,比如存储观众的投票请求消息流水和比赛分数信息。第二存储系统用于存储比赛状态及其相关信息,比如存储导播的状态切换消息流水和比赛状态信息。

图2是本申请实施例涉及的另一种直播系统的架构示意图,如图2所示,该直播系统包括终端21、接入系统22、服务器23和存储系统24。终端21可以为观众终端或导播终端。终端21可以通过接入系统接入服务器,存储系统用于存储投票请求消息流水、状态切换消息流水和比赛信息等,服务器可以对存储系统进行读/写操作。

其中,观众终端可以通过应用程序访问线下比赛的直播间,也可以通过用户网页访问线下比赛的直播间。若终端通过应用程序访问线下比赛的直播间,则终端可以通过tgw和wns接入服务器;若通过用户网页访问线下比赛的直播间,则终端可以通过tgw和nginx接入服务器。

其中,服务器可以提供活动写服务、push服务、活动读服务和导播服务等。当接收到终端发送的投票请求消息时,服务器可以通过活动写服务将投票请求消息写入存储系统。另外,可以通过活动读服务读取存储系统中的比赛信息。在终端通过应用程序访问线下比赛的直播间时,服务器可以通过消息通道向终端推送比赛信息;在终端通过用户网页访问线下比赛的直播间时,终端可以向服务器发送信息获取请求,由服务器根据信息获取请求,通过活动读服务器读取存储系统中的比赛信息,并将读取的比赛信息返回给终端。

另外,导播终端可以通过导播网页对线下直播的直播状态进行控制。比如,导播可以在导播网页中触发状态切换消息,由服务器根据状态切换消息,通过导播服务对线下比赛的比赛状态进行切换。

图3是本申请实施例提供的一种比赛直播的流程图,该方法可以应用于上述直播系统中,如图3所示,该方法包括如下步骤:

步骤301:观众终端进入直播间,该直播间用于显示线下比赛的直播视频。

其中,该直播间为线下比赛的直播间。作为一个示例,线下比赛的直播间可以只有一个直播间,比如线下比赛直播供应商提供的官方直播间。

在一些实施例中,观众终端可以通过应用程序进入该直播间,比如通过线下比赛直播供应商的应用程序进入该直播间,也可以通过网页进入该直播间,比如通过浏览器网页进入该直播间,本申请实施例对此不做限定。

作为一个示例,请参考图4,观众终端进入直播间后,可以显示如图4所示的线下比赛的直播视频41。

步骤302:当基于直播间检测到投票操作时,观众终端向服务器发送第一投票请求消息,第一投票请求消息携带参赛者标识和第一消息标识。

其中,该投票操作是由观众在该直播间内触发的,可以为对投票选项的触发操作,也可以赠送礼物的操作等,本申请实施例对此不做限定。

作为一个示例,观众可以通过为参数者赠送礼物的方式来为参赛者进行投票,也即是,为某个参数者赠送礼物即相当于为该参数者投票,并触发携带该参赛者的参数者标识的第一投票请求消息。

比如,直播间显示有赠送礼物选项,观众可以在某个参数者进行表演时,在直播间内触发赠送礼物选项,以给正在表演的参数者赠送礼物。或者,直播间可以显示多种类型的礼物,不同类型的礼物与不同的参数者一一对应,观众可以通过触发赠送与某个参数者对应的礼物,来给该参数者赠送礼物。

其中,参数者标识用于唯一标识参数者,可以为参数者的名称或id(identitydocument,身份标识)等。第一消息标识用于标识由同一投票操作触发的投票请求消息,也即是,由同一投票操作触发的投票请求消息携带的消息标识均相同。

比如,在终端基于投票操作发送投票请求消息后,若投票请求消息发送失败或发送延迟,可能会触发终端再次发送投票请求消息,且再次发送的投票请求消息携带的消息标识与上次发送的投票请求消息中携带的消息标识相同,即这两次发送的投票请求消息中携带的消息标识相同,表示是由同一投票操作触发的投票请求消息。

步骤303:服务器接收观众终端发送的第一投票请求消息。

在接收到观众终端发送的第一投票请求消息之后,服务器还可以先将第一投票请求消息写入到存储系统中,以记录投票请求消息流水。作为一个示例,该存储系统可以为分布式存储系统,比如codis或ckv等。

步骤304:服务器基于第一投票请求消息中携带的参赛者标识和第一消息标识,对线下比赛的比赛分数进行更新。

也即是,可以基于第一投票请求消息中携带的参赛者标识和第一消息标识,对参数者标识指示的参数者的比赛分数进行加分。

作为一个示例,可以先基于第一消息标识,检测第一投票请求消息是否已被响应,若基于第一消息标识,检测到第一投票请求消息还未被响应,则对参赛者标识指示的参赛者的比赛分数进行加分,若基于第一消息标识,检测到第一投票请求消息已被响应,则不对赛者标识指示的参赛者的比赛分数进行加分。

也即是,若携带第一消息标识的某个第一投票请求消息已被响应,则后续再接收到携带第一消息标识的第一投票请求消息后,即可根据第一消息标识判断该消息已被响应过,不会再重复响应,如此可以避免同一投票操作的重复加分,保证不多加分,提高了加分的准确性。

作为一个示例,可以通过检测第一消息标识是否存在于消息标识列表中,来检测对应的第一投票请求消息是否已被响应,该消息标识列表用于存储已响应的投票请求消息所携带的消息标识。

比如,可以基于第一消息标识,对消息标识列表进行检测;若检测到消息标识列表中不存在第一消息标识,则对参赛者标识指示的参赛者的比赛分数进行加分,以及将第一消息标识存储在消息标识列表中。若检测到消息标识列表中存在第一消息标识,则不对参赛者标识指示的参赛者的比赛分数进行加分。

在另一实施例中,为了保证不少减分,还可以提供在当前服务器的基础上,提供备份服务器,在当前服务器发生故障时,可以切换至备份服务器,通过备份服务器对服务器切换期间的数据进行重新处理。其中,备份服务器的数量可以为1个或多个,本申请实施例对此不做限定。比如,可以采用一个主服务器和两个备份服务器的服务器系统。

请参考图5,图5是本申请实施例提供的一种重做处理的逻辑示意图。如图5所示,服务器51接收到投票请求消息之后,可以将投票请求消息写入到数据库中,并根据投票请求消息对比赛分数进行加分处理。当服务器51发生故障后,还可以启动重做服务,通过重做服务对服务器51发生故障期间的数据进行重新处理。比如,将服务器51发生故障期间接收到的投票请求消息重新写入到数据库中,并重新进行加分处理。

比如,在当前服务器发生故障时,可以切换至备份服务器,并通过备份服务器,对服务器切换期间接收到的投票请求消息进行重做处理,保证切换期间数据的准确。其中,重做处理可以包括基于服务器切换期间接收到的投票请求消息,对线下比赛的比赛分数进行更新,还可以包括将服务器切换期间接收到的投票请求消息重新写入到存储系统中。

比如,如果加分过程中,服务器宕机了,可能存在少加分的情况,为了避免上加分的情况,对于接收到的投票请求消息也就可以不确认这条消息,保证这条消息可以被其他服务器响应。如果写数据失败了,可以通过备份服务器重做失败流水,保证数据一定会写入到存储系统中。

在另一实施例中,为了避免投票请求过程中的网络延迟,可能会导致用户的投票没有计入的情况,在比赛过程中可以全程累计观众的投票,并在每个比赛阶段通过写快照的方式确定每个参数者的比赛分数。也即是,在每个比赛阶段比赛结束时,确定比赛结束时刻各个参数者的比赛分数,这个比赛结束时刻的各个参数者的比赛分数即为写快照,之后,将比赛结束时刻各个参数者的比赛分数作为这将个比赛阶段的比赛结果。进一步地,比赛结束后,若还有投票,还可以继续根据投票进行比赛加分。

步骤305:服务器将更新后的比赛分数发送给观众终端。

作为一个示例,服务器可以通过消息通道,将更新后的比赛分数推送给观众终端。

相关技术中,在线上比赛直播场景中,假设参赛主播有1万个,为了减小服务器压力,有两种数据缓存方案。一种是:如果有20台服务器,则20台服务器均缓存全量的主播数据,每秒更新缓存,则每秒的缓存量为20*1w=20w,这样压力反而翻倍了。另一种是:如果在nginx层做用户路由,那么每台服务器每秒只需缓存500个主播数据,则每秒的缓存量为20*500=1w。

上述方案看似解决了压力问题,但是线下比赛直播是一个特殊场景,线下比赛只有一个直播间,所以单直播间人数很容易达到10w个以上,那么,轮询压力都落到同一个服务器上,服务器压力将非常大。

本申请实施例中,为了减小线下比赛直播的压力,考虑到线下比赛直播中数据的变化一般是由观众的投票请求消息触发的,而观众的投票请求消息的数据量较小,一般为100/s,且一般集中在一段时间连续发送,所以比赛信息的更新量级要比轮询频率低的多。基于此,本申请实施例中,可以采取在接收到投票请求消息时才将变更的数据发送给终端,而在未接收到投票请求消息时不推送数据,从而减少数据量。

作为一个示例,可以每隔预设时长,获取预设时长内接收到的投票请求消息;若当前时间到达该预设时长的截止时间,则基于该预设时长内接收到的所有投票请求消息中携带的参赛者标识和消息标识,对线下比赛的比赛分数进行更新,然后将该预设时长内对线下比赛的比赛分数进行更新得到的更新后的比赛分数发送给观众终端。其中,所有投票请求消息携带第一投票请求消息。

其中,该预设时长可以预先设置,比如该预设时长可以为1s或2s等。为了便于区分,可以将该预设时长称为第一预设时长。

也即是,可以每隔预设时长,基于预设时长内接收到的投票请求消息进行统一分数更新和推送,从而减小了更新次数和推送次数,减小了数据处理量。

另外,为了防止数据丢失或者数据发送失败,观众终端还可以在第二预设时长内未接收到比赛分数的更新数据时,向服务器发送信息获取请求,以请求服务器根据该信息获取请求,获取比赛分数,将比赛分数发送给观众终端。

比如,服务器可以在接收到信息获取请求后,根据信息获取请求,从存储系统中读取比赛分数,然后将比赛分数发送给观众终端。

如此,观众终端可以在长时间为接收到更新数据时,向服务器主动获取更新数据,从而防止服务器的数据丢失或者数据发送失败。

其中,该第二预设时长也可以预先设置,比如可以为30s或一分钟等。

进一步地,服务器发送给观众终端的更新数据还可以携带消息时间戳,将消息时间戳作为版本号,以便观众终端根据版本号进行数据更新,避免数据回跳。比如,若已接收到的更新数据的消息时间戳早于当前接收到的更新数据的消息时间戳,则当前也就不需要再根据该更新数据进行数据更新,如此,可以避免数据回跳。

进一步地,前端还做了保护,比赛分数只加不减,即使在极端情况时间戳错乱时,也不影响用户展示。

步骤306:观众终端接收更新后的比赛分数,根据更新后的比赛分数对直播间内显示的比赛信息进行刷新。

观众终端可以在直播间内显示比赛新,该比赛信息至少包括比赛分数,还可以包括比赛状态等其他信息。

示例的,比赛分数可以包括各个参赛者的比赛分数,也可以包括部分比赛者的比赛分数,所展示比赛分数对应的参赛者与当前比赛进度相关。比赛分数可以为投票数,也可以为根据投票数进行转换得到的分数。

示例的,直播间可以显示榜单,并在榜单中显示参赛者的比赛分数。比如,该榜单可以显示当前比赛阶段中目前比赛分数最高的参赛者的比赛分数,以及当前参赛者的比赛分数。作为一个示例,可以将当前比赛阶段中目前比赛分数最高的参赛者称为王者,将当前参赛者称为挑战者,然后在榜单中显示王者的比赛分数和挑战者的比赛分数。示例的,直播间可以根据比赛进度显示如图6所示的任一种榜单。比如,榜单61、榜单62、榜单63和榜单64可以为第一轮1v1比赛阶段显示的榜单,榜单65、榜单66和榜单67可以为第二轮比赛阶段显示的榜单。

作为一个示例,在观众终端接收到更新后的比赛分数后,可以基于更新后的比赛分数对直播间的榜单进行刷新。

作为一个示例,服务器还可以在存储系统中存储榜单信息,基于观众的投票请求消息对榜单进行更新,将更新后的榜单发送给观众终端,由观众终端进行显示。

步骤307:导播终端显示线下比赛的比赛状态控制界面。

本申请实施例,为了对线下比赛的比赛状态进行控制,在直播系统中增加了一个导播终端,导播可以使用导播终端对线下比赛的比赛状态进行控制。

其中,线下比赛的比赛状态可以包括比赛进行状态,如开始状态、比赛状态和结束状态等。另外,还可以包括比赛过程中各个参赛者的出场情况,出场情况可以包括未上场和已上场等。

另外,线下比赛还可以包括多个阶段的比赛,比赛状态还可以包括当前所处阶段,以及当前所处阶段的比赛进行状态。示例的,多个阶段可以包括1对1阶段、复活赛阶段、半决赛阶段和决赛阶段等。示例的,1对1阶段可以通过赛前的抽签决定对战顺序,比赛一场比赛结束以后就停止当场比赛的计票,胜者进入决赛,败者进入复活阶段。复活赛阶段,每人表演一段,获得投票最高的进入决赛,复活成功。决赛阶段采用车轮战的形式,两两依次对决,最后获胜者获得总冠军。

作为一个示例,导播终端可以显示有线下比赛的比赛状态控制界面。示例的,该比赛状态控制界面可以用于控制比赛进行状态、参赛者的出场情况、比赛所处阶段、各个比赛阶段的比赛进行状态中的一种或多种。示例的,该比赛状态控制界面可以如图7所示,该比赛状态控制界面可以包括比赛阶段控制面板71、1对1比赛阶段控制面板72和总决赛阶段控制面板73中的至少一种。

步骤308:导播终端基于比赛状态控制界面接收状态切换指令。

其中,状态切换指令可以由导播通过指定操作触发,该指定操作可以通过比赛状态控制界面中状态切换选项的触发操作触发,也可以通过命令行触发。

比如,若比赛状态控制界面不可用,则导播终端还可以接收基于命令行触发的状态切换指令,以便导播通过命令行直接控制比赛状态。

步骤309:导播终端基于状态切换指令,向服务器发送第一状态切换消息。

其中,第一状态切换消息用于控制线下比赛的比赛状态信息。

作为一个示例,第一状态切换消息还可以携带消息时间戳,消息时间戳可以用于指示第一状态切换消息的生成时间或发送时间等。

作为一个示例,第一状态切换消息还可以携带待切换至的目标状态信息,以便服务器将比赛状态信息切换为目标状态信息。

步骤310:服务器接收导播终端发送的第一状态切换消息,基于第一状态切换消息,对线下比赛的比赛状态信息进行切换。

作为一个示例,存储系统可以包括m个存储设备,以便服务器可以采用多地存储的方式进行数据存储,提高数据的准确性。其中,m为大于1的整数,m可以预先设置,比如m为3或4等。

进一步地,在接收到第一状态切换消息后,可以将第一状态切换消息分别写入到m个存储设备中,以通过m个存储设备记录状态切换消息流水。

作为一个示例,基于第一状态切换消息,对线下比赛的比赛状态信息进行切换的保证包括:将第一状态切换消息写入到m个存储设备中,从m个存储设备中分别获取在接收到第一状态切换消息之后最新写入的状态切换消息,得到n个第二状态切换消息;若n大于或等于预设阈值,则从n个第二状态切换消息中确定目标状态切换消息,目标状态切换消息为携带的消息时间戳最早的第二状态切换消息;然后基于目标状态切换消息携带的切换指令,对线下比赛的比赛状态信息进行切换。

其中,n为正整数,且n小于或等于m。如果在某个存储设备写入第一状态切换消息时写入失败或写入错误,则从该存储设备获取最新写入的状态切换消息时,可能会获取失败。本申请实施例中,可以在成功获取到n个第二状态切换消息,且n大于或等于预设阈值,确定获取成功,并对线下比赛的比赛状态信息进行切换。

另外,在从存储系统中读取比赛状态信息时,还可以从m个存储设备中分别读取比赛状态信息,若成功读取n个比赛状态信息,且n大于或等于预设阈值,则从读取的比赛状态信息中获取版本号最高的比赛状态信息作为最新的状态信息。其中,比赛状态信息的版本号可以为比赛状态信息的时间戳。

进一步地,服务器对线下比赛的比赛状态信息进行切换之后,还可以将线下比赛的比赛状态信息的切换数据发送给观众终端,由观众终端基于切换数据对直播间内显示的比赛状态信息进行刷新。

进一步地,直播过程中,还可以通过比赛表演过程中音乐停止,停止加分的柔性降级策略,减少用户的投诉。

进一步地,比赛过程中的比赛分数可以通过写快照的方式确定,保证每次操作的可重入,解决了网络延迟等不确定问题带来的影响。

本申请实施例中,在对线下比赛进行直播的过程中,可以接收观众终端发送的投票请求消息,然后根据投票请求消息中携带的参赛者标识和消息标识,对线下比赛的比赛分数进行更新,并将更新数据发送给观众终端,由观众终端根据更新数据对直播间内所显示的比赛分数进行刷新,如此可以实现实时对参数者分数进行加分,并可以在直播间内实时显示参数者的比赛分数,满足了线下比赛直播的实时性要求。另外,通过在投票请求消息中增加消息标识,使用消息标识来标识同一投票操作触发的投票请求消息,如此可以避免基于同一投票操作的重复加分,提高了加分的准确性。另外,本申请实施例通过上述活动写服务、push服务、活动读服务和导播服务等模块的实现逻辑,完成了一个高可用、可柔性降级、以及容错性和实时性极高的线下比赛直播系统方案,有效保证了线下比赛直播的可玩性和可靠性。

图8是本申请实施例提供的一种比赛直播装置的结构框图,该装置可以集成于服务器中,如图8所示,该装置包括接收模块801,更新模块802和发送模块803。

接收模块801,用于接收观众终端发送的第一投票请求消息,所述第一投票请求消息携带参赛者标识和第一消息标识,所述第一投票请求消息是由所述观众终端基于直播间内的投票操作触发的,所述第一消息标识用于标识由同一投票操作触发的投票请求消息,所述直播间用于显示线下比赛的直播视频;

更新模块802,用于基于所述参赛者标识和所述第一消息标识,对所述线下比赛的比赛分数进行更新;

发送模块803,用于将更新后的比赛分数发送给所述观众终端,由所述观众终端根据所述更新后的比赛分数对所述直播间内显示的比赛信息进行刷新,所述比赛信息至少包括比赛分数。

可选地,更新模块802用于:

基于所述第一消息标识,对消息标识列表进行检测,所述消息标识列表用于存储已响应的投票请求消息所携带的消息标识;

若检测到所述消息标识列表中不存在所述第一消息标识,则对所述参赛者标识指示的参赛者的比赛分数进行加分,以及将所述第一消息标识存储在所述消息标识列表中。

可选地,所述更新模块802还用于:

若检测到所述消息标识列表中存在所述第一消息标识,则不对所述参赛者标识指示的参赛者的比赛分数进行加分。

可选地,更新模块802用于:

每隔预设时长,获取所述预设时长内接收到的投票请求消息;

若当前时间到达所述预设时长的截止时间,则基于所述预设时长内接收到的所有投票请求消息中携带的参赛者标识和消息标识,对所述线下比赛的比赛分数进行更新,所述所有投票请求消息携带所述第一投票请求消息;

所述发送模块803用于:

将所述预设时长内对所述线下比赛的比赛分数进行更新得到的更新后的比赛分数发送给所述观众终端。

可选地,所述比赛信息还包括比赛状态信息;

所述装置还包括:

接收模块,用于接收导播终端发送的第一状态切换消息,所述第一状态切换消息用于控制所述线下比赛的比赛状态信息;

切换模块,用于基于所述第一状态切换消息,对所述线下比赛的比赛状态信息进行切换;

所述发送模块803,还用于将所述线下比赛的比赛状态信息的切换数据发送给所述观众终端,由所述观众终端基于所述切换数据对所述直播间内显示的比赛状态信息进行刷新。

可选地,所述第一状态切换消息携带切换指令和消息时间戳;

所述切换模块用于:

将所述第一状态切换消息写入到m个存储设备中,所述m为大于1的整数;

从所述m个存储设备中分别获取在接收到所述第一状态切换消息之后最新写入的状态切换消息,得到n个第二状态切换消息,所述n为正整数,且所述n小于或等于所述m;

若所述n大于或等于预设阈值,则从所述n个第二状态切换消息中确定目标状态切换消息,所述目标状态切换消息为携带的消息时间戳最早的第二状态切换消息;

基于所述目标状态切换消息携带的切换指令,对所述线下比赛的比赛状态信息进行切换。

本申请实施例中,在对线下比赛进行直播的过程中,可以接收观众终端发送的投票请求消息,然后根据投票请求消息中携带的参赛者标识和消息标识,对线下比赛的比赛分数进行更新,并将更新数据发送给观众终端,由观众终端根据更新数据对直播间内所显示的比赛分数进行刷新,如此可以实现实时对参数者分数进行加分,并可以在直播间内实时显示参数者的比赛分数,满足了线下比赛直播的实时性要求。另外,通过在投票请求消息中增加消息标识,使用消息标识来标识同一投票操作触发的投票请求消息,如此可以避免基于同一投票操作的重复加分,提高了加分的准确性。

图9是本申请实施例提供的一种比赛直播装置的结构框图,该装置集成于终端中,如图9所示,该装置包括显示模块901,接收模块902和发送模块903。

显示模块901,用于显示线下比赛的比赛状态控制界面;

接收模块902,用于基于所述比赛状态控制界面接收状态切换指令;

发送模块903,用于基于所述状态切换指令,向服务器发送状态切换消息,所述状态切换消息用于控制所述线下比赛的比赛状态信息。

需要说明的是:上述实施例提供的比赛直播装置在进行比赛直播时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的比赛直播装置与比赛直播方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图10是本申请实施例提供的一种终端终端1000的结构框图。该终端可以为观众终端,也可以为导播终端。该终端1000可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端1000包括有:处理器1001和存储器1002。

处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1001所执行以实现本申请中方法实施例提供的比赛直播方法。

在一些实施例中,终端1000还可选包括有:外围设备接口1003和至少一个外围设备。处理器1001、存储器1002和外围设备接口1003之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1003相连。具体地,外围设备包括:射频电路1004、触摸显示屏1005、摄像头1006、音频电路1007、定位组件1008和电源1009中的至少一种。

外围设备接口1003可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和外围设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和外围设备接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路1004用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏1005用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,设置终端1000的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在再一些实施例中,显示屏1005可以是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路1007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还可以包括耳机插孔。

定位组件1008用于定位终端1000的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件1008可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源1009用于为终端1000中的各个组件进行供电。电源1009可以是交流电、直流电、一次性电池或可充电电池。当电源1009包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、指纹传感器1014、光学传感器1015以及接近传感器1016。

加速度传感器1011可以检测以终端1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011可以用于检测重力加速度在三个坐标轴上的分量。处理器1001可以根据加速度传感器1011采集的重力加速度信号,控制触摸显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器1012可以检测终端1000的机体方向及转动角度,陀螺仪传感器1012可以与加速度传感器1011协同采集用户对终端1000的3d动作。处理器1001根据陀螺仪传感器1012采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器1013可以设置在终端1000的侧边框和/或触摸显示屏1005的下层。当压力传感器1013设置在终端1000的侧边框时,可以检测用户对终端1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在触摸显示屏1005的下层时,由处理器1001根据用户对触摸显示屏1005的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器1014用于采集用户的指纹,由处理器1001根据指纹传感器1014采集到的指纹识别用户的身份,或者,由指纹传感器1014根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1001授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1014可以被设置终端1000的正面、背面或侧面。当终端1000上设置有物理按键或厂商logo时,指纹传感器1014可以与物理按键或厂商logo集成在一起。

光学传感器1015用于采集环境光强度。在一个实施例中,处理器1001可以根据光学传感器1015采集的环境光强度,控制触摸显示屏1005的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1005的显示亮度;当环境光强度较低时,调低触摸显示屏1005的显示亮度。在另一个实施例中,处理器1001还可以根据光学传感器1015采集的环境光强度,动态调整摄像头组件1006的拍摄参数。

接近传感器1016,也称距离传感器,通常设置在终端1000的前面板。接近传感器1016用于采集用户与终端1000的正面之间的距离。在一个实施例中,当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变小时,由处理器1001控制触摸显示屏1005从亮屏状态切换为息屏状态;当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变大时,由处理器1001控制触摸显示屏1005从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图10中示出的结构并不构成对终端1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

图11是本申请实施例提供的一种服务器1100的结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)1101和一个或一个以上的存储器1102,其中,所述存储器1102中存储有至少一条指令,所述至少一条指令由所述处理器1101加载并执行以实现上述各个方法实施例提供的比赛直播方法。当然,该服务器1100还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器1100还可以包括其他用于实现设备功能的部件,在此不做赘述。

在示例性的实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述比赛直播方法。

在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述比赛直播方法。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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