android推流和拉流 安卓推流框架_android推流和拉流

本发明涉及互联网技术领域,特别涉及一种推流方法、系统及服务器。

背景技术:

随着互联网的高速发展,众多互联网直播平台和手机直播App兴起,网络直播技术也不断改进。

目前流媒体服务器上采用的直播技术主要包括:主播利用推流器推送流媒体数据至内容分发网络(Content Delivery Network,CDN)中的边缘节点,所述边缘节点可以将接收到的流媒体数据转发给CDN中的中心节点,中心节点接收所述流媒体数据后,为该流媒体数据创建一个频道,而用户客户端采用拉流方式从所述CDN创建的频道获取所需的流媒体数据并进行播放。

在推流时,推流器通常采用实时消息传输(Real Time Messaging Protocol,RTMP)协议进行推流。在RTMP协议中,统一资源定位符(Uniform Resource Locator,URL)的格式通常为:rtmp://serveraddr:port/appName/appInstance,其中,rtmp为Real Time Messaging Protocol的首字母简拼、serveraddr通常为流媒体服务器的域名或IP、port(即端口)通常使用1935、appName可以表示发布点或者应用流媒体服务的应用名称、appInstance可以表示流名称或流媒体应用实例的名称。可见,一个采用RTMP协议的URL可以唯一标识一流媒体服务器上的一个频道,一个推流器可以利用RTMP协议的URL为一个频道提供流媒体数据,而播放端可以利用RTMP协议的URL访问与该URL对应的频道以获取流媒体数据。

由于CDN中包含多个中心节点和多个边缘节点,当同一个URL的流媒体数据在同一时间被推送到多个边缘节点时,多个边缘节点可能都会分别向中心节点进行转推,中心节点将为最先接入的边缘节点的推流创建一个频道,并拒绝后接入的推流请求。而被拒绝的边缘节点被拒绝后将可能不断向中心节点尝试推流,造成CDN内部流量消耗和服务器资源浪费。因此,目前亟需一种避免服务器资源浪费的推流方法。

技术实现要素:

本申请的目的在于提供一种推流方法、系统及服务器,能够避免CDN内部流量消耗以及服务器资源浪费,提高推流服务器的资源利用率。

为实现上述目的,本申请一方面提供一种推流方法,包括:中心节点接收边缘节点转推的推流请求,判断所述推流请求是否对应存在已有频道;

当判断结果为是时,所述中心节点向所述边缘节点发送提醒消息;或者,当判断结果为否时,所述中心节点为所述推流请求创建一频道,并接收与该频道对应的流媒体数据。

为实现上述目的,本申请另一方面提供一种推流方法,包括:边缘节点接收推流器发出的推流请求;所述边缘节点为一个或多个;所述边缘节点根据所述推流请求确定目标中心节点,以使所述一个或多个边缘节点中的所述推流请求对应相同的目标中心节点;所述边缘节点将所述推流请求转推至所述目标中心节点。

为实现上述目的,本申请另一方面提供一种推流系统,包括:至少一个中心节点服务器和至少一个边缘节点服务器;其中,

所述边缘节点服务器,用于接收推流器发出的推流请求,根据所述推流请求确定目标中心节点服务器,将所述推流请求转推至目标中心节点服务器;

所述中心节点服务器包括所述目标中心服务器,用于接收所述边缘节点服务器发出的所述推流请求,判断所述推流请求是否对应存在已有频道;当判断结果为是时,所述中心节点服务器还用于向所述边缘节点服务器发送提醒消息;或者,当判断结果为否时,所述中心节点服务器还用于为所述推流请求创建一频道,并接收与该频道对应的流媒体数据。

为实现上述目的,本申请另一方面还提供一种推流服务器,所述推流服务器为中心节点服务器,包括:

推流接收单元,用于接收边缘节点转推的推流请求;

判断单元,用于判断所述推流请求是否对应存在已有频道;

反馈或接收单元,用于当判断结果为是时,所述中心节点向所述边缘节点发送提醒消息;或者,当判断结果为否时,所述中心节点为所述推流请求创建一频道,并接收与该频道对应的流媒体数据。

为实现上述目的,本申请另一方面还提供一种推流服务器,所述推流服务器为边缘节点服务器,包括:

接收单元,用于接收推流器发出的推流请求;

目标中心节点确定单元,用于根据所述推流请求确定目标中心节点,以使一个所述推流请求对应相同的目标中心节点;

转推单元,用于将所述推流请求转推至所述目标中心节点。

为实现上述目的,本申请另一方面还提供所述管理服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述中心节点或边缘节点执行的方法。

由上可见,本申请提供的技术方案,通过比较频道名是否一致,来判断推理请求是否已经存在对应的频道,当已经存在对应的频道时,通过反馈提醒消息,可以不再接收与该频道对应的推流请求,从而能够避免CDN内部流量消耗以及服务器资源浪费。同时,利用哈希算法和频道名确定边缘节点转推的目标中心节点,可以保证相同的频道名对应的中心节点的一致性,同一频道名在通过不同的边缘节点也可以转推至相同的中心节点,从而保证一个频道的全网唯一性。因此,本申请提供的技术方案,能够避免CDN内部流量消耗以及服务器资源浪费,提高推流效率。

附图说明

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

图1是本发明实施方式中采用CDN网络的推流方法流程图;

图2是本发明实施例中以中心节点为主体的推流方法流程图;

图3是本发明实施例中以边缘节点为主体的推流方法流程图;

图4是本发明实施例中推流系统的结构示意图;

图5是本发明实施例中作为中心节点的推流服务器的一种模块图;

图6是本发明实施例中作为中心节点的推流服务器的另一模块图;

图7是本发明实施例中作为边缘节点的推流服务器的一种模块图;

图8是本发明实施例中作为边缘节点的推流服务器的另一模块图;

图9是本发明实施例中推流服务器的结构示意图;

图10是本发明实施例中计算机终端的结构示意图。

具体实施方式

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

本申请提供一种推流方法,该方法可以应用于采用CDN的直播服务。请参阅图1,所述CDN中可以包括中心节点和边缘节点,所述中心节点可以与所述边缘节点建立通信连接从而可以与边缘节点进行数据交互。一个中心节点可以与多个边缘节点建立通信连接。所述CDN中可以包括多个中心节点(图1中仅示出1个中心节点)。所述中心节点与所述边缘节点可以为服务器。

请参阅图1,本申请提供的推流方法可以包括以下步骤。

S11:推流器发送推流请求至边缘节点。

在一个实施方式中,所述推流器发送的所述推流请求可以采用RTMP协议进行传输。所述采用RTMP协议的推流请求的URL中可以包括发布点(即appName)和流名称(即appInstance)。

在一个实施方式中,所述推流器可以发送所述推流请求至边缘节点。一个推流器可以发送所述推流请求至一个或多个边缘节点。

S12:所述边缘节点接收所述推流器发出的推流请求,将所述推流请求转推至目标中心节点。

所述边缘节点可以接收所述推流器发出的推流请求,并将所述推流请求转推至目标中心节点。

在一个实施方式中,当多个边缘节点接收到的推流器发出的推流请求相同时,所述多个边缘节点可以分别将接收到的所述推流请求转推至CDN的中心节点。

在一个实施方式中,所述边缘节点将所述推流请求转推至目标中心节点可以具体包括:根据所述推流请求确定与所述推流请求对应的频道名,根据所述频道名与所有中心节点的IP确定目标中心节点,向所述目标中心节点发送所述推流请求。

在一个实施方式中,所述频道可以对应有频道名。所述频道名可以用于唯一标识所述频道。具体地,所述频道名可以包括:发布点和流名称。

在一个实施方式中,根据所述频道名与所有中心节点的IP确定目标中心节点,包括:将所述频道名作为key值进行哈希运算,从所述所有中心节点的IP中确定出目标中心节点的IP。其中,所述目标中心节点的个数可以是预先设置的。通过上述方法确定目标中心节点,可以保证相同的频道名对应的中心节点的一致性,同一频道名在通过不同的边缘节点也可以转推至相同的中心节点,从而保证一个频道的全网唯一性。同时,利用哈希运算的方法可以保证CDN的负载均衡。

S13:所述目标中心节点接收所述边缘节点发出的所述推流请求,判断所述推流请求是否对应存在已有频道。

所述目标中心节点接收所述边缘节点发出的所述推流请求后,可以判断所述推流请求是否对应存在已有频道。即,判断当前的推流请求是否为重复的推流请求。

在一个实施方式中,所述判断推流请求对应的频道是否为已经存在的频道具体可以包括:将所述推流请求对应的频道与所述目标中心节点已有的所有频道进行比对,若存在相同的频道,则判断结果为是;若不存在相同的频道,则判断结果为否。

S14:当判断结果为是时,所述目标中心节点向所述边缘节点发送提醒消息;或者,当判断结果为否时,所述目标中心节点为所述推流请求创建一频道,并接收与该频道对应的流媒体数据。

在一个实施方式中,当所述判断推流请求是否对应存在已有频道的判断结果为是时,所述目标中心节点可以向所述边缘节点发送提醒消息。即,当所述判断推流请求是否对应存在已有频道的判断结果为是时,表示所述目标中心节点已经接收了其他边缘节点的相同推流请求,当前接收到的推流请求为重复的推流请求,那么,所述目标中心节点可以向所述边缘节点发送提醒消息。

在一个实施方式中,所述提醒消息可以为状态码。所述状态码可以用于表示当前推流发生的错误类型。具体地,所述状态码可以为短语“Orgin Exist”,该状态码可以表示当前推流发生的错误类型为:重复推流。

在一个实施方式中,当所述判断推流请求是否对应存在已有频道的判断结果为否时,所述目标中心节点为所述推流创建一频道,并接收与该频道对应的流媒体数据。

在一个实施方式中,所述目标中心节点还可以保存所述接收到的与创建的频道对应的流媒体数据。

在一个实施方式中,所述流媒体数据可以包括音频数据和/或视频数据。

在另一个实施方式中,所述推流方法还可以包括:所述边缘节点接收所述中心节点发出的提醒消息后,可以向所述推流器发送推流失败信息。

其中,所述推流失败信息可以与所述提醒消息相同,也可以与所述提醒消息不同。例如,所述推流失败信息可以采用所述提醒消息的状态码“Orgin Exist”,也可以是自定义的消息“请求失败”。

在一个实施方式中,所述推流方法还可以包括:所述边缘节点断开与所述推流器的连接。

在一个实施方式中,所述推流方法还可以包括:根据禁推参数拒绝接收与所述频道对应的推流请求。所述禁推参数可以用于配置所述边缘节点,以使所述边缘节点在一定时间内禁止接收与所述频道对应的推流请求。

所述禁推参数可以包括:禁推频道名和禁推时间。所述禁推参数可以是预先设置的。

在另一个实施方式中,所述目标中心节点接收到的推流请求还可以包括优先级信息。具体地,所述优先级信息可以在采用RTMP协议的推流请求的URL中采用参数(例如Pri)来表示。例如,包含了优先级信息的URL可以为“rtmp://serveraddr:port/appName/appInstance?wsPri=m”,其中,优先级信息为m。

在一个实施方式中,所述优先级信息可以采用一个字符来表示。例如,可以采用数字1、2、3,或者,可以采用字母m、n等。所述优先级高低可以按照字符的预设顺序来确定。例如,字符的预设顺序为m、n、p、q,则优先级信息为m的推流请求比优先级信息为p的推流请求的优先级高。

在一个实施方式中,所述优先级信息的取值可以基于改进的snowflake算法生成。

在该实施方式中,当所述判断推流请求是否对应存在已有频道的判断结果为否时,所述目标中心节点可以为所述推流请求创建一频道,并接收与该频道对应的流媒体数据。进一步地,所述目标中心节点还可以保存与该创建的频道对应的优先级信息。

或者,在该实施方式中,当所述判断推流请求是否对应存在已有频道的判断结果为是时,比较所述推流请求的优先级信息与已有频道的优先级信息。所述目标中心节点可以根据比较结果接收优先级信息中优先级较高的流媒体数据,并保存与所述流媒体数据对应的优先级信息。

在一个实施方式中,当所述推流请求的优先级低于已有频道的优先级时,所述中心节点还可以向所述边缘节点发送优先级较低的提醒消息。所述优先级较低的提醒消息可以为状态码。所述状态码可以用于表示当前推流发生的错误类型。具体地,用于表示优先级较低的状态码可以为短语“Priority Low”,该状态码可以表示当前推流发生的错误类型为:当前推流优先级低于原频道优先级。

例如,一个频道的优先级信息为1,当一个频道在直播过程中增加了语音流数据,或者切换了新的直播场景时,可以将新的流媒体数据采用较高的优先级信息2,那么,新的流媒体信息可以使用同一流名称再次推流至原频道,并更新覆盖原频道的流数据,进而可以保证一个频道内内容的快速替换和平滑衔接。

本申请实施例还提供一种推流方法,所述推流方法以中心节点为执行主体。请参阅图2,以中心节点为主体的推流方法可以包括以下步骤。

S21:中心节点接收边缘节点转推的推流请求,判断所述推流请求是否对应存在已有频道。

在一个实施方式中,所述推流请求可以采用RTMP协议进行传输。所述采用RTMP协议的推流请求的URL中可以包括发布点(即appName)和流名称(即appInstance)。

在一个实施方式中,一个频道可以对应有频道名。所述频道名可以用于唯一标识所述频道。所述频道名可以包括:发布点和流名称(即流媒体数据对应URL中的appName和appInstance)。

在一个实施方式中,所述判断推流请求对应的频道是否为已经存在的频道具体可以包括:将所述推流请求对应的频道名与所述中心节点已有的所有频道的频道名进行比对,若存在相同的频道,则判断结果为是;若不存在相同的频道,则判断结果为否。

S22:当判断结果为是时,所述中心节点向所述边缘节点发送提醒消息;或者,当判断结果为否时,所述中心节点为所述推流请求创建一频道,并接收与该频道对应的流媒体数据。

在一个实施方式中,所述提醒消息可以为状态码。所述状态码可以用于表示当前推流发生的错误类型。具体地,所述状态码可以为短语“Orgin Exist”,该状态码可以表示当前推流发生的错误类型为:重复推流。

在一个实施方式中,所述中心节点还可以保存所述接收到的与创建的频道对应的流媒体数据。

在一个实施方式中,所述流媒体数据可以包括音频数据和/或视频数据。

在另一个实施方式中,所述中心节点接收到的推流请求还可以包括优先级信息。所述优先级信息可以为字符。例如,所述优先级信息可以为数字1、2、3,或者,可以为字母m、n等。优先级高低顺序可以按照字符的预设顺序来确定。例如,字符的预设顺序为m、n、p、q,则优先级信息为m的推流请求比优先级信息为p的推流请求的优先级高。

在该实施方式中,当所述判断推流请求是否对应存在已有频道的判断结果为否时,所述中心节点可以为所述推流请求创建一频道,并接收与该频道对应的流媒体数据。进一步地,所述中心节点还可以保存与该创建的频道对应的优先级信息。

或者,在该实施方式中,当所述判断推流请求是否对应存在已有频道的判断结果为是时,比较所述推流请求的优先级信息与已有频道的优先级信息。所述中心节点可以根据比较结果接收优先级信息中优先级较高的流媒体数据,并保存与所述流媒体数据对应的优先级信息。

本申请实施例还提供一种推流方法,所述推流方法以边缘节点为执行主体。请参阅图3,以边缘节点为主体的推流方法可以包括以下步骤。

S31:边缘节点接收推流器发出的推流请求。

在一个实施方式中,所述推流请求可以采用RTMP协议进行传输。所述采用RTMP协议的推流请求的URL中可以包括发布点(即appName)和流名称(即appInstance)。

所述频道可以对应有频道名。所述频道名可以用于唯一标识所述频道。所述频道名可以包括:发布点和流名称。

所述边缘节点可以为一个或多个。

S32:所述边缘节点根据所述推流请求确定目标中心节点。

根据所述推流请求来确定目标中心节点,可以使所述一个或多个边缘节点中的所述推流请求对应相同的目标中心节点。从而可以使得CDN中任一边缘节点转推所述推流请求时,都可以转推至于该推流请求对应的目标中心节点。

在一个实施方式中,所述边缘节点根据所述推流请求确定目标中心节点,具体可以包括:将所述频道名作为key值进行哈希运算,从所述所有中心节点的互联网协议地址(Internet Protocol Address,IP)中确定出目标中心节点的IP。其中,所述目标中心节点的个数可以是预先设置的。

S33:所述边缘节点将所述推流请求转推至所述目标中心节点。

在一个实施方式中,当所述目标中心节点判断出所述推流请求对应存在已有频道时,所述方法还可以包括:所述边缘节点接收所述目标中心节点发出的提醒消息。

进一步地,所述推流方法还可以包括:所述边缘节点向所述推流器发送推流失败信息。

其中,所述推流失败信息可以与所述提醒消息相同,也可以与所述提醒消息不同。

进一步地,所述推流方法还可以包括:所述边缘节点断开与所述推流器的连接。

在一个实施方式中,所述推流方法还可以包括:根据禁推参数拒绝接收与所述频道对应的推流请求。所述禁推参数可以用于配置所述边缘节点,以使所述边缘节点在一定时间内禁止接收与所述频道对应的推流请求。

所述禁推参数可以包括:禁推频道名和禁推时间。所述禁推参数可以是预先设置的。

本申请实施例还提供一种推流系统。请参阅图4,所述推流系统包括至少一个中心节点服务器41(图中仅示出1个)和至少一个边缘节点服务器42。

所述边缘节点服务器42,可以用于接收推流器发出的推流请求,根据所述推流请求确定目标中心节点服务器,将所述推流请求转推至目标中心节点服务器。

所述中心节点服务器41,可以用于接收所述边缘节点服务器42发出的所述推流请求,判断所述推流请求是否对应存在已有频道。当判断结果为是时,所述中心节点服务器41还用于向所述边缘节点服务器42发送提醒消息;或者,当判断结果为否时,所述中心节点服务器41还用于为所述推流请求创建一频道,并接收与该频道对应的流媒体数据。

在一个实施方式中,当所述边缘节点服务器42接收到所述中心节点服务器41发出的提醒消息时,所述边缘节点服务器42还可以用于向所述推流器发送推流失败信息。

进一步地,所述边缘节点服务器42还可以用于断开与所述推流器的连接。

进一步地,所述边缘节点服务器42还可以用于根据禁推参数拒绝接收与所述频道对应的推流请求。所述禁推参数可以用于配置所述边缘节点服务器42,以使所述边缘节点服务器42在一定时间内禁止接收与所述频道对应的推流请求。

在一个实施方式中,所述中心节点服务器41接收到的推流请求还可以包括优先级信息。那么,所述中心节点服务器41还可以用于当所述判断推流请求是否对应存在已有频道的判断结果为是时,比较所述推流请求的优先级信息与已有频道的优先级信息。所述优先级信息可以在采用RTMP协议的推流请求的URL中采用参数(例如Pri)来表示。

进一步地,所述中心节点服务器41还可以用于根据比较结果接收优先级信息中优先级较高的流媒体数据,并保存与所述流媒体数据对应的优先级信息。

在一个实施方式中,当所述推流请求的优先级低于已有频道的优先级时,所述中心节点服务器41还可以向所述边缘节点服务器42发送优先级较低的提醒消息。所述优先级较低的提醒消息可以为状态码。所述状态码可以用于表示当前推流发生的错误类型。

本申请实施例还提供一种推流服务器,所述推流服务器为中心节点服务器。请参阅图5,所述推流服务器可以包括:

推流接收单元51,用于接收边缘节点转推的推流请求。

判断单元52,用于判断所述推流请求是否对应存在已有频道。

反馈或接收单元53,用于当判断结果为是时,所述中心节点向所述边缘节点发送提醒消息;或者,当判断结果为否时,所述中心节点为所述推流请求创建一频道,并接收与该频道对应的流媒体数据。

请参阅图6,在一个实施方式中,所述推流服务器还可以包括:

优先级比较单元54,用于当所述推流请求还包括优先级信息,且所述中心节点服务器判断推流请求是否对应存在已有频道的判断结果为是时,比较所述推流请求的优先级信息与已有频道的优先级信息。

存储单元55,用于根据所述优先级比较单元54的比较结果接收优先级信息中优先级较高的流媒体数据,并保存与所述流媒体数据对应的优先级信息。

本申请实施例还提供一种推流服务器,所述推流服务器为边缘节点服务器。请参阅图7,所述推流服务器可以包括:

接收单元71,用于接收推流器发出的推流请求。

目标中心节点确定单元72,用于根据所述推流请求确定目标中心节点,以使一个所述推流请求对应相同的目标中心节点。

转推单元73,将所述推流请求转推至所述目标中心节点。

参阅图8,在一个实施方式中,所述推流服务器还可以包括:控制连接单元74,用于断开与所述推流器的连接。进一步地,所述控制连接单元还用于根据禁推参数拒绝接收与所述频道对应的推流请求。

参阅图9,本申请还提供一种推流服务器,所述推流服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,可以实现上述的中心节点或边缘节点执行的推流方法。

请参阅图10,在本申请中,上述实施例中的技术方案可以应用于如图10所示的计算机终端10上。计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图10所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的配置。

存储器104可用于存储应用软件的软件程序以及模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

具体地,在本申请中,上述的服务器的部署方法可以作为计算机程序存储于上述的存储器104中,所述存储器104可以与处理器102耦合,那么当处理器102执行所述存储器104中的计算机程序时,便可以实现上述的服务器的部署方法中的各个步骤。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。

由上可见,本申请提供的技术方案,通过比较频道名是否一致,来判断推理请求是否已经存在对应的频道,当已经存在对应的频道时,通过反馈提醒消息,可以不再接收与该频道对应的推流请求,从而能够避免CDN内部流量消耗以及服务器资源浪费。同时,利用哈希算法和频道名确定边缘节点转推的目标中心节点,可以保证相同的频道名对应的中心节点的一致性,同一频道名在通过不同的边缘节点也可以转推至相同的中心节点,从而保证一个频道的全网唯一性。同时,利用哈希运算的方法可以保证CDN的负载均衡,提升了各种应用场景下如直播时,CDN的稳定性和高可用。因此,本申请提供的技术方案,能够避免CDN内部流量消耗以及服务器资源浪费,提高推流效率。

进一步地,通过优先级信息,可以将客户处理或更新过的内容使用同一流名称再次推流,且流数据可以覆盖上次推流,实现内容的快速替换和平滑衔接,从而满足客户的场景需求,提升用户体验。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

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