语音数据传输方法及装置与流程

文档序号:17488939发布日期:2019-04-23 20:15阅读:272来源:国知局
语音数据传输方法及装置与流程
本申请涉及通信
技术领域
,尤其涉及一种语音数据传输方法及装置。
背景技术
:语音传输是将语音信号转换成语音数据包后,经过网络传输,最后再将数据包转换成语音传递出来完成一次通话。现有的语音数据包的传输在移动网络不稳定的情况下,容易造成语音数据包丢失,从而导致语音消息传输的可靠性较低。技术实现要素:本申请实施例所要解决的技术问题在于,如何提高语音消息传输的可靠性。为解决上述问题,本申请实施例提供一种语音数据传输方法,适于在计算设备中执行,至少包括如下步骤:接收语音数据包,将所述语音数据包存储到数据库;向用户终端推送用于提示接收所述语音数据包的通知数据包,以使所述用户终端根据所述通知数据包发起语音数据包获取请求;检测是否接收到所述语音数据包获取请求,并在接收到所述语音数据包获取请求后,向所述用户终端推送所述语音数据包;检测是否接收到所述用户终端根据所述语音数据包反馈的接收完成指令,并在接收到所述接收完成指令后,删除所述数据库中的所述语音数据包。进一步的,所述接收语音数据包,将所述语音数据包存储到数据库,具体为:接收所述语音数据包,判断所述语音数据包是否完整,并在判断所述语音数据包完整后,向发送所述语音数据包的客户端反馈确认信息,并将所述语音数据包存储到数据库;其中,所述确认信息用于表示完成所述语音数据包的接收。进一步的,在将所述语音数据包存储到数据库之后,还包括:根据所述数据库存储的用户信息,确定需要推送所述语音数据包的所述用户终端。进一步的,所述向用户终端推送用于提示接收所述语音数据包的通知数据包,以使所述用户终端根据所述通知数据包发起语音数据包获取请求,具体为:向存储用户终端信息的存储器发送终端状态查询请求,并在接收到所述存储器根据所述终端状态查询请求反馈的上线信息后,向用户终端推送用于提示接收所述语音数据包的通知数据包,以使所述用户终端根据所述通知数据包间隔性地发起语音数据包获取请求;其中,所述上线信息用于表示所述用户终端处于数据包接收状态。进一步的,所述检测是否接收到所述语音数据包获取请求,并在接收到所述语音数据包获取请求后,向所述用户终端推送所述语音数据包,具体为:检测是否接收到所述语音数据包获取请求;其中,若是,则在接收到所述语音数据包获取请求后,向所述用户终端推送所述语音数据包;否则,在所述通知数据包的发出时长达到第一预设时长后,重新向所述用户终端发送所述通知数据包,直至接收到所述语音数据包获取请求。进一步的,所述向所述用户终端推送所述语音数据包,具体为:根据所述语音数据包中表示数据长度的数据信息,向所述用户终端推送对应数据长度的所述语音数据包。进一步的,所述检测是否接收到所述用户终端根据所述语音数据包反馈的接收完成指令,并在接收到所述接收完成指令后,删除所述数据库中的所述语音数据包,具体为:检测是否接收到所述用户终端根据所述语音数据包反馈的接收完成指令;其中,若是,则在接收到所述接收完成指令后,删除所述数据库中的所述语音数据包;否则,在所述语音数据包的发出时长达到第二预设时长后,重新向所述用户终端发送所述语音数据包,直至接收到所述接收完成指令。进一步的,还提供一种语音数据传输装置,包括:数据采集模块,用于接收语音数据包,将所述语音数据包存储到数据库;数据提示模块,用于向用户终端推送用于提示接收所述语音数据包的通知数据包,以使所述用户终端根据所述通知数据包发起语音数据包获取请求;数据发送模块,用于检测是否接收到所述语音数据包获取请求,并在接收到所述语音数据包获取请求后,向所述用户终端推送所述语音数据包;数据删除模块,用于检测是否接收到所述用户终端根据所述语音数据包反馈的接收完成指令,并在接收到所述接收完成指令后,删除所述数据库中的所述语音数据包。进一步的,所述数据采集模块具体用于:接收所述语音数据包,判断所述语音数据包是否完整,并在判断所述语音数据包完整后,向发送所述语音数据包的客户端反馈确认信息,并将所述语音数据包存储到数据库;其中,所述确认信息用于表示完成所述语音数据包的接收。进一步的,所述数据采集模块还用于:根据所述数据库存储的用户信息,确定需要推送所述语音数据包的所述用户终端。实施本申请实施例,具有如下有益效果:本申请实施例提供的一种语音数据传输方法及装置,所述包括:通过将语音数据包存储到数据库中,并向用户终端推送通知接收该语音数据包的通知信息;在收到用户终端根据通知信息返回的语音数据包获取请求后,向用户终端推送语音数据包;在确定用户终端接收到该语音数据包后,才删除数据库中的语音数据包。与现有技术相比,本发明采用了将语音数据包预先存储到数据库,并在接收到反馈信息时从数据库删除该语音数据包的方法,使语音数据包更为持久化,克服了在移动网络不稳定的情况下,容易造成语音数据包丢失的问题,进而能够有效应对成员离线、成员网络故障、服务重启等异常,实现可靠传输,且通过实时推送一个通知类的数据包给客户端,提高信息传输的实时性。附图说明图1是本申请的一个实施例提供的语音数据传输方法的流程示意图;图2是本申请的一个实施例提供的语音数据传输方法的又一流程示意图;图3是本申请的一个实施例提供的语音数据传输方法的另一流程示意图;图4是本申请的一个实施例提供的语音数据传输装置的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。请参见图1-3。参见图1,是本申请的一个实施例提供的语音数据传输方法的流程示意图,如图1所示,该语音数据传输方法包括步骤s11至步骤s14。各步骤具体如下:步骤s11,接收语音数据包,将语音数据包存储到数据库。步骤s12,向用户终端推送用于提示接收语音数据包的通知数据包,以使用户终端根据通知数据包发起语音数据包获取请求。步骤s13,检测是否接收到语音数据包获取请求,并在接收到语音数据包获取请求后,向用户终端推送语音数据包。步骤s14,检测是否接收到用户终端根据语音数据包反馈的接收完成指令,并在接收到接收完成指令后,删除数据库中的语音数据包。对于步骤s11,具体的,接收语音数据包,判断语音数据包是否完整,并在判断语音数据包完整后,向发送语音数据包的客户端反馈确认信息,并将语音数据包存储到数据库。其中,确认信息用于表示完成语音数据包的接收。客户端可以使用此确认消息当作发送成功的标志。在本实施例中,语音数据包存储在指数据库中的tbl_offline_msgs表中,用于将语音数据包对应的数据存在表中使其持久化,从而应对成员离线、成员网络故障、服务重启等异常,实现可靠传输。在本实施例中,判断语音数据包是否完整是根据语音数据包所包含的必要数据是否完整来确定的。作为本实施例的一个优选举例,语音数据包所包含的必要数据如下表:012345678…其中,0表示协议版本version=0x41,1表示用户终端类型,2表示协议类型req=0x03,3表示消息类型voice_req=0x08,4-11表示客户端id,12-19表示接收该语音数据包的用户终端的分组的id,20-21表示当前语音数据包的idx,22-23表示语音数据包的总数,24-25表示当前语音数据包的总长度d,26-31为保留数据项,32-(31+d)表示语音数据,(32+d)-(36+d)表示crc验证数据。在本实施例中,还包括:根据数据库存储的用户信息,确定需要推送语音数据包的用户终端。在本实施例中,每个用户终端都存在一个对应的用户终端id,通过查询该用户终端id,可以确定需要推送语音数据包的用户终端。对于步骤s12,具体的,向存储用户终端信息的存储器发送终端状态查询请求,并在接收到存储器根据终端状态查询请求反馈的上线信息后,向用户终端推送用于提示接收语音数据包的通知数据包,以使用户终端根据通知数据包间隔性地发起语音数据包获取请求。其中,上线信息用于表示用户终端处于数据包接收状态。在本实施例中,通过向存储有用户终端id的cache中查询用户终端id的在线状态。若查询到该用户终端id处于上线状态,则向该用户终端下发通知数据包。若处于离线状态,则直到该用户终端id的状态变更为上线状态后,向该用户终端下发通知数据包。作为本实施例的一个优选举例,语音数据请求包含的数据如下表:0123456789…其中,0表示协议版本version=0x41,1表示接收该语音数据包的用户终端类型,2表示协议类型req=0x04,3表示消息类型voice_req=0x06,4-11表示发送该语音数据包的客户端的id,12-13表示请求json数据长度d,14-(13+d)表示json数据,(14+d)-(17+d)表示crc验证数据。对于步骤s13,具体的,检测是否接收到语音数据包获取请求。其中,若是,则在接收到语音数据包获取请求后,向用户终端推送语音数据包。否则,在通知数据包的发出时长达到第一预设时长后,重新向用户终端发送通知数据包,直至接收到语音数据包获取请求。在本实施例中,向用户终端推送语音数据包,具体为:根据语音数据包中表示数据长度的数据信息,向用户终端推送对应数据长度的语音数据包。由于在语音数据包的发送中可能存在粘包的现象,因此在本实施例中,通过在语音数据包的头部添加表示数据包长度的数据信息,根据该数据信息,得到数据结尾标识,并根据该标识截取对应长度的数据作为语音数据包,从而使用户终端能够根据数据的长度进行接收,确保数据传输的准确性。对于步骤s14,具体的,检测是否接收到用户终端根据语音数据包反馈的接收完成指令。其中,若是,则在接收到接收完成指令后,删除数据库中的语音数据包。否则,在语音数据包的发出时长达到第二预设时长后,重新向用户终端发送语音数据包,直至接收到接收完成指令。在本实施例中,接收完成指令包括第一确认数据和第二确认数据。只有在接收到第一确认数据和第二确认数据后,才表示用户终端完成语音数据包的接收。在接收到接收完成指令后,通过删除数据库中的语音数据包,从而保证数据库的有效存储容量。作为本实施例的一个优选举例,第一确认数据中包括:协议版本version=0x41、用户终端类型、协议类型ack=0x04、消息类型voice_req=0x86、发送该语音数据包的客户端的id、请求json数据长度d、json数据和crc验证数据。第二确认数据包括:协议版本version=0x41、用户终端类型、协议类型ack=0x04、消息类型voice_data_ack=0x88、状态default:0x0000和crc验证数据。本申请实施例提供一种语音数据传输方法,通过将语音数据包存储到数据库中,并向用户终端推送通知接收该语音数据包的通知信息;在收到用户终端根据通知信息返回的语音数据包获取请求后,向用户终端推送语音数据包;在确定用户终端接收到该语音数据包后,才删除数据库中的语音数据包。与现有技术相比,本发明采用了将语音数据包预先存储到数据库,并在接收到反馈信息时从数据库删除该语音数据包的方法,使语音数据包更为持久化,克服了在移动网络不稳定的情况下,容易造成语音数据包丢失的问题,进而能够有效应对成员离线、成员网络故障、服务重启等异常,实现可靠传输,且通过实时推送一个通知类的数据包给客户端,提高信息传输的实时性。除此之外,通过解决语音数据包的粘包现象,确保语音数据传输的准确性。请参阅图4。参见图4,是本申请的一个实施例提供的一种语音数据传输装置的结构示意图,包括:数据采集模块101,用于接收语音数据包,将语音数据包存储到数据库。在本实施例中,数据采集模块101具体用于,接收语音数据包,判断语音数据包是否完整,并在判断语音数据包完整后,向发送语音数据包的客户端反馈确认信息,并将语音数据包存储到数据库。其中,确认信息用于表示完成语音数据包的接收。客户端可以使用此确认消息当作发送成功的标志。在本实施例中,数据采集模块101还用于:根据数据库存储的用户信息,确定需要推送语音数据包的用户终端。数据提示模块102,用于向用户终端推送用于提示接收语音数据包的通知数据包,以使用户终端根据通知数据包发起语音数据包获取请求。在本实施例中,数据提示模块102具体用于,向存储用户终端信息的存储器发送终端状态查询请求,并在接收到存储器根据终端状态查询请求反馈的上线信息后,向用户终端推送用于提示接收语音数据包的通知数据包,以使用户终端根据通知数据包间隔性地发起语音数据包获取请求。其中,上线信息用于表示用户终端处于数据包接收状态。数据发送模块103,用于检测是否接收到语音数据包获取请求,并在接收到语音数据包获取请求后,向用户终端推送语音数据包。在本实施例中,数据发送模块103具体用于,检测是否接收到语音数据包获取请求。其中,若是,则在接收到语音数据包获取请求后,向用户终端推送语音数据包。否则,在通知数据包的发出时长达到第一预设时长后,重新向用户终端发送通知数据包,直至接收到语音数据包获取请求。数据删除模块104,用于检测是否接收到用户终端根据语音数据包反馈的接收完成指令,并在接收到接收完成指令后,删除数据库中的语音数据包。在本实施例中,数据删除模块104具体用于,检测是否接收到用户终端根据语音数据包反馈的接收完成指令。其中,若是,则在接收到接收完成指令后,删除数据库中的语音数据包。否则,在语音数据包的发出时长达到第二预设时长后,重新向用户终端发送语音数据包,直至接收到接收完成指令。本申请实施例提供一种语音数据传输方法及装置,所述方法包括:通过将语音数据包存储到数据库中,并向用户终端推送通知接收该语音数据包的通知信息;在收到用户终端根据通知信息返回的语音数据包获取请求后,向用户终端推送语音数据包;在确定用户终端接收到该语音数据包后,才删除数据库中的语音数据包。与现有技术相比,本发明采用了将语音数据包预先存储到数据库,并在接收到反馈信息时从数据库删除该语音数据包的方法,使语音数据包更为持久化,克服了在移动网络不稳定的情况下,容易造成语音数据包丢失的问题,进而能够有效应对成员离线、成员网络故障、服务重启等异常,实现可靠传输,且通过实时推送一个通知类的数据包给客户端,提高信息传输的实时性。除此之外,通过解决语音数据包的粘包现象,确保语音数据传输的准确性。本申请的又一实施例还提供了一种语音数据传输终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述实施例所述的语音数据传输方法。以上所述是本申请的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1