发明内容
为了解决上述技术不足,本申请提供一种文件传输方法、装置、KTV盒子、计算机设备及计算机可读存储介质,提高了客户端之间歌曲文件传输效率和安全性。
一种文件传输方法,包括:
基于RTC协议建立第一客户端与第二客户端之间的数据通道;
从所述第一客户端获取歌曲文件,利用私有协议对所述歌曲文件封装后得到传输文件协议包,通过所述数据通道发送至第二客户端;其中,所述私有协议是基于RTC协议且承载于所述数据通道上;
获取所述第二客户端接收的RTC数据包,从所述RTC数据包中提取出传输文件协议包,并依据所述私有协议解析所述传输文件协议包得到对应的歌曲文件。
在一个实施例中,基于RTC协议建立第一客户端与第二客户端之间的数据通道,包括:
由第一客户端向信令服务器发送连接请求,所述信令服务器将所述连接请求转发至所述第二客户端;
由第二客户端响应所述连接请求,向所述信令服务器发送连接确认信息,所述信令服务器将连接确认信息转发至所述第一客户端;
由第一客户端向信令服务器发送offer SDP,所述信令服务器将所述offer SDP转发至所述第二客户端;
由第二客户端响应所述offer SDP生成answer SDP并发送至所述信令服务器,所述信令服务器将answer SDP转发至所述第一客户端,建立RTC连接的数据通道。
在一个实施例中,从所述第一客户端获取歌曲文件之前,还包括:
由所述第一客户端通过所述私有协议向所述第二客户端发送唱歌邀请及演唱歌曲信息;
通过所述第二客户端接收所述唱歌邀请,并在对所述演唱歌曲信息进行确认后,向所述第一客户端返回共享歌曲请求;
由所述第一客户端响应所述共享歌曲请求在本地查找所述演唱歌曲信息对应的歌曲文件,并通过所述数据通道发送到所述第二客户端;
其中,所述第二客户端收到所述歌曲文件后存储在本地。
在一个实施例中,从所述第一客户端获取歌曲文件之前,还包括:
由所述第一客户端通过所述私有协议向所述第二客户端发送唱歌邀请及演唱歌曲信息;
通过所述第二客户端接收所述唱歌邀请,并在根据所述演唱歌曲信息进行本地查询获取对应的歌曲文件,并向所述第一客户端返回共享歌曲请求;
由所述第二客户端接收所述第一客户端响应所述共享歌曲请求的确认信息,并通过所述数据通道将所述歌曲文件发送到所述第一客户端;其中,所述第一客户端收到所述歌曲文件后存储在本地。
在一个实施例中,所述的文件传输方法,还包括:
由第一客户端采集本地话筒的第一音频流和摄像头的第一视频流,基于所述私有协议封装成第一音视频包,通过所述数据通道传输到所述第二客户端;其中,所述第二客户端依据所述私有协议从所述第一音视频包中解析出第一音频和第一视频;
以及
由第二客户端采集本地话筒的第二音频流和摄像头的第二视频流,基于所述私有协议封装成第二音视频包,通过所述数据通道传输到所述第一客户端;其中,所述第一客户端依据所述私有协议从所述第二音视频包中解析出第二音频和第二视频。
在一个实施例中,所述的文件传输方法,还包括:
由第一客户端向所述第二客户端发送加密信息;同时第一客户端利用所述加密信息对所述第一音频流和第一视频流进行加密,得到第一加密音视频包;在第一加密音视频包发送到第二客户端后,由所述第二客户端依据所述加密信息对所述第一加密音视频包进行解密;
以及
由第二客户端向所述第一客户端发送加密信息;同时第二客户端利用所述加密信息对所述第二音频流和第二视频流进行加密,得到第二加密音视频包;在第二加密音视频包发送到第一客户端后,由所述第一客户端依据所述加密信息对所述第二加密音视频包进行解密;
其中,所述加密信息包括加密方式、加密算法和加密解密用密钥。
在一个实施例中,所述的文件传输方法,还包括:对所述加密信息的加密方式、加密算法和加密解密用密钥进行动态更新。
在一个实施例中,所述加密算法包括AES加密算法、DES加密算法和/或异或加密算法。
在一个实施例中,所述加密方式包括:
对音视频数据进行全加密;
对音视频数据进行部分加密
和/或
对所述传输文件协议包的数据字段进行选择性加密;
其中,所述音视频数据包括第一音视频和第二音视频。
在一个实施例中,在对唱模式中,所述加密方式包括:采用音视频数据全加密的方式和传输文件协议包的数据字段全加密的方式;
在多人合唱模式中,所述加密方式包括:采用对视频数据的关键帧I帧加密和传输文件协议包的数据字段部分加密的方式;
或者
在直播模式和个人演唱会模式下,所述加密方式包括:采用对音视频部分加密和传输文件协议包的数据字段部分加密方式,或者无加密方式。
在一个实施例中,所述私有协议包括:
协议头标识:用于区分数据流中每条消息起始位置和终止位置;
协议版本号:用于向后兼容;
数据加密方式:标识是否启用加密及其加密方式和标识加密算法;
数据类型:标记数据类型,所述类型包括:视频数据、音频数据、文本数据、歌曲文件、加密解密用密钥;
数据长度:标识有效负载数据的长度;
数据:存放消息内容;
CRC校验:用于验证消息完整性。
在一个实施例中,所述协议头标识的长度为2Byte,所述协议版本号的长度为1Byte,所述数据加密方式的长度为1Byte,所述数据类型的长度为1Byte,所述数据长度的长度为4Byte,所述CRC校验的长度为4Byte。
一种文件传输装置,包括:
通道连接单元,用于基于RTC协议建立第一客户端与第二客户端之间的数据通道;
协议发送单元,用于从所述第一客户端获取歌曲文件,利用私有协议对所述歌曲文件封装后得到传输文件协议包,通过所述数据通道发送至第二客户端;其中,所述私有协议是基于RTC协议且承载于所述数据通道上;
协议解析单元,用于获取所述第二客户端接收的RTC数据包,从所述RTC数据包中提取出传输文件协议包,并依据所述私有协议解析所述传输文件协议包得到对应的歌曲文件。
一种网络KTV系统,包括:多个通过网络连接的KTV盒子;其中,所述KTV盒子中的至少一者对应包括上述的第一客户端,以及至少一者对应包括上述的第二客户端。
一种计算机设备,其包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行上述的文件传输方法。
一种计算机可读存储介质,所述存储介质存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行上述的文件传输方法。
本申请的技术方案,具有如下有益效果:
在基于RTC协议基础上,建立两个客户端之间的数据通道连接,利用数据通道用来载入私有协议的数据包传输音视频流媒体信息,实现不同终端之间的跨平台通信,提高了传输效率;同时,基于数据通道保护了客户端的个人隐私,也提升了文件传输的安全性。
进一步的,采用了创新的加密方案,降低非法截获加密音视频包后被破解的几率,增加了破解难度,提高了传输文件的安全性;另外,在充分兼顾系统消耗基础上,保证传输文件的安全性能。
进一步的,在现有WebRTC标准协议基础上提供了创新的WKTP私有协议,能够增加传输安全性,增加破解难度;同时,具有良好的扩展性,应用于其他非WebRTC客户端上传输时也具有良好效果。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作。
参考图1所示,图1是一个示例的文件传输方法的硬件环境图,图中所述网络中,有多个客户端接入到网络中,如客户端1-n,n≥2,各个客户端可以通过RTC协议进行互联,并能够RTC协议与信令服务器进行连接,示例性的,图中所述的客户端可以是指KTV盒子的客户端;本申请的文件传输方案,主要是应用于客户端上,实现不同的客户端之间的歌曲文件传输功能。
下面对本申请的文件传输方法实施例进行描述。
参考图2所示,图2是一个实施例的文件传输方法流程图,包括:
S10,基于RTC协议建立第一客户端与第二客户端之间的Data Channel数据通道。
此步骤中,基于RTC(Real-time Communications,实时通信)协议方式,在第一客户端与第二客户端之间建立实时通信连接;在本实施例中,以WebRTC(Web Real-TimeCommunication,源自网页即时通信)协议为例进行阐述。
对于建立第一客户端与第二客户端之间的Data Channel数据通道的技术方案,参考图3所示,图3是建立Data Channel数据通道的流程图,具体可以如下:
s101,由第一客户端向信令服务器发送连接请求,所述信令服务器将所述连接请求转发至所述第二客户端。
s102,由第二客户端响应所述连接请求,向所述信令服务器发送连接确认信息,所述信令服务器将连接确认信息转发至所述第一客户端。
s103,由第一客户端向信令服务器发送offer SDP,所述信令服务器将所述offerSDP转发至所述第二客户端。
s104,由第二客户端响应所述offer SDP生成answer SDP并发送至所述信令服务器,所述信令服务器将answer SDP转发至所述第一客户端,建立RTC连接的Data Channel数据通道。
S20,从所述第一客户端获取歌曲文件,利用私有协议对所述歌曲文件封装后得到传输文件协议包,通过所述Data Channel数据通道发送至第二客户端;其中,所述私有协议是基于RTC协议且承载于所述Data Channel数据通道上。
此步骤中,第一客户端获取到需要传输的歌曲文件,利用私有协议对歌曲文件封装后得到传输文件协议包,再通过Data Channel数据通道发送至第二客户端。
在此处,本实施例的方案定义了私有协议,其中该私有协议是基于RTC协议且承载于Data Channel数据通道上。
具体的,参考图4所示,图4是基于RTC协议的私有协议示意图;如图中,实线框内为RTC协议的协议栈,本实施例的私有协议通过在承载于Data Channel数据通道上,为了便于描述,自定义名字为“WKTP协议”(下文同);通过上述协议栈可以看出,本实施例的技术方案利用Data Channel数据通道用来载入私有协议的数据包来传输歌曲文件等音视频流媒体信息。
S30,获取所述第二客户端接收的RTC数据包,从所述RTC数据包中提取出传输文件协议包,并依据所述私有协议解析所述传输文件协议包得到对应的歌曲文件。
此步骤中,第二客户端基于RTC协议,对接收的RTC数据包进行解析,从而得到DataChannel数据通道中载入的传输文件协议包,然后基于私有协议对传输文件协议包进行解析,从而得到对应的歌曲文件,从而实现了不同客户端之间的歌曲文件传输。
综上所述,通过上述协议栈可以看出,本实施例的技术方案,在基于RTC协议基础上,将通常用于传输文本信息、控制信息以及指令等;而本实施例通过利用Data Channel数据通道用来载入私有协议的数据包传输音视频流媒体信息,从而可以在原有WebRTC协议基础上,实现不同终端之间的跨平台通信,提高了传输效率;同时,基于Data Channel数据通道保护了客户端的个人隐私,也提升了文件传输的安全性。
为了更加清晰本申请技术方案,下面结合几种场合中应用实施例进行阐述。
本申请的技术方案,可以应用于在对唱模式,在多人合唱模式,在直播模式和个人演唱会模式等场景,下面实施例将就上述各种模式下进行唱歌时,歌曲文件的传输方案进行实施例描述。
据此,参考图5所示,图5是一个示例的唱歌过程中的文件传输方法流程图,可以包括如下步骤:
s201,第一客户端通过WKTP协议向第二客户端发送唱歌邀请及演唱歌曲信息;其中,唱歌邀请可以是对唱要求,如果是多个客户端进行合唱,则各个客户端之间可以进行相互邀请。
s202,第二客户端接收唱歌邀请,并在对演唱的歌曲信息进行确认;具体的,确认过程主要是查询本地歌曲库是否存在该歌曲信息对应的歌曲文件。
s203,第二客户端确认后通过WKTP协议向第一客户端返回共享歌曲请求;具体的,第二客户端查询本地发现没有对应的歌曲文件,发出共享歌曲请求。
s204,第一客户端响应共享歌曲请求在本地查找演唱歌曲信息对应的歌曲文件;具体地,第一客户端在本地查询到保存的该歌曲文件与第二客户端进行共享。
s205,第一客户端通过WKTP协议将歌曲文件发送到第二客户端,与第二客户端进行共享。
s206,第二客户端收到歌曲文件后存储在本地。
需要说明的是,上述过程中第一客户端与第二客户端之间是通过WKTP协议在DataChannel数据通道上进行通信。
另外,参考图6所示,图6是另一个示例的唱歌过程中的文件传输方法流程图,可以包括如下步骤:
s301,第一客户端通过WKTP协议向第二客户端发送唱歌邀请及演唱歌曲信息;
s302,第二客户端接收唱歌邀请及演唱歌曲信息,根据演唱歌曲信息进行本地查询获取对应的歌曲文件;
s303,第二客户端通过WKTP协议向第一客户端返回共享歌曲请求;
s304,第一客户端响应共享歌曲请求,并通过WKTP协议向第二客户端返回确认信息;
s305,第二客户端通过WKTP协议向第一客户端发送歌曲文件;
s306,第一客户端收到歌曲文件后存储在本地。
同理,上述过程中第一客户端与第二客户端之间是通过WKTP协议在Data Channel数据通道上进行通信。
上述实施例的技术方案中,基于WKTP协议在第一客户端与第二客户端之间的DataChannel数据通道上进行通信,使得两个客户端之间的文件传输效率更高,且更具安全性;两个客户端的用户就可以快速安全地得到歌曲文件,即可进行网络对唱、合唱、直播或演唱会等。
在网络唱歌过程中,第一客户端与第二客户端之间进一步通过实时采集的音频流和视频流进行交互,从而可以在不同两个客户端上分别合成出实施MV效果;据此,在进行歌曲文件交互传输后,本实施例还提供进行音视频流的交互传输方案。
在一个实施例中,所述的文件传输方法还包括:
(1)第一客户端采集本地话筒的第一音频流和摄像头的第一视频流,基于WKTP协议封装成第一音视频包,通过WKTP协议在Data Channel数据通道上传输到第二客户端;然后第二客户端依据WKTP协议从所述第一音视频包中解析出第一音频和第一视频。
(2)第二客户端采集本地话筒的第二音频流和摄像头的第二视频流,基于WKTP协议封装成第二音视频包,通过WKTP协议在Data Channel数据通道上传输到第一客户端;然后第一客户端依据WKTP协议从所述第二音视频包中解析出第二音频和第二视频。
上述实施例的方案,主要是在唱歌过程中,同时将第一客户端和第二客户端实时获取的音视频数据,通过WKTP协议在Data Channel数据通道上传输到对方的客户端上,从而实现了实时交互过程,由于实时交互对于时延要求较高,因此,通过本实施例提供的WKTP协议在Data Channel数据通道上传输方案,将第一客户端和第二客户端都可以快速地获取到对方的音视频数据,并可以分别在两个客户端上进行合成MV歌曲文件,从而可以提高用户应用体验。
为了进一步提高传输安全性,本申请提供对于传输文件进行加密的实施例。对于加密内容可以包括传输的歌曲文件,主要是针对于第一客户端与第二客户端之间交互的音视频数据进行加密。
据此,在一个实施例中,本申请的文件传输方法,还可以包括如下:
(1)第一客户端向第二客户端发送加密信息;同时第一客户端利用加密信息对第一音频流和第一视频流进行加密,得到第一加密音视频包;然后发送到第二客户端,第二客户端依据加密信息对第一加密音视频包进行解密;其中,加密信息包括加密方式、加密算法和加密解密用密钥等等。
(2)第二客户端向第一客户端发送加密信息;同时第二客户端利用加密信息对第二音频流和第二视频流进行加密,得到第二加密音视频包;然后发送到第一客户端,第一客户端依据加密信息对第二加密音视频包进行解密;其中,加密信息包括加密方式、加密算法和加密解密用密钥等。
本实施例中,加密算法可以采用AES加密算法、DES加密算法、异或加密算法等等。优选的,在加密过程中,对加密信息的加密方式、加密算法和加密解密用密钥进行动态更新;例如,通过每次发送时随机采用一种加密方式、加密算法和加密解密用密钥,由此,降低非法截获加密音视频包后被破解的几率,增加了破解难度,提高了传输文件的安全性。
在一个实施例中,为了降低系统在加密解密过程中的系统消耗,提高加密使用效果,本实施例在充分兼顾系统消耗基础上,设计了如下加密传输方案。
具体的,对于加密方式,可以包括对音视频数据进行全加密;对音视频数据进行部分加密;对所述传输文件协议包的数据字段进行选择性加密等;其中,所述音视频数据包括第一音视频和第二音视频。
优选的,对于加密方案,可以应用如下:
(1)在对唱模式中,所述加密方式包括:采用音视频数据全加密的方式和传输文件协议包的数据字段全加密的方式;具体的,此模式下,考虑到安全性最高,因此采用全部加密方式,确保双方隐私。
(2)在多人合唱模式中,所述加密方式包括:采用对视频数据的关键帧I帧加密和传输文件协议包的数据字段部分加密的方式;具体的,由于客户端连接较多,为缓解终端系统解密压力,采取部分关键帧加密和部分传输文件协议包的数据字段加密的技术方案,在维持较低系统消耗基础上,充分确保了关键信息安全。
(3)在直播模式和个人演唱会模式下,所述加密方式包括:采用对音视频部分加密和传输文件协议包的数据字段部分加密方式,或者无加密方式;具体的,该模式下,对于安全性要求较低,据此,可以根据实际需要来选择加密,甚至也可以不进行加密。
参考图7所示,图7是一个示例的传输文件的加解密流程图;图中以发起对唱为例,在第一客户端向第二客户端发起对唱后,第二客户端返回响应请求进入对唱模式。
在第一客户端一侧,其处理过程如下:
a、将加密方式、加密算法、加密解密用密钥key等加密信息发送到第二客户端。
b、采集音视频数据,分别对音视频数据进行加密后打包,通过WKTP协议生成WKTP协议包(即传输文件协议包),对WKTP协议包进行选择性加密,得到加密音视频包。
c、将加密音视频包发送到第二客户端。
在第二客户端一侧,其处理过程相反,包括如下:
d、解析并利用加密信息解密对WKTP协议包;
e、解析并分别解密音频数据和视频数据;
f、播放音视频数据。
需要说明的是,第二客户端加密音视频数据发送至第一客户端的处理过程,与上述流程基本原理相同,在此不再赘述。
为了更加优化本申请的技术方案,以取得更好的技术效果,本申请还提供了对于私有协议具体结构的若干实施例。
在一个实施例中,参考图8所示,图8是一个示例的私有协议的结构图,所述私有协议的结构包括如下:
协议头标识:用于区分数据流中每条消息起始位置和终止位置,优选的,长度为2Byte;
协议版本号:用于向后兼容,优选的,长度为1Byte;
数据加密方式:标识是否启用加密及其加密方式和标识加密算法,优选的,长度为1Byte;
数据类型:标记数据类型,所述类型包括:视频数据、音频数据、文本数据、歌曲文件、加密解密用密钥,优选的,长度为1Byte;
数据长度:标识有效负载数据的长度,优选的,长度为4Byte;
数据:存放消息内容,数据长度为数据内容长度;
CRC校验:用于验证消息完整性,优选的,长度为4Byte。
为了更加清晰本实施例的WKTP协议的使用,下面以第一客户端要发一段视频数据到第二客户端为例阐述发送和解析过程。
对于第一客户端的发送消息流程,可以包括如下步骤:
①构造协议头标识,如:0x47 0x48。
②构造协议版本号,如:0x01。
③标识数据加密方式,如:0x11表示I帧AES加密方式,0x00表示无加密,0x22数据全加密,加密方式为DES。
④标识数据类型:加密密钥、视频数据、音频数据等。
⑤根据步骤4标识的加密方式,加密要发送的数据。
⑥标识数据长度。
⑦填充加密后的数据。
⑧用CRC校验将整个消息(除协议头:0x47 0x48)生成校验码。
⑨通过DataChannel数据通道将消息发送给第二客户端,完成此次消息发送过程。
对于第二客户端的接收消息流程,可以包括如下步骤:
①通过DataChannel数据通道得到第一客户端发送的消息。
②检查协议头0x47 0x48,如果协议头不对,则向后续数据依次检查匹配协议头,直到第一次得到协议头,并将此前无效数据丢弃。
③通过3Bytes偏移,得到4Bytes数据长度。
④通过得到的数据长度进行偏移,得到CRC校验码。
⑤通过校验码校验此次消息的有效性,校验不通过则丢弃掉此次消息。
⑥通过偏移得到协议版本号,检查是否支持此协议的解析,不支持则丢弃消息。
⑦通过偏移得到数据加密方式,选择相应的解密方式。
⑧通过偏移得到数据类型,选择相应的解析方式。
⑨通过偏移得到第一客户端发过来的完整数据,解密数据。
⑩完成此次消息接收过程。
上述实施例的私有协议,充分考虑了原有WebRTC协议的特性而设计,由于WebRTC使用TCP/UDP协议传输,易于被抓包、嗅探和恶意攻击,在现有WebRTC标准协议基础上增加WKTP私有协议,能够增加传输安全性,增加破解难度;同时,经过实测显示,WKTP私有协议在网络KTV系统中具有良好的扩展性,在其他非WebRTC客户端上传输时也具有良好效果。
下面阐述本申请的文件传输装置的实施例。
参考图9所示,图9是一个实施例的文件传输装置的结构示意图,包括:
通道连接单元10,用于基于RTC协议建立第一客户端与第二客户端之间的DataChannel数据通道;
协议发送单元20,用于从所述第一客户端获取歌曲文件,利用私有协议对所述歌曲文件封装后得到传输文件协议包,通过所述Data Channel数据通道发送至第二客户端;其中,所述私有协议是基于RTC协议且承载于所述Data Channel数据通道上;
协议解析单元30,用于获取所述第二客户端接收的RTC数据包,从所述RTC数据包中提取出传输文件协议包,并依据所述私有协议解析所述传输文件协议包得到对应的歌曲文件。
本实施例的文件传输装置可执行本公开的实施例所提供的一种文件传输方法,其实现原理相类似,本公开各实施例中的文件传输装置中的各模块所执行的动作是与本公开各实施例中的文件传输方法中的步骤相对应的,对于文件传输装置的各模块的详细功能描述具体可以参见前文中所示的对应的文件传输方法中的描述,此处不再赘述。
下面阐述本申请网络KTV系统的实施例。
本申请提供的一种网络KTV系统,包括:多个通过网络连接的KTV盒子;其中,所述KTV盒子中的至少一者对应包上述任意实施例的第一客户端,以及至少一者对应包括上述任意实施例的第二客户端。
如图1所示,图中可以构成一个网络KTV系统,在使用过程中,各个客户端都可以使用WebRTC协议与其他客户端进行通信,任意一个客户端,当需要与其他客户端进行文件传输时,基于本申请提供的文件传输方案,结合提供的WKTP协议,可以实现不同终端之间的跨平台通信,具有更高的传输效率,具有更高的文件传输的安全性。
下面阐述本申请的计算机设备的实施例,该计算机设备,其包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行根据上述任意实施例的文件传输方法。
下面阐述本申请的计算机可读存储介质的实施例,,所述存储介质存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行上述任意实施例的文件传输方法。
上述实施例的计算机设备及计算机可读存储介质,基于本申请提供的文件传输方案,结合提供的WKTP协议,可以实现不同终端之间的跨平台通信,具有更高的传输效率,具有更高的文件传输的安全性。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。