本发明涉及互联网通信技术领域,尤其涉及一种音视频通话方法及其装置、设备、存储介质。
背景技术:
随着移动网络的发展与普及,越来越多的人开始使用移动终端来进行网络音视频通话。在单次音视频通话中,通常是先由主叫方向被叫方发起音视频请求,被叫方在移动终端的操作界面上点击接听按钮来完成接听操作。
在现有的技术方案中,被叫方在点击接听按钮后,会向主叫方发送消息a,消息a用于向主叫方通知被叫方已经接听此次通话,然后主叫方和被叫方建立音视频数据的连接b,接收并发送音频和视频数据流c。主叫方通常在收到消息a后,即认为音视频数据连接b已经建立,在主叫方的界面上表示为显示已接通,并且开始通话计时。然而在这个时候往往音视频数据连接b还未建立完成,也没有收到音频和视频数据流c,或者本地的音频设备还未完全启动成功。作为主叫方使用者来说,直观的感受就是界面上虽然已经开始通话计时,但对方的声音还是没有听到,存在时间差。
技术实现要素:
有鉴于此,本发明实施例期望提供一种音视频通话方法及其装置、设备、存储介质。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种音视频通话方法,所述方法包括:
接收音视频通话指令,响应所述音视频通话指令向第一终端发送音视频通话请求;
确定接收第一个音视频数据包的第一时刻,所述第一个音视频数据包为所述第一终端为接受所述音视频通话请求而发送的;
确定接收用于表明启动成功的通知消息的第二时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;
确定所述第一时刻与所述第二时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
第二方面,本发明实施例提供一种音视频通话方法,所述方法包括:
接收第二终端发送的音视频通话请求;
确定接收第一个音视频数据包的第三时刻,所述第一个音视频数据包为所述第二终端接收到音视频通话响应而发送的,所述音视频通话响应为自身响应所述音视频通话请求而发送的;
确定接收用于表明启动成功的通知消息的第四时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;
确定所述第三时刻与所述第四时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
第三方面,本发明实施例提供一种音视频通话装置,所述装置包括:
第一接收模块,用于接收音视频通话指令,响应所述音视频通话指令向第一终端发送音视频通话请求;
第一确定模块,用于确定接收第一个音视频数据包的第一时刻,所述第一个音视频数据包为所述第一终端为接受所述音视频通话请求而发送的;
第二确定模块,用于确定接收用于表明启动成功的通知消息的第二时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;
第一计时模块,用于确定所述第一时刻与所述第二时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
第四方面,本发明实施例提供一种音视频装置,所述装置包括:
第二接收模块,用于接收第二终端发送的音视频通话请求;
第三确定模块,用于确定接收第一个音视频数据包的第三时刻,所述第一个音视频数据包为所述第二终端接收到音视频通话响应而发送的,所述音视频通话响应为自身响应所述音视频通话请求而发送的;
第四确定模块,用于确定接收用于表明启动成功的通知消息的第四时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;
第二计时模块,用于确定所述第三时刻与所述第四时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
第五方面,本发明实施例提供一种音视频通话设备,所述设备包括:
存储器、通信总线和处理器,其中:
所述存储器,用于存储音视频通话程序;
所述通信总线,用于实现处理器和存储器之间的连接通信;
所述处理器,用于执行存储器中存储的音视频通话程序,以实现以下步骤:
接收音视频通话指令,响应所述音视频通话指令向第一终端发送音视频通话请求;
确定接收音视频数据包的第一时刻,所述音视频数据包为所述第一终端为接受所述音视频通话请求而发送的;
确定接收用于表明启动成功的通知消息的第二时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;
确定所述第一时刻与所述第二时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
第六方面,本发明实施例提供一种音视频通话设备,所述设备包括:
存储器、通信总线和处理器,其中:
所述存储器,用于存储音视频通话程序;
所述通信总线,用于实现处理器和存储器之间的连接通信;
所述处理器,用于执行存储器中存储的音视频通话程序,以实现以下步骤:
接收第二终端发送的音视频通话请求;
确定接收第一个音视频数据包的第三时刻,所述第一个音视频数据包为所述第二终端接收到音视频通话响应而发送的,所述音视频通话响应为自身响应所述音视频通话请求而发送的;
确定接收用于表明启动成功的通知消息的第四时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;
确定所述第三时刻与所述第四时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
第七方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有音视频通话程序,所述音视频通话程序被处理器执行时实现上述的音视频通话方法的步骤。
本发明实施例提供一种音视频通话方法及其装置、设备、存储介质,其中,首先,接收音视频通话指令,响应所述音视频通话指令向第一终端发送音视频通话请求;再确定接收音视频数据包的第一时刻,所述音视频数据包为所述第一终端为接受所述音视频通话请求而发送的,并确定接收用于表明启动成功的通知消息的第二时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;最后确定所述第一时刻与所述第二时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,并在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包,这样,能够保证在接收到第一个来自第一终端发送的数据包并且自身的音视频单元启动成功两个事件全部完成的时候,再启动计时器开始计时并输出音视频数据包,使得在通话界面开始计时时,能够正常进行音视频通话,进而提升了用户体验。
附图说明
图1为本发明实施例提供的音视频通话方法的实施环境的示意图;
图2为本发明实施例提供的一种音视频通话方法的实现流程示意图;
图3为本发明实施例提供的又一种音视频通话方法的实现流程示意图;
图4为本发明实施例第一终端接收到音视频通话请求的界面示意图;
图5为本发明实施例第一终端接收到接听音视频通话指令后的界面示意图;
图6为本发明实施例第一终端开始计时的场景示意图;
图7为本发明实施例现有的音视频通话方法的实现流程示意图;
图8为本发明实施例提供的又一种音视频通话方法的实现流程示意图;
图9为本发明实施例音视频通话装置的组成结构示意图;
图10为本发明实施例音视频通话设备的组成结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对发明的具体技术方案做进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1为本发明实施例提供的音视频通话方法的实施环境的示意图,如图1所示,该实施环境包括智能终端101、智能终端102、服务器103,其中,智能终端101和102之间以及智能终端101和服务器103之间、智能终端102和服务器103之间通过网络连接并进行信息交互。
智能终端101上安装有即时通讯程序,该即时通讯程序指类似于中国的腾讯科技(深圳)有限公司的qq和微信,中国的北京小米科技有限责任公司的米聊以及中国的广州华多网络科技有限公司的yy语音等即时通讯程序。该智能终端可以是智能手机、平板电脑、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayerⅲ,动态影像压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayerⅳ,动态影像压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器103可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。该服务器103用于对音视频数字信号进行传输,并且该服务器103还用于接收智能终端101和/或智能终端102上报的错误消息,进而对与智能终端101和/或智能终端102机型相同的智能终端关闭本发明实施例提供的音视频通话方法功能。
结合图1所示的示意图,以下对音视频通话方法及音视频通话装置的各实施例进行说明。
本发明实施例提供一种音视频通话方法,图2为本发明实施例提供的一种音视频通话方法的实现流程示意图,如图2所示,所述方法包括:
步骤s201,第二终端接收音视频通话指令,响应所述音视频通话指令向第一终端发送音视频通话请求。
在实施例中,第二终端接收到的音视频通话指令可以是用户在已运行的即时通讯程序上点击了“语音通话”按钮或者“视频通话”按钮而生成的操作指令,还可以是接收到了用户发出了预设发起音视频通话的手势或语音而生成的指令。
在第二终端接收到进行音视频通话的指令后,会获取音视频通话指令中携带的被叫方的标识信息,并根据被叫方的标识信息确定被叫方对应的第一终端的标识信息,向第一终端发送音视频通话请求,并且,该音视频通话请求中携带有主叫方的标识信息。这时,第二终端进入主叫回铃音状态,在第二终端的界面上会显示“等待对方接听”的提示消息。
步骤s202,所述第二终端确定接收第一个音视频数据包的第一时刻。
在实施例中,所述第一个音视频数据包为所述第一终端为接受所述音视频通话请求而发送的。
第一终端接收到音视频通话请求后,如果第一终端接收到接听音视频通话的指令,会向第二终端发送一个音视频通话响应,该音视频通话响应用于表征第一终端接受了音视频通话请求,并且第一终端会初始化并启动自身的音视频单元,并在启动完毕后采集第一终端的用户a发出的音视频数据包,将采集到的音视频数据包发送给第二终端。
音视频单元可以包括:音频输入单元、音频输出单元、视频输入单元、视频输出单元。音频输入单元可以是终端自带的话筒,也可以是与终端建立连接的耳机上的话筒;音频输出单元可以是终端自带的听筒、麦克风,也可以是与终端建立连接的耳机上的听筒;视频输入单元可以是终端自带的摄像头,还可以是与终端建立连接的摄像头;视频输出单元一般为终端的显示屏幕。
步骤s203,所述第二终端确定接收用于表明启动成功的通知消息的第二时刻。
在实施例中,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的。
在第二终端接收到音视频通话指令或者在第二终端向第一终端发送音视频通话请求时,第二终端开始初始化自身的音视频单元,或者开始初始化并启动自身的音视频单元。
如果第二终端在接收到音视频通话指令或者在第二终端向第一终端发送音视频通话请求时,仅仅对自身的音视频单元进行了初始化过程,那么第二终端在接收到第一终端发送的接受音视频通话请求的响应之后,启动自身的音视频单元。
在本发明实施例及其他实施例中,初始化自身的音视频单元包括:
获取所述音视频单元的配置参数,其中,所述配置参数至少包括音视频单元的编码格式、比特率、采样率;
获取所述音视频单元的标识信息和配置权限;
根据所述音视频单元的标识信息将所述配置参数发送给所述音视频单元。
启动自身的音视频单元包括:
向所述自身的音视频单元发送启动指令,所述启动指令用于通知所述音视频单元开始采集音视频数据包。
在自身的音视频单元启动成功之后,会发出一个启动成功的通知消息。第二终端将接收到该启动成功的通知消息的时刻确定为第二时刻。
步骤s204,所述第二终端确定所述第一时刻与所述第二时刻之中后发生的时刻。
这里,例如,第一时刻为2017年7月29日15:17:20:50,第二时刻为2017年7月29日15:17:21:10,那么第二时刻为第一时刻与第二时刻之中后发生的时刻。
步骤s205,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
在其他实施例中,在步骤s205之前,所述方法还包括:第二终端确定与第一终端之间的音视频通话连接的建立成功的第五时刻;根据所述第五时刻和预设等待时长,确定预设的等待时间段。
例如,第一终端与第二终端之间的音视频通话连接建立成功的第三时刻为2017年7月29日15:17:19:40,预设等待时长为2秒,那么预设的等待时间段为从第三时刻开始到第三时刻加上预设等待时长为止,也就是说此时预设的等待时间段为2017年7月29日15:17:19:40到2017年7月29日15:17:21:40。
需要说明的是,预设等待时长一般是由该音视频通话方法的开发人员预先设置好的,对于用户来说一般是不可见,且不能由用户改变的。
如果为第一时刻为2017年7月29日15:17:20:50,第二时刻为2017年7月29日15:17:21:10,那么第一时刻与第二时刻之中后发生的时刻为2017年7月29日15:17:21:10(第二时刻),由于2017年7月29日15:17:21:10在2017年7月29日15:17:19:40到2017年7月29日15:17:21:40之间,所以,在第二时刻启动计时器开始音视频通话计时,并利用自身的音视频单元输出接收到的音视频数据包。这样由于开始音视频通话计时时,自身的音视频单元启动成功且已经接收到第一终端的音视频数据包,在开始计时时,用户就可以进行正常的音视频通话,不存在时间差,进而能够通过终端界面上的时间有效正确的感知到音视频通话的实际状态。
在其他实施例中,如果第一时刻和第二时刻至少有一个不在预设的等待时间段内,那么在第六时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。第六时刻为第五时刻加上预设等待时长得到的。也就是说,如果在预设时间段内,没有接收到第一终端发送的第一个音视频数据包和/或没有接收到自身的音视频单元启动成功的通知消息,那么在第六时刻开始计时,以避免正常的音视频通话。
本发明实施例中,首先接收音视频通话指令,响应所述音视频通话指令向第一终端发送音视频通话请求;再确定接收音视频数据包的第一时刻,所述音视频数据包为所述第一终端为接受所述音视频通话请求而发送的,并确定接收用于表明启动成功的通知消息的第二时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;最后确定所述第一时刻与所述第二时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,并在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包,这样,能够保证在接收到第一个来自第一终端发送的数据包并且自身的音视频单元启动成功两个事件全部完成的时候,再启动计时器开始计时并输出音视频数据包,使得在通话界面开始计时时,能够正常进行音视频通话,进而提升了用户体验。
基于前述的实施例,本发明实施例再提供一种音视频通话方法,图3为本发明实施例提供的又一种音视频通话方法的实现流程示意图,如图3所示,所述方法包括以下步骤:
步骤s301,第二终端接收音视频通话指令,响应所述音视频通话指令向第一终端发送音视频通话请求。
步骤s302,所述第二终端向所述第一终端发送音视频通话请求或接收音视频通话指令时,初始化自身的音视频单元。
在本实施例中,初始化自身的音视频单元包括:获取所述音视频单元的配置参数,其中,所述配置参数至少包括音视频单元的编码格式、比特率、采样率;获取所述音视频单元的标识信息和配置权限;根据所述音视频单元的标识信息将所述配置参数发送给所述音视频单元。
在本实施例中,当完成了初始化自身的音视频单元之后,会给自身的音视频单元添加一个不可用标识,此时其他的业务不能占用该音视频单元,这样能够避免在第一终端发送了接收音视频通话请求之后,该音视频单元被其他业务占用,导致音视频通话失败。
在一些技术中,当第二终端请求与第一终端进行音视频通话时,是在第二终端接收到第一终端发送的接听音视频通话的响应之后,才开始初始化并启动自身的音视频单元。而在本实施例中,在第二终端接收到用户发出的音视频通话指令或者向第一终端发送音视频通话请求时就开始初始化自身的音视频单元,这样,在接收到第一终端发送的接听音视频通话的响应之后只需要执行启动音视频单元的步骤,由于相对于启动音视频单元的步骤来说,初始化音视频单元的步骤耗时更长,占用的系统资源更多,那么在第二终端向所述第一终端发送音视频通话请求或接收音视频通话指令时,就初始化自身的音视频单元,这样在接收到第一终端接听音视频通话响应之后可以在很大程度上减小通话接通后系统资源的占用,并提高通话连通速度。
步骤s303,所述第二终端接收音视频通话响应,响应所述音视频通话响应启动自身的音视频单元。
这里,所述音视频通话响应为第一终端接听音视频通话而触发的。
在本实施例中,启动自身的音视频单元包括:向所述自身的音视频单元发送启动指令,所述启动指令用于通知所述音视频单元开始采集音视频数据包,启动音频的前处理模块和后处理模块,其中,所述前处理模块和后处理模块用于对接收到的音频数据包进行噪声抵消、回音消除等操作。
步骤s304,所述第二终端确定接收到自身的音视频单元启动成功的通知消息的第二时刻。
这里,当自身的音视频单元启动成功后,会向第二终端发送一个启动成功的通知消息,第二终端记录接收到该通知消息的时刻,并将该时刻确定为第二时刻。
步骤s305,所述第二终端判断自身和所述第一终端之间的音视频通话连接是否建立成功。
在本实施例中,当所述第二终端接收到表征音视频通话连接的数据包时,则表明第一终端和第二终端之间的音视频通话连接建立成功。
如果自身和第一终端之间的音视频通话连接建立成功,则进入步骤s306;如果自身和第一终端之间的音视频通话连接建立失败,则进入步骤s314。
步骤s306,所述第二终端确定两者之间的音视频通话连接建立成功的第五时刻。
步骤s307,所述第二终端根据所述第五时刻和预设的等待时长确定等待时间段。
这里,等待的时间段是从第五时刻开始到第五时刻加上预设的等待时长为止。
步骤s308,所述第二终端确定接收第一个音视频数据包的第一时刻。
这里,所述第一个音视频数据包为所述第一终端为接受所述音视频通话请求而发送的,也就是说第一个音视频数据包为第一终端接听音视频通话后发出的第一个数据包,往往第一个数据包中携带的语音为“喂”、“hello”等问候语。
步骤s309,所述第二终端确定所述第一时刻与所述第二时刻之中后发生的时刻。
步骤s310,所述第二终端判断所述后发生的时刻是否在预设的等待时间段内。
这里,判断所述后发生的时刻是否在预设的等待时间段内也就是判断在预设的等待时间段内是否接收到自身的音视频单元启动成功的通知消息并且接收到第一个音视频数据包;如果后发生的时刻在预设的等待时间段内,那么就说明在预设的等待时间段内接收到了自身的音视频单元启动成功的通知消息并且也接收到了第一个音视频数据包,此时进入步骤s311;如果后发生的时刻不在预设的等待时间段内,那么说明启动成功的消息或者第一个音视频数据包至少有一个在预设的等待时间段内是没有接收到的,此时进入步骤s312。
步骤s311,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
步骤s312,在第六时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
这里,所述第六时刻为所述第三时刻加上所述等待时长得到的。
步骤s313,所述第二终端判断是否接收到结束所述音视频通话的指令。
这里,结束所述音视频通话的指令可以是第二终端接收到用户在自身的触控屏幕上发出的关断所述音视频通话的触控操作而生成的指令;结束所述音视频通话的指令还可以是接收到第一终端发送的结束所述音视频通话的指令。
步骤s314,结束所述视频通话。
在本发明其他实施例中,可以不执行步骤s302和步骤s303,而是执行步骤s302’、步骤s303’和步骤s304’:
步骤s302’,所述第二终端向所述第一终端发送音视频通话请求或接收音视频通话指令时,确定自身的铃声模式;
步骤s303’,如果自身的铃声模式为静音或振动,所述第二终端初始化并启动自身的音视频单元。
步骤s304’,所述第二终端接收所述第一终端发送的音视频通话响应。
在步骤s302’至步骤s304’的实施例中,如果所述第二终端自身的铃声模式为静音或者振动,那么在进行音视频通话呼叫的过程中不需要播放铃声,就可以在所述第二终端在向所述第一终端发送音视频通话请求或接收音视频通话指令时且在接收到第一终端发送的音视频通话响应之前进行初始化并启动自身的音视频单元的步骤,这样,在接收到第一终端接听音视频通话的响应时,往往自身的音视频单元已经启动成功,随时可以接收第一终端发送的音视频数据包,可以提高接通速度。
在本实施例中,首先第二终端接收音视频通话指令,响应所述音视频通话指令向第一终端发送音视频通话请求并在向所述第一终端发送音视频通话请求或接收音视频通话指令时,初始化自身的音视频单元,当第二终端接收到第一终端的音视频通话响应后,响应所述音视频通话响应启动自身的音视频单元;然后所述第二终端确定接收到自身的音视频单元启动成功的通知消息的第二时刻,并在自身和所述第一终端之间的音视频通话连接建立成功的前提下确定所述音视频通话连接建立成功的第五时刻;再根据所述第五时刻和预设的等待时长确定等待时间段;所述第二终端确定接收第一个音视频数据包的第一时刻;所述第二终端确定所述第一时刻与所述第二时刻之中后发生的时刻;如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包,如果所述后发生的时候不在预设的等待时间段内,在第六时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。这样,相比于现有技术,将初始化自身的音视频单元的步骤提前,能够降低通话连通后系统资源的占用率,还能够提高连通速度;并且能够保证在接收到第一个来自第一终端发送的数据包并且自身的音视频单元启动成功两个事件全部完成的时候,再启动计时器开始计时并输出音视频数据包,使得在通话界面开始计时时,能够正常进行音视频通话,进而提升了用户体验。
基于前述的实施例,本发明实施例再提供一种音视频通话方法,所述方法包括以下步骤:
步骤1,第一终端接收第二终端发送的音视频通话请求,并在接收到所述第二终端发送的音视频通话请求时,初始化自身的音视频单元。
在本实施例中,在第一终端接收到音视频通话请求之后,会进入响铃状态,并如图4所示的界面上显示401“接听”按钮和402“挂断”按钮,如果第一终端接收到用户在“接听”按钮的触控区域发出的接听音视频通话的指令后,会向第二终端发送接受音视频通话请求的响应;如果第一终端接收到用户在“挂断”按钮的触控区域发出的拒绝接听音视频通话的指令后,会向第二终端发送拒绝音视频通话请求的响应;如果第一终端在一定的时间段内没有接收到用户的任何操作,会向第二终端发送无人接听的响应。
步骤2,如果所述第一终端接收到接听音视频通话指令,响应所述接听音视频通话指令向所述第二终端发送接听音视频通话响应。
这里,图5为本发明实施例第一终端接收到接听音视频通话指令后的界面示意图,如果第一终端接收到接听音视频通话指令后,如图5所示,会在第一终端的界面上显示501正在连接的提示信息。
在本发明其他实施例中,如果所述第一终端接收到拒绝音视频通话指令,所述第一终端响应所述拒绝音视频通话指令,向第二终端发送拒绝音视频通话响应,并结束该音视频通话。如果所述第一终端没有接收到用户的操作,向第二终端发送无人接听响应,并结束该音视频通话。
步骤3,所述第一终端启动自身的音视频单元。
步骤4,所述第一终端确定接收到自身的音视频单元启动成功的通知消息的第四时刻。
步骤5,所述第一终端判断自身与第二终端之间的音视频通话连接是否建立成功。
这里,如果自身与第二终端之间的音视频通话连接建立成功,则进入步骤6;如果自身与第二终端之间的音视频通话连接建立失败,则进入步骤13。
步骤6,所述第一终端确定所述音视频通话连接建立成功的第五时刻。
步骤7,所述第一终端根据所述第五时刻和预设的等待时长确定预设的等待时段。
步骤8,所述第一终端确定接收第一个音视频数据包的第三时刻。
这里,所述第一个音视频数据包为所述第二终端接收到音视频通话响应而发送的,所述音视频通话响应为自身响应所述音视频通话请求而发送的。
步骤9,所述第一终端确定所述第三时刻与所述第四时刻之中后发生的时刻。
步骤10,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
步骤11,如果所述后发生的时刻不在预设的等待时间段内,在第六时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
这里,第六时刻为所述第五时刻加上所述等待时长得到的时刻。
图6为本发明实施例第一终端开始计时的场景示意图,如图6所示,当在预设的等待时间段内接收到启动成功的通知消息并且接收到第一个音视频数据包时,开始计时,在第一终端的界面601上显示音视频通话的计时时长。
步骤12,所述第一终端判断是否接收到结束音视频通话的指令。
这里,如果所述第一终端接收到结束音视频通话的指令,进入步骤13;如果所述第一终端没有接收到结束音视频通话的指令,继续与第二终端的音视频通话。
步骤13,所述第一终端结束与所述第二终端之间的音视频通话。
在本发明其他实施例中,在步骤13之后,所述方法还包括:判断自身的音视频单元的状态是否为启动;如果自身的音视频单元的状态为启动,则关闭自身的音视频单元;如果自身的音视频单元的状态不为启动,则结束流程。
在本发明其他实施例中,可以不执行步骤1、2和3,而是执行步骤1’、2’和3’:
步骤1’,第一终端接收第二终端发送的音视频通话请求,并在接收到所述第二终端发送的音视频通话请求时,确定自身的铃声模式;
步骤2’,如果自身的铃声模式为静音或振动,第一终端初始化并启动自身的音视频单元;
步骤3’,如果所述第一终端接收到接听音视频通话指令,响应所述接听音视频通话指令向所述第二终端发送接听音视频通话响应。
需要说明的是,本实施例中与其它实施例中相同步骤或概念的解释可以参考其它实施例中的描述。
本实施例中,在接收到音视频通话请求时就进行音视频单元的初始化,将初始化自身的音视频单元的步骤提前,能够降低通话连通后系统资源的占用率,还能够提高连通速度;并且能够保证在接收到第一个来自第一终端发送的数据包并且自身的音视频单元启动成功两个事件全部完成的时候,再启动计时器开始计时并输出音视频数据包,使得在通话界面开始计时时,能够正常进行音视频通话,进而提升了用户体验。
为了更好的理解本发明实施例,先对现有的音视频通话方法进行说明,以更清晰明了的理解本发明实施例提供的音视频通话方法的技术效果。
一次正常的会话一般是要经过接受(发起)呼叫、正在连接、开始计时的三个步骤的。图7为本发明实施例现有的音视频通话方法的实现流程示意图,如图7所示,所述方法包括以下步骤:
步骤s701,自身发起音视频通话或者接收到对方的音视频通话请求。
步骤s702,判断对方是否接受该音视频通话请求或者判断是否接收到用户接听该音视频通话的操作指令。
这里,如果在步骤s701中,是由自身发起的音视频通话,那么如果对方接受了该音视频通话请求(也就是说,对方接听了该音视频通话),则进入步骤s703;如果对方在工作或者不方便接听该音视频通话时,拒绝了该音视频通话请求(也就是说,对方按了关断键,拒绝了该音视频通话)或者对方没有接听该音视频通话(也就是说在响铃一段时间后,对方无应答),则进入步骤s708。
如果在步骤s701中,自身为被叫方,接收到对方(也就是主叫方)的音视频通话请求,那么如果接收到用户接听该音视频通话的操作指令,进入步骤s703;如果没有到用户接听高音视频通话的操作指令,进入步骤s708。
步骤s703,初始化并启动自身的音视频设备。
步骤s704,判断音视频通话连接是否建立成功。
这里,如果音视频通话连接建立成功,进入步骤s705;如果在建立音视频通话连接的过程中,双方中的任一方的网络信道质量不好,或者双方中的任一方断开了网络连接,都会导致音视频通话连接建立失败,此时进入步骤s708。
步骤s705,启动第一计时器开始计时,等待预设时长后停止计时。
这里,在音视频通话连接建立成功后,双方都会等待一定的时长,比如是2s,在2s之后才会开始音视频通话,并对音视频通话进行计时。
步骤s706,与对方进行音视频通话,并启动计时器开始对音视频通话进行计时。
步骤s707,判断是否接收到对方挂断该视频通话的通知消息或者判断是否接收到自身的用户发出的挂断该视频通话的操作指令。
这里,如果接收到对方挂断该视频通话的通知消息或者接收到自身的用户发出的挂断该视频通话的操作指令,进入步骤s708;如果没有接收到对方挂断该视频通话的通知消息或者没有接收到自身的用户发出的挂断该视频通话的操作指令,则继续进行音视频通话。
步骤s708,结束该音视频通话。
这里,如果是在执行步骤s702时,由于对方拒绝了该音视频通话请求或者对方没有接听该音视频通话而执行步骤s708,那么此时只要结束该音视频通话即可;如果是在执行步骤s704,由于音视频通话连接没有建立成功而执行步骤s708;或者是在执行步骤s707,由于音视频通话中的双方的任一方挂断了该音视频通话而执行步骤s708,此时音视频设备是启动状态,所以还需要将音视频设备关闭,并结束该音视频通话。
在现有的音视频通话方法中,需要在音视频通话连接建立成功后强制等待一定的时长,而在等待的过程中,可能自身的音视频设备已启动完毕,且对方发来了音视频数据包,但是在界面上还是正在连接的状态,用户会误以为没有与对方接通,而错过了对方的开始的通话内容。
基于此,本发明实施例提供一种音视频通话方法,图8为本发明实施例提供的又一种音视频通话方法的实现流程示意图,如图8所示,所述方法包括以下步骤:
步骤s801,自身发起音视频通话或者接收到对方的音视频通话请求。
步骤s802,初始化自身的音视频设备。
步骤s803,判断对方是否接受该音视频通话请求或者判断是否接收到用户接听该音视频通话的操作指令。
这里,如果在步骤s801中,是由自身发起的音视频通话,那么如果对方接受了该音视频通话请求(也就是说,对方接听了该音视频通话),则进入步骤s804;如果对方在工作或者不方便接听该音视频通话时,拒绝了该音视频通话请求(也就是说,对方按了关断键,拒绝了该音视频通话)或者对方没有接听该音视频通话(也就是说在响铃一段时间后,对方无应答),则进入步骤s810。
如果在步骤s801中,自身为被叫方,接收到对方(也就是主叫方)的音视频通话请求,那么如果接收到用户接听该音视频通话的操作指令,进入步骤s804;如果没有到用户接听高音视频通话的操作指令,进入步骤s810。
步骤s804,启动自身的音视频设备。
步骤s805,判断音视频通话连接是否建立成功。
这里,如果音视频通话连接建立成功,进入步骤s806;如果在建立音视频通话连接的过程中,双方中的任一方的网络信道质量不好,或者双方中的任一方断开了网络连接,都会导致音视频通话连接建立失败,此时进入步骤s810。
步骤s806,启动第一计时器开始计时,判断在预设时长内,是否接收到音频数据包并且接收到音视频设备启动成功的通知消息。
这里,如果在预设时长内,接收到音视频数据包并且接收到音视频设备启动成功的通知消息,那说明此时自身的音视频设备已经可以采集音视频数据包,并且也有音视频数据到达,可以开始进行音视频通话并进行通话计时,此时进入步骤s808。如果在预设时长内没有接收到音视频数据包和音视频设备启动成功的通知消息,进入步骤s807。
步骤s807,等待计时时长达到预设时长。
步骤s808,与对方进行音视频通话,并启动计时器开始对音视频通话进行计时。
步骤s809,判断是否接收到对方挂断该视频通话的通知消息或者判断是否接收到自身的用户发出的挂断该视频通话的操作指令。
这里,如果接收到对方挂断该视频通话的通知消息或者接收到自身的用户发出的挂断该视频通话的操作指令,进入步骤s810;如果没有接收到对方挂断该视频通话的通知消息或者没有接收到自身的用户发出的挂断该视频通话的操作指令,则继续进行音视频通话。
步骤s810,结束该音视频通话。
这里,如果是在执行步骤s803时,由于对方拒绝了该音视频通话请求或者对方没有接听该音视频通话而执行步骤s810,那么此时只要结束该音视频通话即可;如果是在执行步骤s805,由于音视频通话连接没有建立成功而执行步骤s810;或者是在执行步骤s809,由于音视频通话中的双方的任一方挂断了该音视频通话而执行步骤s810,此时音视频设备是启动状态,所以还需要将音视频设备关闭,并结束该音视频通话。
需要说明的是,本发明实施例提供的音视频通话方法适用机型为iphone4及以上机型、部分安卓(android)机型。因为android部分机型分离音频设备的init步骤和start步骤会存在无声问题,所以本发明实施例提供的音视频通话方法会通过后台云配置,不对这些机型应用此方法。
但是,由于android机型数目很多,不同机型的音频设备和rom的配置信息也不尽相同,云服务器并不能获取所有机型的音视频设备信息和rom的信息,所以云服务器也不能确定某一个机型是否可以应用本发明实施例提供的音视频通话方法,当某一机型的终端中下载并安装了开启本发明实施例提供的音视频通话方法的功能的应用时,如果在音视频通话时出现无声的问题时,会向云服务器上报一个错误消息,用于通知云服务器该机型的终端在音视频通话时采用本发明实施例提供的音视频通话方法会出现无声的问题,此时云服务器再接收到与该机型相同的终端下载此类应用的请求时,会将本发明实施例提供的音视频通话方法的功能关闭。
在本发明实施例提供的音视频通话方法中,将音频设备的初始化(init)与启动(start)步骤拆开,将init步骤提前,在发起通话或者接收通话请求的同时就先init音频设备,在检测到对方接受请求或自身接听通话的时候,直接进行start操作,减少start步骤的时间消耗。这样,能够减小通话连通后系统资源占用,进而提高连通速度。另外,在本发明实施例提供的音视频通话方法中,在监听本地音频设备启动完毕以及收到对方第一个音频包的事件,二者全部完成以后,开始进行音视频通话并开始界面计时,这样不需要强制等待预设时长,在具备开始音视频通话条件的时候,即由正在连接的状态转换为通话计时状态,可以保证用户可以通过界面上的时间有效的感知到通话的实际状态,并且在本发明实施例中也带有延时预设时长(2s)的保护,防止某一事件没有收到造成通话失败,进一步提升了用户体验。
本发明实施例再提供一种音视频通话装置,图9为本发明实施例音视频通话装置的组成结构示意图,如图9所示,该装置900包括:第一接收模块901、第一确定模块902、第二确定模块903和第一计时模块904,其中:
所述第一接收模块901,用于接收音视频通话指令,响应所述音视频通话指令向第一终端发送音视频通话请求;
所述第一确定模块902,用于确定接收第一个音视频数据包的第一时刻,所述第一个音视频数据包为所述第一终端为接受所述音视频通话请求而发送的;
所述第二确定模块903,用于确定接收用于表明启动成功的通知消息的第二时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;
所述第一计时模块904,用于确定所述第一时刻与所述第二时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
在本发明其他实施例中,所述装置900还包括:
第一初始化模块,用于向所述第一终端发送音视频通话请求或接收音视频通话指令时,初始化自身的音视频单元;
第一启动模块,用于如果接收到所述第一终端接受所述视频通话请求而发送的音视频通话响应,启动自身的音视频单元。
在本发明其他实施例中,所述第一初始化模块进一步包括:
第一获取单元,用于获取所述音视频单元的配置参数,其中,所述配置参数至少包括音视频单元的编码格式、比特率、采样率;
第二获取单元,用于获取所述音视频单元的标识信息和配置权限;
第一发送单元,用于根据所述音视频单元的标识信息将所述配置参数发送给所述音视频单元。
所述第一启动模块进一步包括:
第二发送单元,用于如果接收到所述第一终端发送的音视频通话响应后,向所述自身的音视频单元发送启动指令,所述启动指令用于通知所述音视频单元开始采集音视频数据包。
在本发明其他实施例中,所述装置还包括:第七确定模块,用于向所述第一终端发送音视频通话请求或接收音视频通话指令时,确定自身的铃声模式;第二启动模块,用于如果自身的铃声模式为静音或振动,初始化并启动自身的音视频单元。
在本发明其他实施例中,所述装置还包括:
第五确定模块,用于确定自身与第一终端之间的音视频通话连接建立成功的第五时刻;
第六确定模块,用于根据所述第五时刻和预设的等待时长确定预设的等待时间段;
第三计时模块,用于如果所述第一时刻和/或第二时刻不在预设的等待时间段内,在第六时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包,其中,所述第六时刻为所述第三时刻加上所述等待时长得到的。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
基于前述的实施例,本发明实施例提供一种音视频通话装置,所述装置包括:第二接收模块、第三确定模块、第四确定模块和第二计时模块,其中:
所述第二接收模块,用于接收第二终端发送的音视频通话请求;
所述第三确定模块,用于确定接收第一个音视频数据包的第三时刻,所述第一个音视频数据包为所述第二终端接收到音视频通话响应而发送的,所述音视频通话响应为自身响应所述音视频通话请求而发送的;
所述第四确定模块,用于确定接收用于表明启动成功的通知消息的第四时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;
所述第二计时模块,用于确定所述第三时刻与所述第四时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
本发明实施例提供一种音视频通话设备,图10为本发明实施例音视频通话设备的组成结构示意图,如图10所示,该音视频通话设备1000可以包括:至少一个处理器1001、至少一个通信总线1002、用户接口1003、至少一个外部通信接口1004和存储器1005。其中,通信总线1002配置为实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏,外部通信接口1004可以包括标准的有线接口和无线接口。其中所述处理器1001,配置为:
接收音视频通话指令,响应所述音视频通话指令向第一终端发送音视频通话请求;
确定接收第一个音视频数据包的第一时刻,所述第一个音视频数据包为所述第一终端为接受所述音视频通话请求而发送的;
确定接收用于表明启动成功的通知消息的第二时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;
确定所述第一时刻与所述第二时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
本发明实施例中,如果以软件功能模块的形式实现上述的音视频通话方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,readonlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
本发明实施例提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令用于执行本发明实施例提供的音视频通话方法。
基于前述的实施例,本发明实施例提供一种音视频通话设备,该音视频通话设备可以包括:至少一个处理器、至少一个通信总线、用户接口、至少一个外部通信接口和存储器。其中,通信总线配置为实现这些组件之间的连接通信。其中,用户接口可以包括显示屏,外部通信接口可以包括标准的有线接口和无线接口。其中所述处理器,配置为:
接收第二终端发送的音视频通话请求;
确定接收第一个音视频数据包的第三时刻,所述第一个音视频数据包为所述第二终端接收到音视频通话响应而发送的,所述音视频通话响应为自身响应所述音视频通话请求而发送的;
确定接收用于表明启动成功的通知消息的第四时刻,所述通知消息为自身的音视频单元为响应所述音视频通话请求而发送的;
确定所述第三时刻与所述第四时刻之中后发生的时刻,如果所述后发生的时刻在预设的等待时间段内,在所述后发生的时刻启动计时器开始计时并同时利用所述音视频单元输出所述音视频数据包。
本发明实施例再提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令用于执行本发明实施例提供的音视频通话方法。
以上音视频通话设备和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明音视频通话设备和存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。