语音直播过程中音频数据完整性的保障方法与流程

文档序号:11930339阅读:924来源:国知局
语音直播过程中音频数据完整性的保障方法与流程

本发明涉及网络音频传输技术,具体涉及一种语音直播过程中音频数据完整性的保障方法。



背景技术:

现场直播节目极大地提高了人们获取信息的便利程度。随着网络基础设施的健全和互联网产品的日益丰富,网络直播也逐渐发展起来,人们能够从互联网上直接收看体育赛事、重大庆典会议、商贸展览等。

通常的直播过程中,出于对直播实时性的考虑,往往会忽略对于直播的视频、音频信息的完整性的保障。然而,在许多文字与语音密集的场景中,比如会议直播、庭审记录、新闻采访、人物访谈等,用户会更加的注重信息的完整性,信息的完整性、正确性反而会比时效性更加重要。



技术实现要素:

本发明针对上述情况,设计并实现了一种数据完整性的保障方法,用于在音频直播时,保障音频数据在传输过程中的数据完整性,保证了采集到的音频信息与最终发布的音频信息的一致性。

本发明提供的语音直播过程中音频数据完整性的保障方法,通过下面技术手段实现:

(一)客户端采用设定的数据包格式发送数据;其中,发送数据的数据包中包含的字段有数据包长度、数据偏移量、序列号、音频流开始时间、音频流总长度和音频数据;

(二)服务器采用设定的数据包格式返回应答报文;其中,应答报文的数据包中包含的字段有数据包类型、确认序列号和已确认音频流长度;

(三)服务器在收到客户端发送来的数据包后,首先解析数据包头部,然后进行数据包完整性判断;若数据包完整,继续判断数据包是否是期望接收的数据,若是,按照解析得到的数据偏移量将音频数据写入音频文件,在写入成功后,设置应答报文中的确认序列号s为解析得到的序列号n加1;若数据包不完整或者不是期望接收的数据,设置应答报文中的确认序列号s为解析得到的序列号n,最后服务器发送应答报文给客户端;客户端根据应答报文中的确认序列号发送对应的数据包给服务器。

进行完整性判断方法是:比较实际收到的数据包长度是否与解析得到的数据包长度字段的值一致,若一致,说明数据包完整,若不一致,说明数据包不完整。

判断数据包是否是期望接收的数据的方法是:比对接收到的数据包中数据偏移量的值是否与服务器上的已确认音频流长度的大小相等,如果是,表明该数据包是期望接收的数据,如果不相等,表明该数据包不是期望接收的数据。

相对于现有技术,本发明的优点与积极效果在于:

(1)在网络传输过程中使用本发明方法,在网络链接出现中断、网络切换、网络信号弱、丢包率高等情况下,保证传输的数据完整性。

(2)本发明方法的实现是在网络传输的应用层上,可以适应各种底层网络传输协议,包括宽带网络、无线网络、移动2G、3G、4G网络等。

(3)采用本发明方法在保证数据完整性的同时,兼顾了数据传输的时效性,已经在实际语音直播过程中得到验证。

附图说明

图1是应用本发明的数据完整性保障方法的数据流图;

图2是本发明的数据完整性保障方法的实现原理图;

图3是采用本发明方法的客户端数据传输流程图;

图4是采用本发明方法的服务器数据接收流程图。

具体实施方式

下面将结合附图和实施例对本发明作进一步的详细说明。

本发明方法可以应用在直播平台的数据传输过程中,其工作数据流如图1所示。图1展示了一般的直播系统的构成模块,以及本发明方法在原有系统中的实现位置。直播系统在客户端通过音频采集设备采集音频,经过编码与压缩,将音频数据上传到服务器,服务器上进行音频数据接收并存入文件系统。从客户端音频数据上传到服务器音频数据接收过程中,应用本发明方法,以保障音频数据在传输过程中的数据完整性。

本发明的语音直播过程中音频数据完整性的保障方法的实现原理,如图2所示。

首先,说明本发明发送数据和应答报文的报文格式。

客户端发送数据的数据包格式中包含的各字段的含义如下:

数据包长度:该数据包的总长度,单位是字节;

数据偏移量:该数据包包含的音频流文件基于总音频流文件的起始字节位置,单位是字节;

序列号:该数据包的序列号,从0开始计数;

音频流开始时间:该数据包包含的音频流的播放起始时间,单位是毫秒;

音频流总长度:当前已录制文件的总大小,单位是字节;

音频数据:实际压缩好的音频流数据,是字节流的形式。

服务器确认的应答报文的数据包格式中包含的各字段的含义如下:

数据包类型:该数据包的类型,在这里是“upload”,表示是对于上传数据的确认;

确认序列号:表示期望下次收到的数据包的序列号;

已确认音频流长度:表示服务器已经接收到的音频流的长度,单位是字节。

如图2所示,数据传输过程中,完整的音频数据的上传过程如下:首先客户端发送一个数据包,服务器收到数据包后,解析头部信息,获得数据包长度、数据偏移量等各字段的值。首先,判断收到的数据包长度是否与数据包头部中数据包长度字段的值一致,如果一致,说明接收到的数据包完整,按照数据偏移量将字节流写入音频文件,写入成功后,设置应答报文中的确认序列号为对应收到的数据包的序列号加1,然后服务器返回应答报文给客户端,通知客户端发送下一个数据包。若数据包头部中的数据包长度字段的值与实际接收到的数据包长度不一致,说明接收到的数据包不完整,则设置应答报文中的确认序列号为对应收到的数据包的序列号,发送应答报文给客户端,让客户端重新发送该数据包。

本发明通过服务器维护的确认序列号s与客户端维护的序列号n来共同推进数据的发送。当服务器检查数据包完整时,设置确认序列号s=n+1,当服务器检查数据包不完整时,设置确认序列号s=n。客户端根据收到的应答报文,更新序列号n=s,发送对应序列号的数据包给服务器。如此重复上述过程,直到客户端发送数据完毕,结束传输过程,断开网络连接。

该机制可以解决传输过程中,上传和确认数据包丢失引发的数据缺失问题。例如,如果客户端发送序列号为1的数据包后,时隔7秒没有收到服务端对于该数据包的确认,则重新发送该数据包。该机制还可以应对网络状况不好的情况下,由于网络连接断开而引发的数据丢失问题。当网络状况变好,可以重新建立网络连接后,服务端对于客户端发送的第一个数据包的确认会返回当前已经收到的音频文件大小,客户端将以此位置为数据偏移开始发送数据包。

更具体地,客户端发送数据包的工作流程,如图3所示,实现步骤如下:

步骤1.1,初始标记序列号n=0,已发送数据长度length1=0。序列号n代表音频数据在音频流文件中位置序号。

步骤1.2,判断是否有新的音频数据需要传输,即判断本地录制产生的音频文件大小与已发送数据长度length1数值是否相等,数值相等表示无新数据产生,不相等表示有新的数据需要传输;若有新数据,继续执行步骤1.3,若否无新数据,转步骤1.5执行。

步骤1.3,以n为序列号,将当前数据打包,发送数据包给服务器。

步骤1.4等待服务器响应,并检测是否超时,若超时,执行步骤1.5,否则,更新序列号n和已发送数据长度length1,然后继续转步骤1.2执行。此处,更新n为接收到的应答报文中的确认序列号s,更新length1为接收到的应答报文中已确认音频流长度length2的值。

步骤1.5,判断直播过程是否结束,若是,结束数据传输,否则继续转步骤1.2执行。

服务器接收数据的工作流程,如图4所示,实现步骤如下:

步骤2.1,服务器等待客户端发送来的数据包,若在一定时间内未收到数据包,检查链接是否断开,若是,结束数据接收过程,否则继续等待客户端发送数据包。

步骤2.2,当接收到客户端发送来的数据包时,校验数据包是否完整,若不完整,执行步骤2.4;若数据包完整,继续判断数据包是否是期望接收的数据,若是,执行步骤2.3,否则,执行步骤2.4。

检验数据包是否完整的方式就是,比对实际数据包大小与解析得到的数据包头中数据包大小字段的值是否相等,若相等则说明数据包完整,否则说明数据包不完整。

判断数据包是否是期望接收的数据是指,比对接收到的数据包中数据偏移量的值是否与服务器上的已确认音频流长度length2的大小相等,如果是,表明该数据包是期望接收的数据,如果不相等,表明该数据包不是期望接收的数据。

步骤2.3,按照数据偏移量将字节流写入音频文件,设置确认序列号s=n+1,并更新已确认音频流长度length2的值,然后将应答包返回给客户端。

步骤2.4,设置确认序列号s=n,保持已确认音频流长度length2不变,然后将应答包返回给客户端,然后继续等待客户端发送数据包,转步骤2.1执行。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1