传输用于实现网络卡拉ok的数据的方法、系统和客户端的制作方法

xiaoxiao2020-9-10  8

专利名称:传输用于实现网络卡拉ok的数据的方法、系统和客户端的制作方法
技术领域
本发明涉及网络应用技术领域,尤其涉及一种传输用于实现网络卡拉 OK的数据的方法、系统和装置。
背景技术
卡拉OK是一种广为流行的大众娱乐方式。人们通常选择固定的卡拉 OK歌厅,集中在包厢或大厅内,通过VCD、 DVD或局域网等形式伴奏唱歌。
如今,随着互联网的快速发展,网络卡拉OK应运而生,它通过互联网 通信技术,使得分散在各个地方的网友可以协同唱歌娱乐。具体来说,网络 卡拉OK系统通过点对点(P2P)网络通信技术来实现卡拉OK视频和音频 数据的传送。
下面,首先对P2P网络通信技术进行介绍。
P2P网络通信技术是客户/服务器(Client/Server, C/S )模式网络通信技 术的重要补充,目前在互联网上的应用日益广泛。与C/S网络不同,P2P网 络是一种分布式网络。P2P网络中的用户共享彼此的计算机所拥有的部分资 源,例如共享彼此计算机的处理能力、存储能力、网络连接能力、打印机和 文件等。这些共享资源能够通过P2P网络直接被P2P网络中的其他用户访 问而无需经过中间实体,这也是P2P网络名称的由来。P2P网络中的每个用 户既可以是网络资源的提供者(Server),还可以是网络资源的获取者 (Client),因此,P2P网络的各个用户之间是对等的关系。P2P网络通信技 术充分利用了网络边缘的大量计算机资源,即充分利用了分散在各个网络用 户中的存储空间、CPU时间、信息内容等多种网络资源,从而有效降低了集中式服务器的负载,提高了网络服务的可用性。
P2P网络通信技术的一个重要应用是传输视频流媒体文件,这样的P2P 网络系统可以简称为P2P视频系统。P2P视频系统通常包括索引服务器、种 子服务器和网络用户客户端,其中的索引服务器用于维护种子索引,即用于 维护网络中的资源与在线网络用户的映射关系,种子服务器用于向网络用户 提供视频内容,在线网络用户可以从种子服务器中获取视频内容,当其获取
在线网络用户正是P2P数据传输的参与者和受益者。
按照视频流媒体传输模式的不同,P2P视频系统可以分为P2P直播系统 和P2P点播系统两大类,下面分别予以介绍。
P 2 P直播系统采用的是高可扩展性和高可靠性的网状多播协议。P 2 P直 播系统包括用于产生视频流媒体的节目源服务器、种子服务器、索引服务器 和网络用户客户端。节目源服务器用于向种子服务器输出视频流媒体文件。 网络用户在进行直播操作时,首先向索引服务器请求种子信息,根据索引服 务器返回的种子信息,向相关种子请求视频流媒体文件。其中,网络用户向 索引服务器发送的请求信息中携带有请求观看的直播节目的频道信息,索引 服务器返回的种子信息中包括种子服务器的信息和当前正在观看该频道节 目的在线网络用户信息,当网络用户请求直播内容成功后,该网络用户也可 以成为种子,向其他网络用户提供该视频流媒体文件。
P2P直播系统向用户提供的是一种类似于电视的等待观看服务模式。与 P2P直播系统不同,P2P点播系统提供的是一种随意拖动观看的点播体验。
P2P点播系统包括内容服务器、种子服务器、索引服务器和网络用户。 P2P点播系统的交互模式如下网络用户在获取点播服务时,首先向索引服 务器请求种子信息,根据索引服务器返回的种子信息,向相关种子请求视频 流媒体文件。其中,索引服务器返回的种子信息中包括种子服务器的信息和 存储有该视频流媒体文件的在线网络用户信息,当网络用户请求直播内容成 功后,该网络用户也可以成为种子,向其他网络用户提供该视频流媒体文件。可见P2P直播系统和P2P点播系统的不同在于,P2P点播系统中,只有 种子服务器和观看同一频道内容的网络用户之间才能相互提供服务,而在
P2P点播系统中,只要网络用户的计算机中存储有相应的视频流媒体文件, 无论该网络用户是否正在观看该视频流媒体文件,其都可以向其他P2P网络 用户提供服务。相应地,在P2P直播系统中,网络用户向索引服务器发送的 请求消息中需要携带频道标识等频道信息,而在P2P点播系统中,网络用户 向索引服务器发送的请求消息中需要携带请求的视频流媒体文件标识。 目前的网络卡拉OK系统釆用的是P2P直播系统来实现的。 图l是现有技术中采用P2P直播系统实现的网络卡拉OK点唱系统组成 示意图。
如图l所示,该系统包括作为歌唱者的网络用户所在的客户端(下文 简称歌唱者客户端)101、作为收听者的网络用户所在的客户端(下文简称 听众客户端)102、应用服务器103和索引服务器104。
应用服务器103,用于主动或者才艮据客户端请求创建网络卡拉OK包房; 维护每个网络卡拉OK包房内的排麦操作;根据客户端请求或者该应用服务器 103自身的设置添加和/或删除网络卡拉OK包房内的网络用户;接收歌唱者客 户端101发送的文件信息更新数据包,根据该文件信息更新数据包展示当前包 房内的网络用户列表和网络卡拉OK文件;接收听众客户端302请求包房信息 的消息,向该听众客户端302返回该包房的文件信息更新数据包。
其中,网络卡拉OK文件由歌唱者客户端101上报给应用服务器103,所 述文件信息更新数据包中携带有歌唱者网络用户的标识和网络卡拉OK文件的 凄t据包标识。
歌唱者客户端101,用于实时采集网络用户的歌声和当前正在播放的 MTV视频文件,打包形成网络卡拉OK文件数据包,向应用服务器103上 传该网络卡拉OK文件数据包以及文件信息更新数据包,向索引服务器104 上报网络卡拉OK文件信息。
听众客户端102,用于向索引服务器104发送获取网络卡拉OK文件的请求消息,接收索引服务器104返回的网络卡拉OK文件种子列表,即peer 信息列表,该peer信息列表中列出了能够作为种子提供网络卡拉OK丈件的 网络用户的标识信息,这些网络用户与当前请求网络卡拉OK文件的网络用 户在同一个网络卡4立OK包房内。
听众客户端102,从peer信息列表中选择种子,向选择的种子发送获取 网络卡拉OK文件的请求消息,接收该种子返回的网络卡拉OK文件数据包 并播放该数据包;向索引服务器104上报听众客户端102内存储的网络卡拉 OK文件信息。
索引服务器104,接收歌唱者客户端101和听众客户端102上报的网络 卡拉OK文件信息,维护网络卡拉OK文件种子列表,根据听众客户端102 的请求返回网络卡拉OK文件种子列表。
由上述技术方案可见,现有通过P2P直播系统实现的网络卡拉OK点唱 系统中,歌唱者客户端101采集歌唱者的歌声和当前播放的MTV视频文件, 将采集到的音频数据和视频数据一 同打包成网络卡拉OK文件数据包发给应 用服务器103、以及本包房内的听众客户端102。由于网络卡拉OK文件中 含有大量的视频数据,传输视频数据所占用的带宽较大,因此,现有的网络 卡拉OK系统中歌唱者客户端101传输网络卡拉OK文件耗费的带宽资源较 大,而且,由于听众客户端只能从与其在同一网络卡拉OK包房的歌唱者客 户端和其他听众客户端处获取网络卡拉OK文件,因此,能够提供网络卡拉 OK文件的网络资源较少。

发明内容
有鉴于此,本发明实施例的目的在于提供一种传输用于实现网络卡拉 OK的数据的方法、系统和装置,以节省传输用于实现网络卡拉OK的数据 所需的传输带宽,并提高对网络资源的利用率。
为达到上述目的,本发明实施例的技术方案具体是这样实现的 一种传输用于实现网络卡拉OK的数据的方法,所述用于实现网络卡拉
9OK的数据包括歌唱流和伴唱文件,该方法包括
歌唱者客户端采集歌声形成歌唱流,向网络侧上报歌唱流信息和伴唱文件
4吕息5
网络侧根据接收的歌唱流信息以点对点P2P直播方式向听众客户端下发歌 唱流、根据接收的伴唱文件信息以P2P点播方式向听众客户端下发伴唱文件。
一种传输用于实现网络卡拉OK的数据的系统,该系统包括歌唱者客户端、 网络侧和听众客户端;
所述歌唱者客户端,采集歌声形成歌唱流,向网络侧上报歌唱流信息和伴 唱文件信息;
所述网络侧,根据接收的歌唱流信息以点对点P2P直播方式向听众客户端 下发歌唱流、根据接收的伴唱文件信息以P2P点播方式向听众客户端下发伴唱 文件;
所述听众客户端,接收歌唱流和伴唱文件。 一种客户端,包括歌唱模块和收听模块;
所述歌唱模块,采集歌声形成歌唱流,向网络侧上报歌唱流信息和伴唱文 件信息;
所述收听模块,以P2P直播方式从网络侧获取歌唱流,以P2P点播方式从 网络侧获取伴唱文件。
由上述技术方案可见,本发明在传输用于实现网络卡拉OK的数据时,将 用于实现网络卡拉OK的数据划分为歌唱流和伴唱文件两部分分别传输,其中, 网络侧以P2P直播方式下发歌唱流,以P2P点播方式下发伴唱文件,这样,由 现有的P2P直播方式和P2P点播方式可知,听众客户端获取歌唱流和伴唱文件 时,歌唱者客户端以及其他存储有该歌唱流的听众客户端只需要通过P2P直播 方式向所述听众客户端传输歌唱流,而伴唱文件则可以通过P2P点播方式从当 前存储有所述伴唱文件的所有内容服务器和在线客户端中获得。由于歌唱者客 户端以及其他存储有该歌唱流的听众客户端只需要通过P2P直播方式向所述听 众客户端传输歌唱流,该歌唱流是音频文件,与现有技术中含有大量视频数据
10的网络卡拉OK文件相比,其所需的传输带宽大大减小,因此,能够节省传输 带宽,另一方面,由于伴唱文件不仅可以从当前包房的歌唱者客户端和听众客 户端获取,还可以从其他存储有该伴唱文件的内容服务器和在线客户端中获取, 能够提供该伴唱文件的网络资源很丰富,因此,提高了网络资源的利用率。


图l是现有技术中采用P2P直播系统实现的网络卡拉OK点唱系统组成
示意图。
图2是本发明传输用于实现网络卡拉OK的数据的方法流程图。 图3是本发明的网络卡拉OK系统组成示意图。 图4是网络卡拉OK系统传输歌唱流和伴唱文件的方法流程图。 图5是本发明歌唱者客户端301侧生成并分发携带有时间戳的歌唱流的流 程示意图。
图6是本发明听众客户端302侧根据歌唱流中记录时间戳控制歌唱流和伴 唱文件播放进度的流程示意图。
图7是本发明提供的客户端实施例结构图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举 实施例,对本发明进一步详细说明。
本发明在传输用于实现网络卡拉OK的数据时,首先将用于实现网络卡拉 OK的数据分为歌唱流和伴唱文件两部分,并对这两部分文件分别以不同的方 式独立传输,即,以P2P直播方式传输歌唱流,以P2P点播方式传输伴唱文件, 由于单独传输歌唱流占用的带宽和单独传输伴唱文件占用的带宽均小于传输由 歌声和当前伴唱文件共同形成的网络卡拉OK文件的带宽,因此能够节省网络 带宽,由于伴唱文件是以P2P点播方式传输的,因此,能够提供该伴唱文件的 网络资源不仅包括当前网络卡拉OK包房内的歌唱者客户端和听众客户端,还包括其他存储有该伴唱文件的内容服务器和在线客户端,从而提高了网络资源 利用率。
图2是本发明传输用于实现网络卡拉OK的数据的方法流程图,如图2所 示,该方法包4舌
步骤201,歌唱者客户端采集歌声形成歌唱流并緩存。
本步骤中,歌唱者客户端通过麦克风等音频设备采集歌唱者的歌声,形成 歌唱流。该歌声文件由多个歌声文件数据包组成,每个数据包都有相应的数据 包序列号,表示采集歌声形成各个数据包的先后顺序。
该歌唱流是音频文件,占用的存储空间较小,在传输时占用的带宽也较小。
本步骤中緩存歌唱流的时间可以根据网络卡拉OK系统的性能要求而定, 如果需要较高的实时性和较小的存储空间,则该緩存时间可以设置的较小,反 之可以设置的较长。
步骤202,歌唱者客户端向网络侧上报歌唱流信息和伴唱文件信息。
本步骤中,歌唱者客户端向网络侧上报的歌唱流信息包括歌唱者客户端标 识、当前演唱的歌曲标识和演唱进度标识;伴唱文件信息包括伴唱文件标识。
步骤203,网络侧根据接收的歌唱流信息以P2P直播方式向听众客户端下 发歌唱流、根据接收的伴唱文件信息以P2P点播方式向听众客户端下发伴唱文 件。
下面结合具体的网络卡拉OK系统说明本发明传输用于实现网络卡拉OK 的数据的方法。
图3是本发明的网络卡拉OK系统组成示意图。
如图3所示,该系统包括歌唱者客户端301、听众客户端302、应用服务器 303、索引服务器304、内容服务器305、中转服务器306和其他存储有伴唱文 件的在线客户端307,并且该系统的上述组成部分以P2P方式实现网络互联。 对于任一需要获取歌唱流和/或伴唱文件的上述组成部分而言,其网络侧包括该 网络卡拉OK系统中所有的其他组成部分。例如,如果某一听众客户端302需 要获取伴唱文件,则其网络侧包括除该听众客户端302以外的听众客户端302、歌唱者客户端301、应用服务器303、索引服务器304、内容服务器305、中转 服务器306和其他存储有伴唱文件的在线客户端307,该网络侧用于以P2P点 播方式为其下发伴唱文件。
图3中的歌唱者客户端301和听众客户端302是从客户端当前充当的角色 角度为其命名的,实际上,网络卡拉OK包房内的每个客户端都既具备歌唱者 客户端301的结构,又具备听众客户端302的结构。
下面,首先从传输网络卡拉OK文件的流程出发,对图3所示的网络卡拉 OK系统传输歌唱流和伴唱文件的方法进行介绍。
其中,图3所示网络卡拉OK系统是由应用服务器303主动或者根据客户 端请求创建的,应用服务器303用于对网络卡拉OK系统进行逻辑控制,例如, 进行排麦处理、处理网络用户加入或者退出网络卡拉OK包房的请求等,所述 排麦是指由网络卡拉OK系统中的各个客户端轮流拥有演唱权或者说网络卡拉 OK包房控制权。
图4是网络卡拉OK系统传输歌唱流和伴唱文件的方法流程图,如图4所 示,该方法包4舌
步骤401,歌唱者客户端301实时采集歌声文件并緩存,并向应用服务器 303发送歌唱流更新数据包,向索引服务器304上报歌唱流信息和伴唱文件信 息。
本步骤中,歌唱者客户端301使用的伴唱文件可以是自己制作的伴唱文件 也可以是现有的MTV文件等音频文件或视频文件。
歌唱者客户端301通过图3中的消息0向索引服务器304上报歌唱流信息 和伴唱文件信息。
步骤402,听众客户端302从应用服务器303获取歌唱流更新数据包。 本步骤中的歌唱流数据包中携带了歌唱者客户端301标识、歌唱曲目标识、
歌唱流数据包序列号和伴唱文件标识、伴唱文件数据包序列号。
步骤403,听众客户端302根据从应用服务器303获取的歌唱流更新数据
包,向索引服务器304发送获取歌唱流种子列表和伴唱文件种子列表的请求消息,即图3中的请求消息1。
本步骤中,当歌唱流种子列表和伴唱文件种子列表维护在同 一个索引服务
器304上时,获取歌唱流种子列表和伴唱文件种子列表的请求消息1是一条请 求消息;当歌唱流种子列表和伴唱文件种子列表维护在不同的索引服务器304 上时,获取歌唱流种子列表和伴唱文件种子列表的请求消息1是两条请求消息, 其中,获取歌唱流种子列表的请求消息发往维护歌唱流种子列表的第一索引服 务器304,获取伴唱文件种子列表的请求消息发往维护伴唱文件种子列表的第 二索引服务器304。
步骤404,索引服务器304通过图3中的消息2向听众客户端302返回歌 唱流种子列表和伴唱文件种子列表。
索引服务器304根据歌唱者客户端301和听众客户端302上报的歌唱流信 息维护有P2P歌唱流直播列表,根据歌唱者客户端301、听众客户端302、内 容服务器305以及其他在线客户端307上报的伴唱文件信息维护有P2P伴唱文 件点播列表。其中的歌唱流种子列表可以是P2P歌唱流直播列表的一部分或者 全部,伴唱文件种子列表也可以是P2P伴唱文件直播列表的一部分或者全部。
步骤405,听众客户端302从歌唱流种子列表中选择种子获取歌唱流,从 伴唱文件种子列表中选择种子获取伴唱文件。
歌唱流种子列表中的种子是当前网络卡拉OK包房内的歌唱者客户端301 和/或听众客户端302,歌唱流种子列表中的种子除了包括当前网络卡拉OK包 房内的歌唱者客户端301和/或听众客户端302外,还可以包括内容服务器305 和/或其他在线客户端307。
本步骤中,听众客户端302从歌唱流种子列表中选择种子,通过图3中的 消息3a向选择的种子发送获取歌唱流信息的请求,相应种子通过图3中的消息 4a向听众客户端302返回歌唱流;听众客户端302从伴唱文件种子列表中选择 种子,通过图3中的消息3b向选择的种子发送获取伴唱文件信息的请求,相应 种子通过图3中的消息4b向听众客户端302返回伴唱文件。
其中,消息3a中携带有歌唱者客户端301标识、歌唱曲目标识和歌唱流数据包片段标识,消息3b中携带有伴唱文件标识和伴唱文件数据包片段标识。
下面,从网络卡拉OK系统各个组成部分的具体组成结构及功能角度出发, 结合图3所示系统及其传输歌唱流和伴唱文件的方法予以说明
应用服务器303,用于主动或者根据客户端请求创建网络卡拉OK包房, 维护每个网络卡拉OK包房内的排麦操作,根据客户端请求或者该应用服务器 303自身的设置进行添加和/或删除网络卡拉OK包房内的网络用户的操作,接 收歌唱者客户端301发送的网络卡拉OK文件信息更新数据包,接收听众客户 端302请求包房信息的消息,向该听众客户端302返回该包房的网络卡拉OK 文件信息更新^:据包。
其中,所述的网络卡拉OK文件信息更新数据包中携带有歌唱者客户端301 的标识、当前伴唱文件的标识、歌唱流数据包序列号信息和伴唱文件数据包序 列号信息。
发送所述网络卡拉OK文件信息更新数据包的时机包括:歌唱者客户端301 得到排麦指示、即获得演唱权或者说网络卡拉OK包房控制权时,以及获得网 络卡拉OK包房控制权的歌唱者客户端301进行定时发送所述网络卡拉OK文 件信息更新数据包的周期已到时。所述定时发送所述网络卡拉OK文件信息更 新数据包的周期可以设置为ls左右,从而保证听众客户端302根据从应用服务 器301处获得的网络卡拉OK文件信息更新数据包观看网络卡拉OK的实时性。
听众客户端302,用于向应用服务器303发送请求包房信息的消息,接收 应用服务器303返回的网络卡拉OK文件信息更新数据包,根据该更新数据包 中携带的歌唱者网络用户标识、当前伴唱文件的标识、歌唱流数据包序列号信 息和伴唱文件数据包序列号信息向索引服务器304发送荻取卡拉OK歌唱流的 请求消息,该请求消息可以是一条携带有歌唱者网络用户标识、当前伴唱文件 的标识、歌唱流数据包序列号信息和伴唱文件数据包序列号信息的请求消息, 也可以是两条请求消息,其中 一条是携带有歌唱者网络用户标识和歌唱流数据 包序列号信息的歌唱流种子列表请求消息,另 一条是携带有当前伴唱文件的标 识和伴唱文件数据包序列号信息的伴唱文件种子列表请求消息。听众客户端
15302接收索引服务器305下发的歌唱流种子列表和伴唱文件种子列表,从所述歌唱流种子列表中选取歌唱流种子获取歌唱流,从所述伴唱文件种子列表中选取伴唱文件种子获取伴唱文件。
歌唱者客户端301,实时采集歌声形成歌声文件并緩存该歌声文件,向应用服务器303上报歌唱流更新数据包,向索引服务器304上报歌唱流信息。
索引服务器304,接收歌唱流信息,维护所述歌唱流信息对应的歌唱流P2P直播列表,接收伴唱文件信息,维护与所述伴唱文件信息对应的伴唱文件P2P点播列表;接收听众客户端302获取卡拉OK歌唱流信息的请求消息,根据所述歌唱流P2P直播列表向听众客户端302返回歌唱流种子列表、根据所述伴唱文件P2P点播列表向听众客户端302返回伴唱文件种子列表。
索引服务器304根据歌唱流信息维护歌唱流P2P直播列表的具体方法包括索引服务器304接收客户端上报的歌唱流信息,将存储有与该歌唱流信息的客户端标识写入所述歌唱流P2P直播列表,其中,上报歌唱流信息的客户端包括卡拉OK包房内的歌唱者客户端301和听众客户端302。
索引服务器304根据伴唱文件信息维护伴唱文件P2P点播列表的具体方法包括索引服务器304接收网络卡拉OK包房内的歌唱者客户端301的伴唱文件信息,获取存储有与该伴唱文件信息对应的伴唱文件的内容服务器305的地址和在线客户端地址,其中,所述的在线客户端包括本网络卡拉OK包房内的
歌唱者客户端301和听众客户端302以及本网络卡拉OK包房以外的在线客户
二山祸。
其中,可以在一个索引服务器304上维护歌唱流P2P直播列表和伴唱文件P2P点播列表,并接收听众客户端302获取歌唱流信息的请求消息,返回相应的歌唱流种子列表和伴唱文件种子列表;也可以在两个索引服务器304上分别维护歌唱流P2P直播列表和伴唱文件P2P点播列表,听众客户端302向维护有歌唱流P2P直播列表的第一索引服务器发送获取歌唱流种子列表的请求消息,向维护有歌唱流P2P点播列表的第二索引服务器发送获取伴唱文件种子列表的请求消息,第一索引服务器向听众客户端302返回歌唱流种子列表,第二索引服务器向听众客户端302返回伴唱文件种子列表。
为了保证能够尽量同步获得歌唱流和伴唱文件,优选地,听众客户端302 同步向第 一 索引服务器发送获取歌唱流种子列表的请求消息、向第二索引服务 器发送获取伴唱文件种子列表的请求消息。
听众客户端302,从索引服务器返回的歌唱流种子列表中选择歌唱流种子 获取歌唱流,从索引服务器返回的伴唱文件种子列表中选择伴唱文件种子获取 伴唱文件。
其中,歌唱流种子列表中的歌唱流种子是网络卡拉OK包房内的歌唱者客 户端和/或听众客户端,伴唱文件种子列表中的伴唱文件种子可以是存储有相应 伴唱文件的在线客户端,也可以是存储有该伴唱文件的内容服务器305。其中, 内容服务器305可以是单独布置的服务器,也可以是现有的H丁TP服务器等。
在图3所示系统中设置中转服务器306是为了进一步提高听众客户端302 获取歌唱流的速度,因此,中转服务器306在图3所示系统中并非必需。
歌唱者客户端301将歌唱流上传至中转服务器306,中转服务器306向索 引服务器304上报自身存储的歌唱流信息,索引服务器304根据中转服务器306 上报的歌唱流信息,将中转服务器306写入相应的歌唱流P2P直播列表中,贝'J, 索引服务器304根据歌唱流P2P直播列表形成歌唱流种子列表并将该歌唱流种 子列表下发给听众客户端302后,听众客户端302即可选择该中转服务器306 作为种子从中下载歌唱流。
通过设置中转服务器306,可以提高传输歌唱流的速度。其中,中转服务 器306可以只设置为一个,也可以设置为多个,当设置为多个时,各个中转服 务器306之间以内网互联,这样可以进一步提高传输歌唱流的速度。
由于网络卡拉OK中听众收听的歌声质量对用户体验的影响较大,为了进 一步提高图3所示系统传输歌唱流的质量,本发明提出,在获取歌唱流时,不 从歌唱者客户端301获取伴唱文件,而从内容服务器305或者歌唱者客户端301 以外的其他客户端获取所述伴唱文件,从而保证歌唱者客户端301所拥有的网 络带宽可以尽量多地用来传输歌唱流。
17具体地,可以从网络侧实现不从歌唱者客户端301获取伴唱文件,也可以
从客户端侧实现不从歌唱者客户端301获取伴唱文件。
当从网络侧实现不从歌唱者客户端301获取伴唱文件时,索引服务器305 将除歌唱者客户端以外的、存储有所述伴唱文件的在线客户端作为伴唱文件种 子写入所述伴唱文件种子列表。
当从客户端侧实现不从歌唱者客户端301获取伴唱文件时,听众客户端302 获取歌唱者客户端301标识,根据该标识从所述伴唱文件种子列表中选择除所 述歌唱者客户端以外的种子获取伴唱文件。其中,听众客户端302可以从应用 服务器303处获取歌唱者客户端301标识。
上文所述向索引服务器305上报的歌唱流信息通常包括歌唱者客户端标 识、当前演唱的歌曲标识和演唱进度标识、伴唱文件信息通常包括伴唱文件标 识。
在图3所示系统中,歌唱者客户端301从其网络侧获取伴唱文件, 一面播 放伴唱文件, 一面采集歌声文件,将采集的歌声文件以P2P直播方式发往该歌 唱者客户端301所在网络包房内的其他客户端(即听众客户端302)。听众客 户端302 —面以P2P直4番方式/人当前包房内的客户端获取歌唱流, 一面以P2P 点播方式从所有存储有相应伴唱文件的内容服务器和在线客户端中获取伴唱文 件。在听众客户端302侧,歌唱流和伴唱文件的传输是并行的,为了使听众的 试听体验与歌唱者演唱的实际效果相同,在听众客户端302播放歌唱流和伴唱 文件时,还需要考虑控制歌唱流和伴唱文件在听众客户端302侧的播放进度与 在歌唱客户端301侧的播放进度相同。
因此,进一步地,本发明还提出,通过在歌唱流中携带时间戳来控制歌唱 流和伴唱文件的播放进度,使得听众客户端302收听到的卡拉OK效果与真实 的卡拉OK效果相同。
具体地,歌唱者客户端301在歌唱流中携带时间戳,该时间戳记录了伴唱 文件的播放进度。听众客户端302接收歌唱流和伴唱文件后,根据歌唱流中携 带的时间戳控制歌唱流和伴唱文件的播放进度。歌唱者客户端301在歌唱流中携带时间戳的具体方法是,在每个歌唱流数
据包中携带时间戳,该时间戳中记录的时间是采集该歌唱流数据包时伴唱文件
播放到的时间进度,例如当前伴唱文件播放到第l分28秒,则当前采集形成的 歌唱流数据包中记录的时间戳显示的时间即为第1分28秒。每个歌唱流数据包 都有相应的数据包序列号,该数据包序列号表示歌唱流数据包形成的先后顺序。
听众客户端302以接收歌唱流数据包的形式接收歌唱流、以接收伴唱文件 数据包的形式接收伴唱文件,其中的歌唱流数据包和伴唱文件数据包都有相应 的序列号。听众客户端302在播放歌唱流和伴唱文件以形成卡拉OK效果时, 根据歌唱流数据包的序列号依次播放各个歌唱流数据包,根据每个歌唱流数据 包中的时间戳选择相应的伴唱文件数据包予以播放,例如,如果时间戳显示的 时间是第1分28秒,则播放第1分28秒对应的伴唱文件数据包。
通过在歌唱流数据包中携带时间戳来控制歌唱流和伴唱文件的播放进度, 不仅可以实现连续的网络卡拉OK播放,当歌唱者出现暂停、拖动等情形时, 也可以实现相应的卡拉OK效果。
具体地,如果出现暂停情况,则歌唱者客户端301接收到暂停命令后,将 采集的歌唱流数据包中携带的时间戳保持不变,直至接收到继续播放的命令; 接收到拖动命令后,将采集的歌唱流数据包中携带的时间戳设置为拖动后播放 的伴唱文件片4殳对应的播放进度。例如,如果将伴唱文件从第l分28秒拖动至 2分43秒,则歌唱者客户端301接收拖动完成的命令后,如果在第2分43秒 采集了歌声文件数据包,则在该歌声文件数据包中写入的时间戳信息为第l分 28秒和第2分43秒。
下面分别从歌唱者客户端301的角度和听众客户端302的角度说明通过时 间戳控制歌唱流播放进度和伴唱文件播放进度的具体方法。
图5是本发明歌唱者客户端301侧生成并分发携带有时间戳的歌唱流的流 程示意图,如图5所示,该流程包括如下步骤
步骤1:在听众客户端302侧获取伴唱文件。
本步骤中,该伴唱文件可以是预先存储在听众客户端302侧的音频文件或者MTV等视频文件,也可以是听众客户端302侧通过P2P点播等方式从其网
络侧获取的音频文件或者MTV等视频文件。
步骤2 步骤3:歌唱者客户端301—面播放伴唱文件, 一面采集歌声。 步骤4:歌唱者客户端301将采集的歌声形成歌唱流,并在该歌唱流中携
带时间戳。
本步骤中,歌唱者客户端301采集歌声,并将其实时编码为流媒体的形式, 形成歌唱流数据包,并在该歌唱流数据包中写入时间戳、按照歌唱流数据包形 成的先后顺序为各个歌唱流数据包依次赋予数据包序列号。
本步骤中,写入歌唱流数据包的时间戳是采集得到该歌唱流数据包中的起 始歌唱音频数据时伴唱文件的播放进度,例如,采集形成第5个歌唱流数据包 完毕后,开始采集第6个歌唱流数据包时,伴唱文件的播放进度是播放到第1 分15秒,则在第6个歌唱流数据包中写入的时间戳应为第1分15秒。
本步骤写入时间戳的方法支持暂停。具体地,歌唱者客户端301接收到暂 停命令后,记录接收到该暂停命令时伴唱文件的播放进度,并在接收到继续播 放的命令后,将本次暂停持续的时间与接收到该暂停命令时伴唱文件的播放进 度对应存储。
例如,在伴唱文件播放到第1分15秒时收到暂停命令,并在2分钟后收到 继续播放的命令,则歌唱者客户端301将第1分15秒和2分钟对应存储。其中, 歌唱者客户端301可以通过计时器记录暂停命令持续的时间。
本步骤写入时间戳的方法支持拖动。具体地,歌唱者客户端301接收到拖 动的命令后,记录接收到该拖动命令时伴唱文件的播放进度、以及接收到停止 拖动的命令时伴唱文件的播放进度。
例如,在伴唱文件播放到第1分15秒时收到拖动命令,在将伴唱文件的播 放进度拖动到第2分23秒时接收到停止拖动的命令,则歌唱者客户端301将第 1分15秒和第2分23秒对应存储。
关于听众客户端301如何根据时间戳控制歌唱流和伴唱文件的播放进度, 详见图6相关说明。
20步骤5:歌唱者客户端301将歌唱流数据包以P2P直播方式发往该歌唱者 客户端301所在P2P直播网络中。
本步骤中,歌唱者客户端301所在包房网络是P2P网络。歌唱者客户端301 接收听众客户端302的请求,将歌唱流数据包发给听众客户端302。当网络卡 拉OK系统中包括中转服务器306时,歌唱者客户端301还可以将歌唱流上传 至中转服务器306。
图6是本发明听众客户端302侧根据歌唱流中记录时间戳控制歌唱流和伴 唱文件播放进度的流程示意图,如图6所示,该流程包括
步骤1:听众客户端302以P2P直播方式获得歌唱流。
本步骤中,听众客户端302获得歌唱流的具体方法请见图3中关于听众客 户端302的"^兌明。
步骤2:听众客户端302对获得的歌唱流数椐包进行解码,获得该数据包 中的时间戳信息。
步骤3:听众客户端302实时播放解码的歌唱流数据包。
步骤4:听众客户端302根据步骤2中获得的时间戳信息,采用P2P点播 方式获得相应的伴唱文件lt据包。
本步骤中,听众客户端302采用P2P点播方式获得相应的伴唱文件数据包 的具体方法参见图3中关于听众客户端302的说明。
步骤5:听众客户端302根据时间戳信息实时播放伴唱文件数据包。
图6所示流程中的步骤3和步骤5之间实际上没有做到完全同步,其中伴 唱文件的播放滞后于歌唱流的播放,但是在听众客户端302下行带宽足够的情 况下,这种滞后持续时间很短, 一般不会影响听众的视听感受,所以是允许的。 作为一种替换方式,图6中的步骤3和步骤4可以互换位置,即,听众客户端 302在歌唱流和伴唱文件均准备好以后,根据歌唱流中的时间戳信息控制歌唱 流和伴唱文件的播放进度。
听众客户端302根据歌唱流中的时间戳信息控制歌唱流和伴唱文件的播放 进度时,支持暂停和拖动。页
继续图5步骤3中的例子,如果伴唱文件数据包中对应存储有第1分15 秒和2分钟来表示暂停信息,则听众客户端302提取该伴唱文件数据包中的时 间戳信息第1分15秒和2分钟,将伴唱文件在第1分15秒处暂停2分钟后, 与该伴唱文件数据包同步播放,从而实现暂停效果。如果伴唱文件数据包中对 应存储有第l分15秒和第2分23秒来表示拖动信息,则听众客户端302提取 该伴唱文件数据包中的时间戳信息第1分15秒和第2分23秒,在同步播放歌 唱流的同时,在伴唱文件播放到第第1分15秒后,直接从该伴唱文件的第2 分23秒处继续播放该伴唱文件。
在听众客户端302下行带宽不足的情况下,听众客户端302无法实现同步 下载歌唱流和伴唱文件,这种情况下,优先传输歌唱流。这是因为,在听众客 户端302播放歌唱流和伴唱文件时,其歌唱流和伴唱文件的播放进度需要根据 歌唱流中的时间戳来控制,因此,如果在收到歌唱流时,伴唱文件还未下载完 毕,可以仅播放歌唱流,当然,也可以待伴唱文件下载完毕后,根据歌唱流中 的时间戳控制歌唱流和伴唱文件的播放进度。
下面给出图3所示网络卡拉OK系统中的索引服务器304的实施例和客户 端实施例。其中,图3中的歌唱者客户端301和听众客户端302是从客户端当 前充当的角色角度为其命名的,实际上,网络卡拉OK包房内的每个客户端都 既具备歌唱者客户端301的结构,又具备听众客户端302的结构。
图7是本发明提供的客户端实施例结构图,如图7所示,该客户端包括歌 唱模块701和收听模块702。
歌唱模块701,釆集歌声形成歌唱流,向网络侧上报歌唱流信息和伴唱文 件信息。
收听模块702,以P2P直播方式从网络侧获取歌唱流,以P2P点播方式从 网络侧获取伴唱文件。
歌唱模块701还可进一步用于,通过时间戳在歌唱流中记录伴唱文件的播 放进度。
收听模块702还可进一步用于,根据歌唱流中的时间戳控制歌唱流和伴唱
22文件的播放进度。
收听模块702还可用于,获取当前歌唱者客户端标识以及网络侧根据与所 述歌唱流信息对应的P2P直播列表得到的歌唱流种子列表,根据该标识从所述 伴唱文件种子列表中选择除所述歌唱者客户端以外的种子获取伴唱文件;获取 网络侧根据与所述伴唱文件信息对应的P2P点播列表得到的伴唱文件种子列 表,从所述伴唱文件种子列表中选择伴唱文件种子获取伴唱文件。
由于本发明将用于实现网络卡拉OK的数据分为歌唱流和伴唱文件两部 分,其中的歌唱流是音频文件,且该两部分文件分别独立传输,即歌唱流以 P2P直播方式传输,伴唱文件以P2P点播方式传输,网络卡拉OK包房内的 客户端无需在同 一时刻传输既含有音频数据又含有大量视频数据的网络卡 拉OK文件,因此能够节省网络带宽,并且,由于以P2P点播方式获得伴唱 文件,因此不仅网络卡拉OK包房内的客户端可以提供伴唱文件,其他内容 服务器和在线客户端也可以提供伴唱文件,提高了网络资源利用率。
另外,当在歌唱流中加入表示伴唱文件播放进度的时间戳,并根据该时 间戳控制歌唱流和伴唱文件的播放进度时,能够实现同步播放歌唱流和伴唱 文件、真实再现歌唱者的卡拉OK效果,提高用户体验。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护 范围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1、一种传输用于实现网络卡拉OK的数据的方法,其特征在于,所述用于实现网络卡拉OK的数据包括歌唱流和伴唱文件,该方法包括歌唱者客户端采集歌声形成歌唱流,向网络侧上报歌唱流信息和伴唱文件信息;网络侧根据接收的歌唱流信息以点对点P2P直播方式向听众客户端下发歌唱流、根据接收的伴唱文件信息以P2P点播方式向听众客户端下发伴唱文件。
2、 如权利要求l所述的方法,其特征在于,该方法进一步包括歌唱者客户端向中转服务器上传所述歌唱流,中转服务器向所述网络侧上 报歌唱流信息。
3、 如权利要求1或2所述的方法,其特征在于,所述网络侧根据接收的歌 唱流信息以P2P直播方式向听众客户端下发歌唱流、根据接收的伴唱文件信息 以P2P点播方式向听众客户端下发伴唱文件包括网络侧根据接收的歌唱流信息形成与该歌唱流信息对应的P2P直播列表, 根据接收的伴唱文件信息形成与该伴唱文件信息对应的P2P点播列表;网络侧接收听众客户端获取用于实现网络卡拉OK的数据的请求消息,根 据与所述歌唱流信息对应的P2P直播列表向所述听众客户端下发歌唱流种子列 表,根据与所述伴唱文件信息对应的P2P点播列表向所述听众客户端下发伴唱 文件种子列表;听众客户端从所述歌唱流种子列表中选择种子获取歌唱流,从所述伴唱文 件种子列表中选择种子获取伴唱文件。
4、 如权利要求3所述的方法,其特征在于,根据与所述歌唱流信息对应的P2P直播列表向所述听众客户端下发歌唱流 种子列表包括将所述歌唱流信息对应的P2P直播列表作为所述歌唱流种子列表下发给所 述听众客户端;根据与所述伴唱文件信息对应的P2P点播列表向所述听众客户端下发伴唱 文件种子列表包括将所述伴唱文件信息对应的P2P点播列表作为所述伴唱文件种子列表下发 给所述听众客户端;从所述伴唱文件种子列表中选择种子获取伴唱文件包括听众客户端获取当前歌唱者客户端标识,根据该标识从所述伴唱文件种子 列表中选择除所述歌唱者客户端以外的种子获取伴唱文件。
5、 如权利要求3所述的方法,其特征在于,根据与所述伴唱文件信息对应 的P2P点播列表向所述听众客户端下发伴唱文件种子列表包括将除歌唱者客户端以外的、存储有所述伴唱文件的在线客户端作为伴唱文 件种子写入所述伴唱文件种子列表。
6、 如权利要求1或2所述的方法,其特征在于,该方法进一步包括 歌唱者客户端通过时间戳在歌唱流中记录伴唱文件的播放进度;听众客户端接收歌唱流和伴唱文件,根据歌唱流中的时间戳控制歌唱流和 伴唱文件的播放进度。
7、 如权利要求6所述的方法,其特征在于,所述根据歌唱流中的时间戳控 制伴唱文件的播放进度包括如果听众客户端没有接收到所述歌唱流中的时间戳对应的伴唱文件片断, 则听众客户端仅播放所述歌唱流。
8、 如权利要求1所述的方法,其特征在于,所述歌唱流信息包括歌唱者客户端标识、当前演唱的歌曲标识和演唱进度 标识;所述伴唱文件信息包括伴唱文件标识。
9、 一种传输用于实现网络卡拉OK的数据的系统,其特征在于,该系统包 括歌唱者客户端、网络侧和听众客户端;所述歌唱者客户端,采集歌声形成歌唱流,向网络侧上报歌唱流信息和伴 唱文件信息;所述网络侧,根据接收的歌唱流信息以点对点P2P直播方式向听众客户端下发歌唱流、根据接收的伴唱文件信息以P2P点播方式向听众客户端下发伴唱文件;所述听众客户端,接收歌唱流和伴唱文件。
10、 如权利要求9所述的系统,其特征在于,该系统进一步包括中转服务器;所述歌唱者客户端进一步用于,向所述中转服务器上传所述歌唱流; 所述中转服务器用于,向所述网络侧上报歌唱流信息。
11、 如权利要求IO所述的系统,其特征在于,所述网络侧包括索引服务器、 歌唱流种子和伴唱文件种子;所述向网络侧上报歌唱流信息和伴唱文件信息为向索引服务器上报歌唱 流信息和伴唱文件信息;所述索引服务器,接收听众客户端获取用于实现网络卡拉OK的数据对应 种子列表的请求消息,根据与所述歌唱流信息对应的P2P直播列表向所述听众 客户端下发歌唱流种子列表,根据与所述伴唱文件信息对应的P2P点播列表向 所述听众客户端下发伴唱文件种子列表;所述歌唱流种子,根据听众客户端获取歌唱流的请求消息,向所述听众客 户端下发歌唱流;所述伴唱文件种子,根据听众客户端获取伴唱文件的请求消息,向所述听 众客户端下发伴唱文件;所述听众客户端,向所述索引服务器发送获取用于实现网络卡拉OK的数 据的请求消息,接收索引服务器返回的歌唱流种子列表和伴唱文件种子列表, 从所述歌唱流种子列表中选择歌唱流种子,向所述歌唱流种子发送获取歌唱流 的请求消息,从所述伴唱文件种子列表中选择伴唱文件种子,向所述伴唱文件 种子发送获取伴唱文件的请求消息,接收所述歌唱流种子下发的歌唱流和所述 伴唱文件种子下发的伴唱文件。
12、 如权利要求11所述的系统,其特征在于,所述歌唱流种子包括歌唱者客户端、听众客户端和中转服务器;所述伴唱文件种子包括存储有该伴唱文件 的内容服务器和在线客户端。
13、 如权利要求11所述的系统,其特征在于,所述歌唱者客户端进一步用于,通过时间戳在歌唱流中记录伴唱文件的播 放进度;所述听众客户端进一步用于,根据歌唱流中的时间戳控制歌唱流和伴唱文 件的播放进度。
14、 一种客户端,其特征在于,包括歌唱模块和收听模块; 所述歌唱4莫块,采集歌声形成歌唱流,向网络侧上报歌唱流信息和伴唱文件信息;所述收听模块,以P2P直播方式从网络侧获取歌唱流,以P2P点播方式从 网络侧获取伴唱文件。
15、 如权利要求14所述的客户端,其特征在于,所述歌唱模块进一步用于,通过时间戳在歌唱流中记录伴唱文件的播放进度;所述收听模块进一步用于,根据歌唱流中的时间戳控制歌唱流和伴唱文件 的播放进度。
16、 如权利要求14所述的客户端,其特征在于,所述收听模块,获取当前歌唱者客户端标识以及网络侧根据与所述歌唱流 信息对应的P2P直播列表得到的歌唱流种子列表,从所述歌唱流种子列表中选 择歌唱流种子获取歌唱流;获取网络侧根据与所述伴唱文件信息对应的P2P点 播列表得到的伴唱文件种子列表,根据该标识从所述伴唱文件种子列表中选择 除所述歌唱者客户端以外的种子获取伴唱文件。
全文摘要
本发明实施例公开了一种传输用于实现网络卡拉OK的数据的方法、系统和客户端,所述用于实现网络卡拉OK的数据包括歌唱流和伴唱文件。该方法包括歌唱者客户端采集歌声形成歌唱流,向网络侧上报歌唱流信息和伴唱文件信息;网络侧根据接收的歌唱流信息以点对点P2P直播方式向听众客户端下发歌唱流、根据接收的伴唱文件信息以P2P点播方式向听众客户端下发伴唱文件。客户端包括歌唱模块,采集歌声形成歌唱流,向网络侧上报歌唱流信息和伴唱文件信息;收听模,以P2P直播方式从网络侧获取歌唱流,以P2P点播方式从网络侧获取伴唱文件。应用本发明能够节省传输用于实现网络卡拉OK的数据所需的传输带宽,并提高对网络资源的利用率。
文档编号H04L12/18GK101483536SQ20091000566
公开日2009年7月15日 申请日期2009年2月10日 优先权日2009年2月10日
发明者王志华, 鹏 胡 申请人:腾讯科技(深圳)有限公司

最新回复(0)