发明内容
本申请的目的是提供一种流媒体数据的传输方法、装置及介质。
为解决上述技术问题,本申请提供一种流媒体数据传输方法,包括:
接收待传输设备的传输请求,并确定流媒体通道;
检索调度节点的数据库,确定所述待传输设备所属的网管节点,向所述网管节点发起信令转发请求;
根据所述信令转发请求的TCP传输状态确定传输模式,并下发包含所述传输模式的推流指令至所述待传输设备,以便所述待传输设备按照所述推流指令中包含的所述传输模式通过所述流媒体通道传输所述流媒体数据;
其中,所述传输模式包括TCP传输模式和UDP传输模式。
优选地,所述根据所述信令转发请求的TCP传输状态确定传输模式,包括:
利用TCP传输所述信令转发请求,并判断TCP丢包率是否超过阈值;
若否,判断是否存在TCP控流;
若不存在所述TCP控流,采用所述TCP传输模式传输所述流媒体数据;
若所述TCP丢包率超过阈值,和/或存在所述TCP控流,采用包含KCP算法的所述UDP传输模式传输所述流媒体数据。
优选地,所述接收待传输设备的传输请求,并确定流媒体通道,包括:
接收并解析所述待传输设备的传输请求,得到所述待传输设备的公网IP地址;
根据所述公网IP地址确定所述待传输设备的位置信息;
确定距离所述位置信息最近的目标流媒体服务器;
在所述目标流媒体服务器上建立所述流媒体通道,并初始化所述流媒体通道的随机地址信息。
优选地,所述在所述目标流媒体服务器上建立所述流媒体通道,并初始化所述流媒体通道的随机地址信息之后,还包括:
将所述流媒体通道的通道信息返回至所述待传输设备。
优选地,所述采用包含KCP算法的UDP传输模式传输所述流媒体数据,包括:
所述流媒体数据进入主机外数据上报KCP协议层接口,同时发送方的KCP层在内存中执行数据包计数;
调用UDP下层接口传输所述流媒体数据;
在接收方的UDP层接收到所述流媒体数据后,转发至接收方的KCP协议层,同时接收方的KCP协议层进行数据包计数;
在根据计数对丢包数据进行缓冲之后,调用所述UDP下层接口发送ACK数据报文至所述发送方的UDP层;
若所述流媒体数据无误,将所述流媒体数据发送至应用层。
优选地,若所述流媒体数据不完整或存在数据错误,还包括:
所述发送方和所述接收方的KCP层均发送重传报文,所述重传报文用于指示所述发送方重新传输所述流媒体数据。
优选地,在所述待传输设备按照所述推流指令中包含的所述传输模式通过所述流媒体通道传输所述流媒体数据之后,还包括:
转发所述流媒体数据至预设客户端,并在所述预设客户端播放所述流媒体数据。
本申请还提供一种流媒体数据传输装置,包括:
接收模块,用于接收待传输设备的传输请求,并确定流媒体通道;
检索模块,用于检索调度节点的数据库,确定所述待传输设备所属的网管节点,向所述网管节点发起信令转发请求;
下发模块,用于根据所述信令转发请求的TCP传输状态确定传输模式,并下发包含所述传输模式的推流指令至所述待传输设备,以便所述待传输设备按照所述推流指令中包含的所述传输模式通过所述流媒体通道传输所述流媒体数据;
其中,所述传输模式包括TCP传输模式和UDP传输模式。
本申请还提供一种流媒体数据传输装置,包括存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现所述的流媒体数据传输方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的流媒体数据传输方法的步骤。
本申请所提供的一种流媒体数据传输方法,包括:接收待传输设备的传输请求,并确定流媒体通道;检索调度节点的数据库,确定待传输设备所属的网管节点,向网管节点发起信令转发请求;根据信令转发请求的TCP传输状态确定传输模式,并下发包含传输模式的推流指令至待传输设备,以便待传输设备按照推流指令中包含的传输模式通过流媒体通道传输流媒体数据。本申请根据信令转发请求的TCP传输状态可以确定待传输设备对应的网关节点的网络环境,不同的网络环境中TCP传输状态不同,因此根据不同的TCP传输状态确定是TCP传输模式还是UDP传输模式,可以适应不同网络环境,在不同的客户网络环境下搭配使用,以保证最大的联通率和画面质量。
本申请所提供的一种流媒体数据传输装置及介质与上述方法对应,效果如上。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种流媒体数据的传输方法、装置及介质。
为了便于理解本申请,首先介绍一下关于本申请中的几个专业术语。
实时流协议:实时流协议(Real Time Streaming Protocol,RTSP)是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端向盒式磁带录像机(Video Cassette Recorder,VCR)发布命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体流。
会话描述协议:会话描述协议(Session Description Protocol,SDP) 是一个描peer-to-peer (en-US) 连接的标准。SDP包含音视频的编解码(codec),源地址和时间信息。
传输控制协议:传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。
用户数据报协议:用户数据报协议(User Datagram Protocol,UDP)是第四层传输层内另一个重要的传输协议。
KCP:KCP 是一个快速可靠协议,能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给KCP。连时钟都需要外部传递进来,内部不会有任何一次系统调用。
流媒体平台:万店掌的流媒体服务平台,负责通道管理,接受来自设备端的推流数据,重新封装,转发。
网络摄像机:网络摄像机(IP CAMERA,IPC)是一种结合传统摄像机与网络技术所产生的新一代摄像机,它可以将影像通过网络传至地球另一端,且远端的浏览者不需用任何专业软件,只要标准的网络浏览器(如Microsoft IE或Netscape)即可监视其影像。
网络视频录像机:网络视频录像机(Network Video Recorder,NVR)是网络视频监控系统的存储转发部分,NVR与视频编码器或网络摄像机协同工作,完成视频的录像、存储及转发功能。NVR是集中控制和管理IPC(网络摄像机)的主机设备,摄像机将监控的音视频信息上传到NVR,由NVR进行统一存储和转发。NVR作为集中控制器,可以进行监控、录像、回放、摄像机控制和报警等。
推流端:通常指NVR或者IPC设备端的推流进程,负责将传感器获取的图像经过编码之后的数据传输到流媒体平台。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
图1为本申请实施例提供的一种流媒体数据传输方法的流程图,如图1所示,流媒体数据传输方法包括:
S10:接收待传输设备的传输请求,并确定流媒体通道。
S11:检索调度节点的数据库,确定待传输设备所属的网管节点,向网管节点发起信令转发请求。
S12:根据信令转发请求的TCP传输状态确定传输模式,并下发包含传输模式的推流指令至待传输设备,以便待传输设备按照推流指令中包含的传输模式通过流媒体通道传输流媒体数据;其中,传输模式包括TCP传输模式和UDP传输模式。
在步骤S10中,云流媒体服务器(DS)接收到待传输设备的传输请求,待传输设备可以包括NVR,本申请实施例对待传输设备不作具体限定。接收到传输请求并确定流媒体通道,关于如何确定流媒体通道并不影响本申请实施例的实现,本申请实施例对此不作具体限定。
在步骤S11中,云流服务器检索云流媒体调度服务器(MMS)的调度节点的数据库,查询得到当前待传输设备所在的网管节点,云流媒体服务器根据调度节点请求里包含的待传输设备所在的云流媒体分发服务器的网管节点,向网管节点发起信令转发请求,使用TCP传输。
在步骤S12中,根据信令转发请求使用TCP传输,根据TCP传输状态确定传输模式,TCP传输状态可以包括TCP丢包率和/或TCP是否存在控流情况,本申请实施例对TCP传输状态不作具体限定。其中,传输模式主要包括TCP传输模式和UDP传输模式。下发包含传输模式的推流指令至待传输设备,以便待传输设备按照推流指令中包含的传输模式通过流媒体通道传输流媒体数据。推流指令包括实时推流指令、回放推流指令以及下载推流指令等。
本申请所实施例提供的一种流媒体数据传输方法,包括:接收待传输设备的传输请求,并确定流媒体通道;检索调度节点的数据库,确定待传输设备所属的网管节点,向网管节点发起信令转发请求;根据信令转发请求的TCP传输状态确定传输模式,并下发包含传输模式的推流指令至待传输设备,以便待传输设备按照推流指令中包含的传输模式通过流媒体通道传输流媒体数据。本申请根据信令转发请求的TCP传输状态可以确定待传输设备对应的网关节点的网络环境,不同的网络环境中TCP传输状态不同,因此根据不同的TCP传输状态确定是TCP传输模式还是UDP传输模式,可以适应不同网络环境。
基于上述实施例,本申请实施例中接收待传输设备的传输请求,并确定流媒体通道,包括:接收并解析待传输设备的传输请求,得到待传输设备的公网IP地址;根据公网IP地址确定待传输设备的位置信息;确定距离位置信息最近的目标流媒体服务器;在目标流媒体服务器上建立流媒体通道,并初始化流媒体通道的随机地址信息;将流媒体通道的通道信息返回至待传输设备。
具体地,确定一个流媒体通道,即先分配一个流媒体通道,并做必要的初始化,必要初始化包括:1)根据客户待传输设备,即NVR的公网IP地址取得待传输设备的地理位置;2)根据待传输设备的地理位置选取距离其地理位置最近的流媒体服务器;3)在这台流媒体服务器上新建一个流媒体通道,并初始化随机地址信息;4)将流媒体通道的通道信息返回给待传输设备的请求者。通道信息可以包括初始化随机地址信息和通道标识符等。
本申请实施例通过待传输设备的地理位置,选择距离其最近的流媒体服务器更方便于流媒体数据的传输。
基于上述实施例,本申请实施例在待传输设备按照推流指令中包含的传输模式通过流媒体通道传输流媒体数据之后,还包括:转发流媒体数据至预设客户端,并在预设客户端播放流媒体数据。
具体地,待传输设备收到推流指令之后,使用流媒体平台下发的通道信息,例如通道标识符(流媒体通道的标识符,一个通道对应于一个摄像机),根据通道标识符向指定的云流媒体服务器节点发起TCP传输或者UDP传输(包括KCP算法)的推流指令,云流媒体服务器节点将流媒体数据转发至客户端播放。
基于上述实施例,本申请实施例根据信令转发请求的TCP传输状态确定传输模式包括:利用TCP传输信令转发请求,并判断TCP丢包率是否超过阈值;若否,判断是否存在TCP控流;若不存在TCP控流,采用TCP传输模式传输流媒体数据;若TCP丢包率超过阈值,和/或存在TCP控流,采用包含KCP算法的UDP传输模式传输流媒体数据。
本申请实施例中,采用TCP传输模式传输流媒体数据,具体地,在TCP传输模式下,流媒体数据直接使用系统调用送入Linux kernel缓冲区,Linux kernel协助将流媒体数据使用TCP协议进行传输,一般不对Linux kernel的TCP协议参数进行调节。采用UDP传输模式传输流媒体数据,启用KCP算法,不使用Linux kernel的TCP传输层算法。此时,KCP层只负责维护传输上下文,真正的传输工作由下层的UDP协议完成,两者互不干扰,KCP层与UDP使用抽象的接口进行交互。抽象的接口主要有:主机外数据上报KCP协议层接口,主机内数据下发网络接口,对方主机ACK报文上送接口、本主机ACK报文下发接口,对方主机要求重传报文上送接口、本主机要求重传报文下发接口。
本申请实施例中,TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的是充分利用带宽。而 KCP是为流速设计的(单个数据从一端发送到一端需要多少时间),以10%-20%带宽浪费的代价换取了比 TCP快30%-40%的传输速度。在一些负载较重的网络环境中,在TCP模式下观看监控视频会经常发生卡顿断流现象,此时如果切换到使用UDP模式观看监控视频相对比与TCP会更加流畅,断流现象减少显著,但是,每路视频通道占用了更多的网络带宽。通过TCP传输模式和UDP传输模式,对不同场景下智能选择适合的传输模式,TCP本身自带支持丢包重传,提供了可靠的传输信道,UDP搭配KCP算法,同样实现了更加可控的可靠传输信道。两种协议搭配,基本可以实现适应绝大部分网络环境,实现远程实时直播、回放。
基于上述实施例,本申请实施例采用包含KCP算法的UDP传输模式传输流媒体数据包括:流媒体数据进入主机外数据上报KCP协议层接口,同时发送方的KCP层在内存中执行数据包计数;调用UDP下层接口传输流媒体数据;在接收方的UDP层接收到流媒体数据后,转发至接收方的KCP协议层,同时接收方的KCP协议层进行数据包计数;在根据计数对丢包数据进行缓冲之后,调用UDP下层接口发送ACK数据报文至发送方的UDP层;若流媒体数据无误,将流媒体数据发送至应用层;若流媒体数据不完整或存在数据错误,发送方和接收方的KCP层均发送重传报文,重传报文用于指示发送方重新传输流媒体数据。
在具体的应用场景中,在发送方,即NVR的流媒体数据准备好之后,流媒体数据首先进入主机外数据上报KCP协议层接口,发送方的KCP层在内部(程序中的一个变量,即在一个内存中计数缓存)进行计数、缓冲之后,调用UDP下层接口(send接口)进行真实数据发送。接收方(DS节点)UDP层在收到数据包之后,首先送入主机的KCP协议层,接收方的KCP协议层进行计数,缓冲之后,调用UDP下层接口(send接口)发送ACK数据报文到发送方的UDP层,并在确认数据完整性及正确性之后将数据报文送到应用层。当发生丢包情况时,发送方及接收方(双方)的KCP层会发送重传报文,要求发送方重传丢失的报文。
本申请实施例中,KCP算法的核心要义为丢包重传,可以保证流媒体数据的完整性和正确性。
关于KCP算法还具有以下特点:
1) RTO不翻倍
重传超时时间 (Retransmission-TimeOut,RTO),TCP是基于自动重传请求(Automatic Repeat-reQuest,ARQ)协议实现的可靠性,KCP也是基于ARQ协议实现的可靠性,但TCP的超时计算是RTO*2,而KCP的超时计算是RTO*1.5,也就是说假如连续丢包3次,TCP是RTO*8,而KCP则是RTO*3.375,意味着可以更快地重新传输数据。通过4字节ts计算RTT(Round-Trip-Time)即往返时延,再通过RTT计算RTO,ts(timestamp)即当前segment发送时的时间戳。
2)选择性重传
TCP中实现的是连续ARQ协议,再配合累计确认重传数据,只不过重传时需要将最小序号丢失的以后所有的数据都要重传,而KCP则只重传真正丢失的数据。
3)快速重传
与TCP相同,都是通过累计确认实现的,发送端发送了1,2,3,4,5几个包,然后收到远端的ACK:1,3,4,5,当收到ACK = 3时,KCP知道2被跳过1次,收到ACK = 4时,知道2被跳过了2次,此时可以认为2号丢失,不用等超时,直接重传2号包,大大改善了丢包时的传输速度。1字节cmd = 81时,sn相当于TCP中的seq,cmd = 82 时,sn相当于TCP中的ack。cmd相当于WebSocket协议中的openCode,即操作码。
4)非延迟ACK
TCP在连续ARQ协议中,不会将一连串的每个数据都响应一次,而是延迟发送ACK,即上文所说的UNA模式,目的是为了充分利用带宽,但是这样会计算出较大的RTT时间,延长了丢包时的判断过程,而KCP的ACK是否延迟发送可以调节。
5)UNA + ACK
UNA模式参考特征2和特征4,ACK模式可以参考特征3。4字节una表示cmd = 81时,当前已经收到了小于una的所有数据。
6)非退让流控
在传输及时性要求很高的小数据时,可以通过配置忽略上文所说的窗口协议中的拥塞窗口机制,而仅仅依赖于滑动窗口。2字节wnd与TCP协议中的16位窗口大小意义相同,值得一提的是,KCP协议的窗口控制还有其它途径,当cmd = 83时,表示询问远端窗口大小,当cmd = 84时,表示告知远端窗口大小。
在上述实施例中,对于流媒体数据传输方法进行了详细描述,本申请还提供流媒体数据传输装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
图2为本申请实施例提供的一种流媒体数据传输装置的结构图,如图2所示,流媒体数据传输装置包括:
本申请还提供一种流媒体数据传输装置,包括:
接收模块10,用于接收待传输设备的传输请求,并确定流媒体通道;
检索模块11,用于检索调度节点的数据库,确定待传输设备所属的网管节点,向网管节点发起信令转发请求;
下发模块12,用于根据信令转发请求的TCP传输状态确定传输模式,并下发包含传输模式的推流指令至待传输设备,以便待传输设备按照推流指令中包含的传输模式通过流媒体通道传输流媒体数据;
其中,传输模式包括TCP传输模式和UDP传输模式。
基于上述实施例,作为优选的实施例,下发模块12包括:
第一判断单元,用于利用TCP传输信令转发请求,并判断TCP丢包率是否超过阈值;
第二判断单元,用于若没有超过阈值,判断是否存在TCP控流;
第一传输单元,用于若不存在TCP控流,采用TCP传输模式传输流媒体数据;
第二传输单元,用于若TCP丢包率超过阈值,和/或存在TCP控流,采用包含KCP算法的UDP传输模式传流媒体数据。
基于上述实施例,作为优选的实施例,接收模块10包括:
接收单元,用于接收并解析待传输设备的传输请求,得到待传输设备的公网IP地址;
第一确定单元,用于根据公网IP地址确定待传输设备的位置信息;
第二确定单元,用于确定距离位置信息最近的目标流媒体服务器;
建立单元,用于在目标流媒体服务器上建立流媒体通道,并初始化流媒体通道的随机地址信息。
基于上述实施例,作为优选的实施例,还包括:
返回模块,用于将流媒体通道的通道信息返回至待传输设备。
基于上述实施例,作为优选的实施例,第二传输单元包括:
第一发送子单元,用于流媒体数据进入主机外数据上报KCP协议层接口,同时发送方的KCP层在内存中执行数据包计数;
调用子单元,用于调用UDP下层接口传输流媒体数据;
转发子单元,用于在接收方的UDP层接收到流媒体数据后,转发至接收方的KCP协议层,同时接收方的KCP协议层进行数据包计数;
第二发送子单元,用于在根据计数对丢包数据进行缓冲之后,调用UDP下层接口发送ACK数据报文至发送方的UDP层;
第三发送子单元,用于若流媒体数据无误,将流媒体数据发送至应用层。
基于上述实施例,作为优选的实施例,第二传输单元还包括:
重传子单元,用于发送方和接收方的KCP层均发送重传报文,重传报文用于指示发送方重新传输流媒体数据。
基于上述实施例,作为优选的实施例,还包括:
转发模块,用于转发流媒体数据至预设客户端,并在预设客户端播放流媒体数据。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请实施例通过提供一种流媒体数据传输装置,对不同场景下智能选择适合的传输模式,TCP本身自带支持丢包重传,提供了可靠的传输信道,UDP搭配KCP算法,同样实现了更加可控的可靠传输信道。两种传输模式搭配,基本可以实现适应绝大部分网络环境,实现远程实时直播、回放。
图3为本申请实施例提供的另一种流媒体数据传输装置的结构图,如图3所示,流媒体数据传输装置包括:存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例流媒体数据传输方法的步骤。
本实施例提供的流媒体数据传输装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的流媒体数据传输方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于流媒体数据等。
在一些实施例中,流媒体数据传输装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图3中示出的结构并不构成对流媒体数据传输装置的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的流媒体数据传输装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:接收待传输设备的传输请求,并确定流媒体通道;检索调度节点的数据库,确定待传输设备所属的网管节点,向网管节点发起信令转发请求;根据信令转发请求的TCP传输状态确定传输模式,并下发包含传输模式的推流指令至待传输设备,以便待传输设备按照推流指令中包含的传输模式通过流媒体通道传输流媒体数据;其中,传输模式包括TCP传输模式和UDP传输模式。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请所提供的流媒体数据传输方法进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。