一种收看时长统计方法及系统的制作方法
【专利摘要】本发明公开了一种收看时长统计方法及系统,该方法包括:认证服务器向自身卡夫卡Kafka队列中写入播放令牌中的信息;所述播放令牌中的信息包括资源令牌、请求播放的频道/节目的标识、请求时间;所述资源令牌记录有机顶盒终端信息;统计服务器从所有认证服务器的Kafka队列中读取最新记录的播放令牌中的信息;统计服务器根据读取的播放令牌中的信息,更新对应机顶盒终端的收看时长。本发明的方法,使统计服务器能够快速获取所有认证服务器对特定机顶盒生成的所有数据,以快速准确地实现对用户收看时长的统计。
【专利说明】
一种收看时长统计方法及系统
技术领域
[0001]本发明涉及数字电视技术领域,特别涉及一种收看时长统计方法及系统。【背景技术】
[0002]现在几乎每个家庭都拥有电视机,而目前的电视广播基本都以数码信号方式传播,包括无线数码电视广播、有线电视广播、卫星电视广播和通过互联网络的IP电视广播, 用户要收看这些电视广播,一般要安装一个机顶盒终端,由机顶盒终端将各种电视广播的信号解码,还原出电视节目的数据流,然后通过电视机播放给用户收看。
[0003]在用户收看电视广播时,机顶盒终端向认证服务器发送请求,包括初始请求,每个预设时间的心跳请求以及结束请求等,而在现有的播放系统中,当使用一个认证服务器对机顶盒终端的所有请求进行处理时,由于数据量较大,认证服务器负载过大。另一方面,当使用多个认证服务器来对机顶盒终端的请求进行处理时,由于机顶盒终端的不同的请求可能发送到不同的认证服务器中,由于有多个认证服务器同时处理数据,无法对机顶盒终端的收看时长进行有效统计。
【发明内容】
[0004]本发明提供一种收看时长统计方法及系统,能够使统计服务器快速获取所有认证服务器对特定机顶盒生成的所有数据,以快速准确地实现对用户的收看时长的统计。
[0005]本发明提供一种收看时长统计方法,包括:
[0006]认证服务器向自身卡夫卡Kafka队列中写入播放令牌中的信息;所述播放令牌中的信息包括资源令牌、请求播放的频道/节目的标识、请求时间;所述资源令牌记录有机顶盒终端信息;
[0007]统计服务器从所有认证服务器的Kafka队列中读取最新记录的播放令牌中的信息;
[0008]统计服务器根据读取的播放令牌中的信息,更新对应机顶盒终端的收看时长。
[0009]本发明实施例的一些有益效果可以包括:
[0010]在用户收看某一频道或节目时,由于使用多个认证服务器对机顶盒终端进行数据处理,能够降低服务器的负载,保证频道/节目顺畅播放。同时,所有的认证服务器接收到机顶盒终端的请求后,将生成的数据都写入到各自的Kafka队列中,在统计收看时长时,由于每个认证服务器的Kafka队列中都包含了该认证服务器对接收的机顶盒终端的请求所生成的数据,因此统计服务器只需要从每个认证服务器的Kafka队列中获取对应的数据,并根据获取的数据进行统计即可得到用户对该频道/节目的收看时长,统计方便,效率高。[0〇11]在一个实施例中,所述认证服务器向自身卡夫卡Kafka队列中写入播放令牌中的信息之前,还包括:
[0012]机顶盒终端向任一认证服务器发送播放频道/节目的初始请求;
[0013]收到所述初始请求的认证服务器生成资源令牌和播放令牌;
[0014]所述认证服务器向自身卡夫卡Kafka队列中写入播放令牌中的信息,还包括:
[0015]收到所述初始请求的认证服务器向所述机顶盒终端发送所述资源令牌和播放令牌。
[0016]该实施例中,接收到机顶盒终端的初始请求的认证服务器生成资源令牌和播放令牌,通过将播放令牌的信息写入到自身的Kafka队列中,使得统计服务器在统计收看时长时,可以直接从该认证服务器的Kafka队列中获取到用户收看该频道/节目的初始请求信息,快速准确地统计出机顶盒终端的收看时长。
[0017]在一个实施例中,所述机顶盒终端向任一认证服务器发送播放频道/节目的初始请求之后,还包括:
[0018]所述机顶盒终端每隔预设时长向任一认证服务器发送播放频道/节目的心跳请求;所述心跳请求包括所述播放令牌;
[0019]收到所述心跳请求的认证服务器将所述播放令牌中的请求时间更新为本次机顶盒终端发来心跳请求的请求时间,随后跳至执行向自身卡夫卡Kafka队列中写入播放令牌中的信息的步骤。
[0020]该实施例中,在用户收看频道/节目的过程中,机顶盒终端以特定的时间间隔发送心跳请求到任一个认证服务器,认证服务器在接收到心跳请求后将播放令牌中的请求时间更新后将播放令牌的信息写入到自身的Kafka队列中,使得统计服务器在统计收看时长时, 只需监控每个认证服务器的Kafka队列中是否有更新数据,并在有更新数据时直接从Kafka 队列中获取到用户收看该频道/节目的请求信息进行收看时长的统计。[0021 ]在一个实施例中,所述机顶盒终端向任一认证服务器发送播放频道/节目的初始请求之后,还包括:
[0022]所述机顶盒终端向任一认证服务器发送播放频道/节目的结束请求;所述结束请求包括所述播放令牌;
[0023]收到所述结束请求的认证服务器将所述播放令牌中的请求时间更新为本次机顶盒终端发来结束请求的请求时间,随后跳至执行向自身卡夫卡Kafka队列中写入播放令牌中的信息的步骤。
[0024]该实施例中,当用户收看结束关闭或转换频道时,机顶盒终端向任一认证服务器发送结束请求,认证服务器在接收到结束请求后将播放令牌中的请求时间更新后将播放令牌的信息写入到自身的Kafka队列中,使得统计服务器在统计收看时长时,只需监控每个认证服务器的Kafka队列中是否有更新数据,并在有更新数据时直接从Kafka队列中获取到用户收看该频道/节目的请求信息进行收看时长的统计。
[0025]在一个实施例中,所述统计服务器根据读取的播放令牌中的信息,更新对应机顶盒终端的收看时长,包括:[〇〇26]S301:统计服务器以本次读取的请求播放的频道/节目的标识为索引,在所有认证服务器的Kafka队列中按照记录写入时间逆序,查找包括所述请求播放的频道/节目的标识且请求时间离本次读取的请求时间第N近的记录;所述N的初始值为1;[〇〇27]S302:统计服务器解析本次读取的资源令牌以及查找到的记录中的资源令牌,判断二者是否对应同一个机顶盒终端;若是,则执行S304;否则,执行S303;
[0028]S303:令 N=N+1,随后返回执行 S301;
[0029]S304:统计服务器计算本次读取的请求时间和查找到的记录中的请求时间之差的绝对值,随后执行S305;[〇〇3〇] S305:统计服务器将本次读取的记录对应机顶盒终端收看所述请求播放的频道/ 节目的标识对应的频道/节目的收看时长更新为T = T+A t;其中,T为机顶盒终端的收看时长,初始值为〇; A t为本次读取的请求时间和查找到的记录中的请求时间之差的绝对值。
[0031]该实施例中,统计服务器在统计用户就某一个频道/节目的收看时长时,以本次读取的请求播放的频道/节目为索引,在所有认证服务器的Kafka队列中查找同一机顶盒终端发出的离本次读取请求最近的播放请求,然后进行播放时长的统计。在该过程中,由于统计服务器只需要从每个认证服务器的Kafka队列中获取对应的信息,准确统计到机顶盒终端的实际收看时长。
[0032]本发明还提供一种收看时长统计系统,包括:[〇〇33]认证服务器,用于向自身Kafka队列中写入播放令牌中的信息;所述播放令牌中的信息包括资源令牌、请求播放的频道/节目的标识、请求时间;所述资源令牌记录有机顶盒终端信息;[〇〇34]统计服务器,用于从所有认证服务器的Kafka队列中读取最新记录的播放令牌中的信息;并根据读取的播放令牌中的信息,更新对应机顶盒终端的收看时长。[〇〇35]在一个实施例中,所述认证服务器包括:
[0036]接收模块,用于接收机顶盒终端发来的播放频道/节目的初始请求并发送给生成丰旲块;
[0037]生成模块,用于根据所述初始请求生成资源令牌和播放令牌,并将所述播放令牌发送给存储模块,将所述资源令牌和播放令牌发送给发送模块;
[0038]存储模块,用于将收到的播放令牌中的信息写入Kafka队列;[〇〇39]发送模块,用于向所述机顶盒终端发送收到的资源令牌和播放令牌。
[0040]在一个实施例中,所述接收模块,还用于接收机顶盒终端发来的播放频道/节目的心跳请求并发送给所述生成模块;所述心跳请求包括所述播放令牌;
[0041]所述生成模块,还用于根据收到的心跳请求,将所述心跳请求中的播放令牌中的请求时间更新为本次机顶盒终端发来心跳请求的请求时间,得到更新后的播放令牌并发送给所述存储模块。
[0042]在一个实施例中,所述接收模块,还用于接收机顶盒终端发来的播放频道/节目的结束请求并发送给所述生成模块;所述结束请求包括所述播放令牌;
[0043]所述生成模块,还用于根据收到的结束请求,将所述结束请求中的播放令牌中的请求时间更新为本次机顶盒终端发来结束请求的请求时间,得到更新后的播放令牌并发送给所述存储模块。
[0044]在一个实施例中,所述统计服务器包括:[〇〇45]监控读取模块,用于在监控到任一认证服务器向自身Kafka队列中写入播放令牌中的信息时,从该认证服务器的Kafka队列中读取最新记录的播放令牌中的信息,并向查找模块发送查找指令;
[0046]查找模块,用于根据所述查找指令,以本次所述监控读取模块读取的请求播放的频道/节目的标识为索引,在所有认证服务器的Kafka队列中按照记录写入时间逆序,查找包括所述请求播放的频道/节目的标识且请求时间离本次读取的请求时间第N近的记录;所述N的初始值为1;
[0047]解析判断模块,用于解析本次所述监控读取模块读取的资源令牌以及所述查找模块查找到的记录中的资源令牌,判断二者是否对应同一个机顶盒终端,若二者不对应同一个机顶盒终端,则令N = N+1后向所述查找模块发送包括最新N值的查找指令;若二者对应同一个机顶盒终端,则向计算模块发送计算指令;
[0048]计算模块,用于根据所述计算指令,计算本次所述监控读取模块读取的请求时间和所述查找模块查找到的记录中的请求时间之差的绝对值,并将本次所述监控读取模块读取的记录对应机顶盒终端收看所述请求播放的频道/节目的标识对应的频道/节目的收看时长更新为T = T+A t;其中,T为机顶盒终端的收看时长,初始值为0; A t为本次所述监控读取模块读取的请求时间和所述查找模块查找到的记录中的请求时间之差的绝对值。
[0049]本发明实施例的收看时长统计系统,在用户收看某一频道或节目时,所有的认证服务器接收到机顶盒终端的请求后,将生成的数据都写入到自身的Kafka队列中,在统计收看时长时,统计服务器只需要从每个认证服务器的Kafka队列中获取对应的数据,并根据获取的数据即可统计收看时长并对机顶盒进行数据更新,收看时长统计方便,效率高。
[0050]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
[0051]下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。【附图说明】[〇〇52]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0053]图1为本发明实施例中一种收看时长统计方法的流程图;
[0054]图2为本发明实施例中另一种收看时长统计方法的流程图;[〇〇55]图3为步骤S103的具体流程图;
[0056]图4为本发明实施例一中一种收看时长统计方法的流程图;
[0057]图5为本发明实施例中一种收看时长统计系统的结构框图;
[0058]图6为本发明实施例中另一种收看时长统计系统的结构框图;[〇〇59]图7为本发明实施例中又一种收看时长统计系统的结构框图。【具体实施方式】
[0060]以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0061]图1为本发明实施例中一种收看时长统计方法的流程图。如图1所示,该方法包括以下步骤S101-S103:[〇〇62]步骤S101,认证服务器向自身Kafka队列中写入播放令牌中的信息;所述播放令牌中的信息包括资源令牌、请求播放的频道/节目的标识、请求时间;所述资源令牌记录有机顶盒终端信息。
[0063]在本实施例中,认证服务器每收到机顶盒终端发送的请求后,都生成对应的数据并及时地写入到自身Kafka队列中。
[0064]步骤S102,统计服务器从所有认证服务器的Kafka队列中读取最新记录的播放令牌中的信息。
[0065]本实施例中,所有认证服务器都不需要查询数据库便可以向Kafka队列发数据,由于所有认证服务器的Kafka队列中包含了机顶盒终端对应的播放令牌中的信息,因此统计服务器可以直接从Kafka队列中获取所有关于该机顶盒终端的播放数据,直接进行机顶盒终端的时长统计,可以提高机顶盒终端收看时长统计的效率。
[0066]步骤S103,统计服务器根据读取的播放令牌中的信息,更新对应机顶盒终端的收看时长。
[0067]本发明实施例提供的技术方案,认证服务器设置有多个,机顶盒终端的请求可以向任一认证服务器发送请求,可以避免只使用一个认证服务器造成认证服务器的超负荷工作,从而可以避免用户在收看时出现故障。同时,所有的认证服务器接收到机顶盒终端的请求后,将及时地将生成的数据都写入到各自的Kafka队列中,在统计收看时长时,由于每个认证服务器的Kafka队列中都包含了该认证服务器对接收的请求所生成的数据,因此统计服务器只需要从Kafka队列中获取对应的数据,并根据获取的数据进行统计即可得到用户对该频道/节目的收看时长,收看时长统计方便,统计效率高。
[0068]图2为本发明实施例中另一种收看时长统计方法的流程图,如图2所示,相对于图1所示方法,在执行步骤SI OI之前,至少还包括以下步骤S201-S202:
[0069]步骤S201:机顶盒终端向任一认证服务器发送播放频道/节目的初始请求。
[0070]步骤S202:收到该初始请求的认证服务器生成资源令牌和播放令牌。
[0071]基于图1所示实施例,步骤SlOl包括以下步骤S203-S204:
[0072]步骤S203:收到该初始请求的认证服务器向机顶盒终端发送所述资源令牌和播放令牌。
[0073]步骤S204:收到该初始请求的认证服务器向自身Kafka队列中写入播放令牌中的
?目息O
[0074]步骤S205,统计服务器从所有认证服务器的Kafka队列中读取最新记录的播放令牌中的信息。
[0075]步骤S206,统计服务器根据读取的播放令牌中的信息,更新对应机顶盒终端的收看时长。
[0076]本实施例中,步骤S205-S206的过程和上述方法实施例的步骤S102-S103类似,此处不再赘述。
[0077]在本实施例中,当用户想要收看某一频道/节目时,机顶盒终端向任一认证服务器发送初始请求,该认证服务器在接收到机顶盒终端的初始请求后生成资源令牌和播放令牌,通过将播放令牌的信息写入到自身的Kafka队列中,使得统计服务器在统计收看时长时,可以直接从该认证服务器的Kafka队列中获取到用户收看该频道/节目的初始请求信息,提高了统计服务器的工作效率。
[0078]上述实施例中,由于认证服务器不知道提供视频流的服务器与机顶盒终端之间的网络是否始终保持连接,提供视频流的服务器在向机顶盒终端提供一段视频流之后,有可能在某一时刻与机顶盒终端之间的连接已经断开了,但是认证服务器不知道,无法通知提供视频流的服务器停止为已经断开连接的机顶盒终端服务以减少提供视频流的服务器的负载。为避免此种情况发生,在一个优选实施例中,在步骤S203之后,机顶盒终端每隔预设时长向任一认证服务器发送播放频道/节目的心跳请求;该心跳请求包括所述播放令牌;例如:若认证服务器向所述机顶盒终端首次发送的播放令牌中的请求时间为To,则机顶盒终端可在To+t,To+2t,To+3t,...等时刻(其中,t为预设时长)向认证服务器发送播放频道/节目的心跳请求。所有收到心跳请求的认证服务器,各自将本次收到的心跳请求的播放令牌中的请求时间更新为本次机顶盒终端发来心跳请求的请求时间(例如将原来记录的请求时间To改为To+t),随后跳至执行步骤S204,向自身Kafka队列中写入更新了请求时间后的播放令牌中的信息。
[0079]该实施例中,在用户收看频道/节目的过程中,机顶盒终端以预设的时间间隔发送心跳请求到任一个认证服务器,如每隔5分钟向任一个认证服务器发送心跳请求,以确定用户是否在继续收看该频道/节目。认证服务器在接收到心跳请求后将播放令牌中的请求时间更新后将播放令牌的信息写入到自身的Kafka队列中,使得统计服务器在统计收看时长时,统计服务器只需监控每个认证服务器的Kafka队列中是否有更新数据,并在有更新数据时直接从Kafka队列中获取到用户收看该频道/节目的请求信息进行看时长的统计,从而提高了统计服务器的工作效率。
[0080]在另一个实施例中,类似于上述机顶盒终端向认证服务器发送心跳请求的实施例,在步骤S203之后,机顶盒终端向任一认证服务器发送心跳请求之前或是已经向任一认证服务器发送了几次心跳请求之后,若机顶盒终端想要结束当前播放的频道/节目,则机顶盒终端可向任一认证服务器发送播放频道/节目的结束请求;该结束请求包括所述播放令牌;则收到该结束请求的认证服务器将该播放令牌中的请求时间更新为本次机顶盒终端发来结束请求的请求时间,随后跳至执行步骤S204,向自身的Kafka队列中写入更新了请求时间后的播放令牌中的信息,以便统计服务器根据该最新的播放令牌中的信息更新机顶盒终端的收看时长。
[0081]本实施例中,当用户收看结束收看关闭或转换频道时,机顶盒终端向任一认证服务器发送播放频道/节目的结束请求,认证服务器在接收到结束请求后将播放令牌中的请求时间更新后将播放令牌的信息写入到自身的Kafka队列中,使得统计服务器在统计收看时长时,只需监控每个认证服务器的Kafka队列中是否有更新数据,并在有更新数据时直接从Kafka队列中获取到用户收看该频道/节目的请求信息进行收看时长的统计,从而提高了统计服务器的工作效率。
[0082]在另一个实施例中,如图3所示,步骤S103可实施为以下步骤S301-S305:
[0083]步骤S301,统计服务器以本次读取的请求播放的频道/节目的标识为索引,在所有认证服务器的Kafka队列中按照记录写入时间逆序,查找包括该请求播放的频道/节目的标识且请求时间离本次读取的请求时间第N近的记录;其中,N的初始值为I。
[0084]S302,统计服务器解析本次读取的资源令牌以及查找到的记录中的资源令牌,判断二者是否对应同一个机顶盒终端;如果本次读取的资源令牌以及查找到的记录中的资源令牌不对应同一个机顶盒终端,则统计服务器执行步骤S303;若本次读取的资源令牌以及查找到的记录中的资源令牌对应同一个机顶盒终端,则执行步骤S304。
[0085]S303:令 N=N+1,随后返回执行 S301。
[0086]例如:若有2个认证服务器,第一个认证服务器的Kaf ka队列中存储有4条记录,第二个认证服务器的Kafka队列中存储有6条记录,若将这两个认证服务器的Kafka队列中记录的所有记录按照记录时间逆序排列,能够得到10条记录,S102中统计服务器本次读取的为这两个认证服务器的Kafka队列中最新记录的那条记录即排序后的第I条记录,S301中从排序后的10条记录的第2条记录开始,查找到包括第I条记录中请求播放的频道/节目的标识记录。若第2条记录中请求播放的频道/节目的标识与第I条记录中的一致,则解析第2条记录和第I条记录中的资源令牌,如果获知二者对应同一个机顶盒终端,则执行步骤S304;若第2条记录中请求播放的频道/节目的标识与第I条记录中的不一致,则执行S303,继续查找第3条记录,然后返回执行步骤S301,即查找包括第I条记录中请求播放的频道/节目的标识且请求时间离第I条记录中的请求时间第2近的记录;如此继续直到查找到的记录与第I条记录中请求播放的频道/节目的标识一致且二者对应同一个机顶盒终端为止,然后执行步骤S304。
[0087 ] 步骤S304,统计服务器计算本次读取的请求时间和查找到的记录中的请求时间之差的绝对值,随后执行S305。
[0088]步骤S305,统计服务器将本次读取的记录对应机顶盒终端收看所述请求播放的频道/节目的标识对应的频道/节目的收看时长更新为T=T+△ t,其中,τ为机顶盒终端的收看时长,初始值为O; △ t为本次读取的请求时间和查找到的记录中的请求时间之差的绝对值。
[0089]本实施例中,统计服务器在统计用户就某一个频道/节目的收看时长时,以本次读取的请求播放的频道/节目为索引,在所有认证服务器的Kafka队列中查找同一机顶盒终端发出的离本次读取请求最近的播放请求,然后进行播放时长的统计。在该过程中,由于统计服务器根据Kaf ka队列中记录的资源令牌中的信息进行查找,能够提高统计的准确率,并提高统计服务器的工作效率。
[0090]下面通过具体实施例来说明本发明实施例提供的收看时长统计方法。
[0091 ] 实施例一
[0092]图4为本发明实施例一中一种收看时长统计方法的流程图。如图4所示,包括以下步骤 S401-S416:
[0093]步骤S401:机顶盒终端向任一认证服务器发送播放频道/节目的初始请求。
[0094]步骤S402:收到该初始请求的认证服务器生成资源令牌和播放令牌。
[0095]步骤S403:收到该初始请求的认证服务器向机顶盒终端发送该资源令牌和播放令牌。
[0096]步骤S404:收到该初始请求的认证服务器向自身Kafka队列中写入播放令牌中的
?目息O
[0097]步骤S405:机顶盒终端每隔预设时长向任一认证服务器发送播放频道/节目的心跳请求;所述心跳请求包括所述播放令牌。
[0098]步骤S406:收到该心跳请求的认证服务器将播放令牌中的请求时间更新为本次机顶盒终端发来心跳请求的请求时间。
[0099]步骤S407:收到该心跳请求的认证服务器向自身Kafka队列中写入包含请求时间为心跳请求的请求时间的播放令牌中的信息。
[0100]在本实施例中,可以设置机顶盒终端每隔5分钟向认证服务器发送一次心跳请求,并且认证服务器每次收到心跳请求后,都依次执行步骤S406和S407的过程,将播放令牌中的请求时间及时更新,并将每次更新的播放令牌的信息写入到自身Kafka队列中。
[0101]步骤S408:机顶盒终端向任一认证服务器发送播放频道/节目的结束请求;所述结束请求包括所述播放令牌。
[0102]其中,机顶盒终端在需要结束观看当前播放的频道/节目时,就向认证服务器发送播放频道/节目的结束请求,显然,此步骤之前,步骤S405-S407为可选步骤,即机顶盒终端在发起初始请求后,可以不发起心跳请求就在下一次直接发起结束请求,也可以在发起初始请求后,发送N次心跳请求后再在需要结束播放时发起结束请求。
[0103]步骤S409:收到该结束请求的认证服务器将播放令牌中的请求时间更新为本次机顶盒终端发来结束请求的请求时间。
[0?04] 步骤S410:收到该结束请求的认证服务器向自身Kafka队列中写入包含请求时间为结束请求的请求时间的播放令牌中的信息。
[0105]步骤S411:统计服务器从所有认证服务器的Kafka队列中读取最新记录的播放令牌中的信息。
[0106]步骤S412:统计服务器以本次读取的请求播放的频道/节目的标识为索引,在所有认证服务器的Kafka队列中按照记录写入时间逆序,查找包括该请求播放的频道/节目的标识且请求时间离本次读取的请求时间第N近的记录;其中,N的初始值为I。
[0107]步骤S413:统计服务器解析本次读取的资源令牌以及查找到的记录中的资源令牌,判断二者是否对应同一个机顶盒终端;若是,则执行S415;否则,执行S414。.
[0108]此步骤中,如果本次读取的资源令牌以及查找到的记录中的资源令牌不对应同一个机顶盒终端,则统计服务器执行步骤S414,然后返回执行步骤S412。即查找包括该标识且请求时间离本次读取的请求时间第N+1近的记录。若本次读取的资源令牌以及查找到的记录中的资源令牌对应同一个机顶盒终端,则执行步骤S415。
[0109]步骤S414:令N=N+1,随后返回执行S412。
[0110]步骤S415:统计服务器计算本次读取的请求时间和查找到的记录中的请求时间之差的绝对值,随后执行S416。
[0111]步骤S416:统计服务器将本次读取的记录对应机顶盒终端收看所述请求播放的频道/节目的标识对应的频道/节目的收看时长更新为T=T+△ t,其中,τ为机顶盒终端的收看时长,初始值为O ; △ t为S415中计算得到的本次读取的请求时间和查找到的记录中的请求时间之差的绝对值。
[0112]显然,本实施例中,步骤S404/步骤S407执行完后,统计服务器可以执行步骤S411,以对相应机顶盒终端的收看时长进行统计,由于该实施例中描述的机顶盒终端是同一个,所以直接在步骤S410之后,即机顶盒终端结束播放之后再计算其统计时长也是可以的。
[0113]本实施例中,用户在收看频道/节目时,向任一个认证服务器发送的请求包括初始请求、心跳请求和结束请求,在对收看时长进行统计时,统计服务器从所有认证服务器的Kafka队列中获取每一条请求信息的播放令牌,根据该播放令牌中的信息进行收看时长的统计,并及时更新机顶盒终端的收看时长。统计简单,效率高。
[0114]对应于上述实施例提供的一种收看时长统计方法,本发明实施例还提供一种收看时长统计系统,如图5所示,包括:认证服务器51和统计服务器52;
[0115]其中,认证服务器51用于向自身Kafka队列中写入播放令牌中的信息;该播放令牌中的信息包括资源令牌、请求播放的频道/节目的标识、请求时间;所述资源令牌记录有机顶盒终端信息。
[0116]统计服务器52用于从所有认证服务器51的Kafka队列中读取最新记录的播放令牌中的信息;并根据读取的播放令牌中的信息,更新对应机顶盒终端的收看时长。
[0117]图6为本发明实施例中另一种收看时长统计系统的结构框图。如图6所示,本实施在图5所示的系统的基础上,认证服务器51具体包括:接收模块511、生成模块512、存储模块513、发送模块514。图6中为方便表示,只画了一个认证服务器51,值得说明的是,该收看时长统计系统中,认证服务器51可以为多个。其中:
[0118]接收模块51丨,用于接收机顶盒终端发来的播放频道/节目的初始请求并发送给生成模块512。
[0119]生成模块512,用于根据初始请求生成资源令牌和播放令牌,并将播放令牌发送给存储模块513,将资源令牌和播放令牌发送给发送模块514。
[0120]存储模块513,用于将收到的播放令牌中的信息写入Kafka队列。
[0121]发送模块514,用于向机顶盒终端发送收到的资源令牌和播放令牌。
[0122]在又一个实施例中,接收模块511,还用于接收机顶盒终端发来的播放频道/节目的心跳请求并发送给生成模块512,该心跳请求包括播放令牌。
[0123]生成模块512,还用于根据收到的心跳请求,将该心跳请求中的播放令牌中的请求时间更新为本次机顶盒终端发来心跳请求的请求时间,得到更新后的播放令牌并发送给存储模块513。
[0124]在另一个实施例中,接收模块511,还用于接收机顶盒终端发来的播放频道/节目的结束请求并发送给生成模块512,该节目请求包括该播放令牌。
[0125]生成模块512,还用于根据收到的结束请求,将该结束请求中的播放令牌中的请求时间更新为本次机顶盒终端发来结束请求的请求时间,得到更新后的播放令牌并发送给存储模块513。
[0126]图7为本发明实施例中又一种收看时长统计系统的结构框图。如图7所示,本实施在图5所示的系统的基础上,统计服务器52具体包括:
[0127]监控读取模块521,用于在监控到任一认证服务器51向自身Kafka队列中写入播放令牌中的信息时,从该认证服务器51的Kafka队列中读取最新记录的播放令牌中的信息,并向查找模块522发送查找指令。
[0128]查找模块522,用于根据查找指令,以本次监控读取模块521读取的请求播放的频道/节目的标识为索引,在所有认证服务器51的Kafka队列中按照记录写入时间逆序,查找包括所述请求播放的频道/节目的标识的且请求时间离本次读取的请求时间第N近记录,所述N的初始值为I。
[0129]解析判断模块523,用于解析本次监控读取模块521读取的资源令牌以及查找模块522查找到的记录中的资源令牌,判断二者是否对应同一个机顶盒终端,若二者不对应同一个机顶盒终端,则令N=N+1后向查找模块522发送包括最新N值的查找指令;若二者对应同一个机顶盒终端,则向计算模块524发送计算指令。
[0130]计算模块524,用于根据计算指令,计算本次监控读取模块521读取的请求时间和查找模块522查找到的记录中的请求时间之差的绝对值,并将本次监控读取模块521读取的记录对应机顶盒终端收看该请求播放的频道/节目的标识对应的频道/节目的收看时长更新为Τ = Τ+Δ t;其中,T为机顶盒终端的收看时长,初始值为O; Δ t为本次监控读取模块521读取的请求时间和查找模块522查找到的记录中的请求时间之差的绝对值。
[0131]在本实施例的收看时长统计系统中,认证服务器可以有多个,即机顶盒终端发送的不同请求可能被不同的认证服务器接收并处理,由于每个认证服务器均将生成的数据发送自身Kafka队列中,因此统计服务器在统计收看时长时,统计服务器只需要从每个认证服务器的Kafka队列中获取对应的数据,并根据获取的数据即可统计收看时长并对机顶盒进行数据更新,不仅减小了认证服务器的负载,而且能够统计机顶盒终端的收看时长,统计简单,效率高。
[0132]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0133]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0134]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0135]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0136]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种收看时长统计方法,其特征在于,包括:认证服务器向自身卡夫卡Kafka队列中写入播放令牌中的信息;所述播放令牌中的信 息包括资源令牌、请求播放的频道/节目的标识、请求时间;所述资源令牌记录有机顶盒终 端信息;统计服务器从所有认证服务器的Kafka队列中读取最新记录的播放令牌中的信息;统计服务器根据读取的播放令牌中的信息,更新对应机顶盒终端的收看时长。2.如权利要求1所述的收看时长统计方法,其特征在于,所述认证服务器向自身卡夫卡 Kafka队列中写入播放令牌中的信息之前,还包括:机顶盒终端向任一认证服务器发送播放频道/节目的初始请求;收到所述初始请求的认证服务器生成资源令牌和播放令牌;所述认证服务器向自身卡夫卡Kafka队列中写入播放令牌中的信息,还包括:收到所述初始请求的认证服务器向所述机顶盒终端发送所述资源令牌和播放令牌。3.如权利要求2所述的收看时长统计方法,其特征在于,所述机顶盒终端向任一认证服 务器发送播放频道/节目的初始请求之后,还包括:所述机顶盒终端每隔预设时长向任一认证服务器发送播放频道/节目的心跳请求;所 述心跳请求包括所述播放令牌;收到所述心跳请求的认证服务器将所述播放令牌中的请求时间更新为本次机顶盒终 端发来心跳请求的请求时间,随后跳至执行向自身卡夫卡Kafka队列中写入播放令牌中的 信息的步骤。4.如权利要求2或3所述的收看时长统计方法,其特征在于,所述机顶盒终端向任一认 证服务器发送播放频道/节目的初始请求之后,还包括:所述机顶盒终端向任一认证服务器发送播放频道/节目的结束请求;所述结束请求包 括所述播放令牌;收到所述结束请求的认证服务器将所述播放令牌中的请求时间更新为本次机顶盒终 端发来结束请求的请求时间,随后跳至执行向自身卡夫卡Kafka队列中写入播放令牌中的 信息的步骤。5.如权利要求1所述的收看时长统计方法,其特征在于,所述统计服务器根据读取的播 放令牌中的信息,更新对应机顶盒终端的收看时长,包括:S301:统计服务器以本次读取的请求播放的频道/节目的标识为索引,在所有认证服务 器的Kafka队列中按照记录写入时间逆序,查找包括所述请求播放的频道/节目的标识且请 求时间离本次读取的请求时间第N近的记录;所述N的初始值为1;S302:统计服务器解析本次读取的资源令牌以及查找到的记录中的资源令牌,判断二 者是否对应同一个机顶盒终端;若是,则执行S304;否则,执行S303;S303:令N=N+1,随后返回执行S301;S304:统计服务器计算本次读取的请求时间和查找到的记录中的请求时间之差的绝对 值,随后执行S305;S305:统计服务器将本次读取的记录对应机顶盒终端收看所述请求播放的频道/节目 的标识对应的频道/节目的收看时长更新为T = T+A t;其中,T为机顶盒终端的收看时长,初 始值为〇; △ t为本次读取的请求时间和查找到的记录中的请求时间之差的绝对值。6.—种收看时长统计系统,其特征在于,包括:认证服务器,用于向自身卡夫卡Kafka队列中写入播放令牌中的信息;所述播放令牌中 的信息包括资源令牌、请求播放的频道/节目的标识、请求时间;所述资源令牌记录有机顶 盒终端信息;统计服务器,用于从所有认证服务器的Kafka队列中读取最新记录的播放令牌中的信 息;并根据读取的播放令牌中的信息,更新对应机顶盒终端的收看时长。7.如权利要求6所述的收看时长统计系统,其特征在于,所述认证服务器包括:接收模块,用于接收机顶盒终端发来的播放频道/节目的初始请求并发送给生成模块;生成模块,用于根据所述初始请求生成资源令牌和播放令牌,并将所述播放令牌发送 给存储模块,将所述资源令牌和播放令牌发送给发送模块;存储模块,用于将收到的播放令牌中的信息写入Kafka队列;发送模块,用于向所述机顶盒终端发送收到的资源令牌和播放令牌。8.如权利要求7所述的收看时长统计系统,其特征在于,所述接收模块,还用于接收机顶盒终端发来的播放频道/节目的心跳请求并发送给所 述生成模块;所述心跳请求包括所述播放令牌;所述生成模块,还用于根据收到的心跳请求,将所述心跳请求中的播放令牌中的请求 时间更新为本次机顶盒终端发来心跳请求的请求时间,得到更新后的播放令牌并发送给所 述存储模块。9.如权利要求7或8所述的收看时长统计系统,其特征在于,所述接收模块,还用于接收机顶盒终端发来的播放频道/节目的结束请求并发送给所 述生成模块;所述结束请求包括所述播放令牌;所述生成模块,还用于根据收到的结束请求,将所述结束请求中的播放令牌中的请求 时间更新为本次机顶盒终端发来结束请求的请求时间,得到更新后的播放令牌并发送给所 述存储模块。10.如权利要求6所述的收看时长统计系统,其特征在于,所述统计服务器包括:监控读取模块,用于在监控到任一认证服务器向自身Kafka队列中写入播放令牌中的信息时,从该认证服务器的Kafka队列中读取最新记录的播放令牌中的信息,并向查找模块 发送查找指令;查找模块,用于根据所述查找指令,以本次所述监控读取模块读取的请求播放的频道/ 节目的标识为索引,在所有认证服务器的Kafka队列中按照记录写入时间逆序,查找包括所 述请求播放的频道/节目的标识且请求时间离本次读取的请求时间第N近的记录;所述N的 初始值为1;解析判断模块,用于解析本次所述监控读取模块读取的资源令牌以及所述查找模块查 找到的记录中的资源令牌,判断二者是否对应同一个机顶盒终端,若二者不对应同一个机 顶盒终端,则令N=N+1后向所述查找模块发送包括最新N值的查找指令;若二者对应同一个 机顶盒终端,则向计算模块发送计算指令;计算模块,用于根据所述计算指令,计算本次所述监控读取模块读取的请求时间和所 述查找模块查找到的记录中的请求时间之差的绝对值,并将本次所述监控读取模块读取的 记录对应机顶盒终端收看所述请求播放的频道/节目的标识对应的频道/节目的收看时长更新为T = T+A t;其中,T为机顶盒终端的收看时长,初始值为0; A t为本次所述监控读取模 块读取的请求时间和所述查找模块查找到的记录中的请求时间之差的绝对值。
【文档编号】H04N21/258GK105979297SQ201610417460
【公开日】2016年9月28日
【申请日】2016年6月14日
【发明人】郭建辉
【申请人】天脉聚源(北京)传媒科技有限公司