具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
本申请实施例提供的音视频处理方法可以应用于任何需要将直播端的音视频数据实时传输到播放端的RTC系统。如图1所示,该RTC可以包括:直播端11、播放端12和服务器13。其中,直播端11可以采集音视频帧,将采集到的音视频帧编码为数据包,并将数据包发送到服务器13。服务器13可以在直播端11和播放端12之间转发数据包,服务器13可以支持多种转发模式,包括将一个直播端11的数据包转发给一个或多个播放端12,以及将多个直播端11的数据包转发给一个播放端12。播放端12可以接收服务器13发送的数据包,对数据包解码以得到音视频帧,并对得到的音视频帧进行播放。
需要说明的是,本申请并不对直播端在物理上的实现形态进行限定,例如,直播端11可以采用但不限于:具有采集功能的智能手机、平板电脑,台式电脑、触控屏幕、DV、摄像机等各种终端设备,本申请也不对播放端12在物理上的实现形态进行限定,例如,播放端12可以采用但不限于:手机、平板电脑,台式电脑、智能屏幕、互动电视等各种终端设备。
需要说明的是,图1中是以服务器13部署在内容分发网络(Content DeliveryNetwork,简称CDN)中为例,数据包可以经过多跳服务器13转发,即服务器13之间可以级联,以保证跨区域的服务质量要求。应理解,在其他实施例中服务器也可以不部署在CDN中。
需要说明的是,图1所示的RTC系统可以应用于各种需要进行音视频实时传输的场景,例如音视频直播场景、视频会议场景等。在RTC系统中采用推拉流方式进行音视频传输时,直播端11具体可以是推流端,播放端12具体可以是拉流端。
通常,如图2所示,拉流端通过操作系统选择的某个接入网络从服务器获取数据包,例如,在操作系统选择的接入网络是WiFi网络时,拉流端通过WiFi网络从服务器获取数据包,在操作系统选择的接入网络是4G网络时,拉流端通过4G网络从服务器获取数据包。由于拉流端是通过操作系统选择的某个接入网络来获取数据包,一旦该接入网络弱网或断网,拉流端通过该接入网络从服务器获取数据包就会出现数据包的时延较大、丢包率较高导致用户观看音视频的体验不佳的问题。
为了解决在接入网络弱网或断网时,会出现由于数据包的时延较大、丢包率较高导致用户观看音视频的体验不佳的技术问题,在本申请实施例中,对于直播端实时采集并上传的目标音视频,播放端通过至少两个可接入网络,从至少两个可接入网络各自的服务器分别获取一路目标音视频的数据包,由于播放端通过不同可接入网络到服务器之间的连接相互独立,因此即使某一接入网络弱网或断网导致与其对应的一路数据包中封装某个音视频数据的数据包丢失,但是与其他接入网络对应的其他路数据包中封装该音视频数据的数据包可以不丢失,使得在融合至少两路数据包对应的至少两路音视频数据进行目标音视频的播放时,即使某一接入网络弱网或断网导致与其对应的一路音视频数据中的某个音视频丢失,但是还是能够基于其他路音视频数据中的该音视频进行播放,从而能够在接入网络弱网或断网时向用户提供较好的体验质量。
另外,由于本申请实施例提供的音视频处理方法,仅涉及播放端的改动,而不涉及服务器的改动,因此能够避免播放端和服务器均需要改进所带来的兼容性问题。
此外,通过本申请实施例提供的音视频处理方法,当某一接入网络发生故障时,还能够通过其他接入网络保持音视频流量的获取,具有抵抗接入网络故障的能力,从而能够为播放端获取音视频流量传输提供更高的可靠性。
基于此,如图3所示,可以通过至少两个可接入网络向至少两个可接入网络各自的目标服务器分别发送获取请求,目标服务器用于转发直播端实时采集并上传的目标音视频,获取请求用于请求获取目标音视频,通过至少两个可接入网络,从至少两个可接入网络各自的目标服务器分别获取一路所述目标音视频的数据包,对获取到的至少两路数据包进行解码,得到至少两路音视频数据,融合至少两路音视频数据进行目标音视频的播放。
需要说明的是,图3中是以不同可接入网络的目标服务器是不同的服务器为例,可以理解的是,在其他场景中不同可接入网络的目标服务器也可以是相同的服务器。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突情况下,下述的实施例及实施例中的特征可以相互组合。
图4为本申请一实施例提供的音视频处理方法的流程示意图,本实施例提供的方法可以应用于图1中的播放端12。如图4所示,本实施例的方法可以包括:
步骤41,通过至少两个可接入网络向所述至少两个可接入网络各自的目标服务器分别发送获取请求,所述目标服务器用于对直播端实时采集并上传的目标音视频进行转发,所述获取请求用于请求获取所述目标音视频;
步骤42,通过所述至少两个可接入网络,从所述至少两个可接入网络各自的目标服务器分别获取一路所述目标音视频的数据包;
步骤43,对获取到的至少两路数据包进行解码,得到至少两路音视频数据;
步骤44,融合所述至少两路音视频数据进行所述目标音视频的播放。
本申请实施例中,可接入网络是指能够用于播放端12接入互联网(Internet)的任意类型网络,可接入网络包括但不限于有线网络、3G网络、4G网络、5G网络、WiFi网络等。可选的,可以为可接入网络区分主副,基于此,至少两个可接入网络具体可以包括主接入网络和副接入网络。
需要说明的是,关于主、副接入网络的区分可以灵活实现。可选的,可以基于流量开销将流量开销较小的接入网络作为主接入网络,将流量开销较大的接入网络作为副接入网络。例如,5G网络和WiFi网络中,WiFi网络可以作为主接入网络,5G网络可以作为副接入网络。又例如,4G网络和WiFi网络中,WiFi网络可以作为主接入网络,4G网络可以作为副接入网络。
或者,可选的,可以随机选择主接入网络和副接入网络。例如,移动4G网络和联通4G网络中,可以随机选择其中的一者作为主接入网络,另一者作为副接入网络。
本申请实施例中,向至少两个可接入网络各自的目标服务器分别发送获取请求的时机可以根据需求灵活实现。示例性的,可以在确定需要播放目标视频时,同时向至少两个接入网络各自的服务器发送获取请求,从而能够实现音视频播放中的首帧加速,以提升起播阶段的体验质量(quality of experience,简称QoE),首帧是指音视频播放的第一帧,首帧的到达时间是用户体验质量评价标准的重要部分。基于此,一个实施例中,步骤42具体可以包括:获取用户的播放指令,播放指令用于指示开始播放目标音视频;以及,响应于播放指令,通过至少两个可接入网络同时向至少两个可接入网络各自的目标服务器分别发送获取请求。
应理解,如果播放端的可接入网络的数量为多个,则可以支持通过至少两个可接入网络,从至少两个可接入网络各自的服务器分别获取目标音视频的数据包的多接入网络获取方式;如果播放端的可接入网络的数量仅为一个,则只能支持通过一个可接入网络获取目标音视频的数据包的单接入获取方式。
以播放端的接入网络被区分为主接入网络和副接入网络为例,如图5所示,可以检测主接入网络和副接入网络的状态,在主接入网络和副接入网络的状态均为可接入时,可以通过主接入网络和副接入网络获取数据包,即既可以通过主接入网络从主接入网络的目标服务器获取数据包,也可以通过副接入网络从副接入网络的目标服务器获取数据包,本申请实施例中将通过主接入网络和副接入网络获取数据包的状态可以记为增强状态;在主接入网络的状态为可接入,而副接入网络的状态为不可接入时,可以通过主接入网络获取数据包,而无法通过副接入网络获取数据包,本申请实施例中将通过主接入网络获取数据包而不通过副接入网络获取数据包的状态可以记为主路状态;在主接入网络的状态为不可接入,而副接入网络的状态为可接入时,可以通过副接入网络获取数据包,而无法通过主接入网络获取数据包,本申请实施例中将通过副接入网络获取数据包而不通过主接入网络获取数据包的状态可以记为副路状态。
可选的,在步骤41之前可以判断是否允许播放端同时使用多个可接入网络,如果是则可以采用本申请提出的多接入网络获取方式,如果否则可以采用相关技术中的单接入网络获取方式。
在采用多接入网络获取流程的过程中,可以先获取至少两个可接入网络各自的目标服务器的IP地址,需要说明的是,不同可接入网络的目标服务器可能是同一服务器也可能是不同服务器。示例性的,可以通过域名解析的方式来获取目标服务器的IP地址,例如可以通过至少两个可接入网络向至少两个可接入网络各自的域名服务器发送DNS请求,DNS请求中可以包括需要获取的目标音视频的URL,通过至少两个可接入网络从至少两个可接入网络各自的域名服务器,分别获取至少两个可接入网络各自的目标服务器的IP地址。以至少两个可接入网络包括5G网络和WiFi网络为例,可以通过5G网络向5G网络的域名服务器发送DNS请求,并通过5G网络从5G网络的域名服务器获取5G网络的目标服务器的IP地址,还可以通过WiFi网络向WiFi网络的域名服务器也发送DNS请求,并通过WiFi网络从WiFi网络的域名服务器获取WiFi网络的目标服务器的IP地址。
在获取到至少两个可接入网络各自的目标服务器的IP地址之后,可以根据获取到的目标服务器的IP地址执行步骤42。以至少两个可接入网络包括5G网络和WiFi网络为例,可以通过5G网络并根据5G网络的目标服务器的IP地址,向5G网络的目标服务器发送获取请求,还可以通过WiFi网络并根据WiFi网络的目标服务器的IP地址,向WiFi网络的目标服务器也发送获取请求。其中,获取请求中可以携带直播间标识,该直播间标识所标识直播间的视频即为目标音视频。
应理解,在任一可接入网络的目标服务器接收到播放端12发送的获取请求之后,该可接入网络的目标服务器可以向播放端12返回与其发送的获取请求对应的数据包,即目标音视频的数据包。由此,播放端12可以通过至少两个可接入网络,从至少两个可接入网络各自的目标服务器分别获取一路目标音视频的数据包。以至少两个可接入网络包括5G网络和WiFi网络为例,可以通过5G网络从5G网络的目标服务器获取一路目标音视频的数据包(可以记为5G路数据包),还可以通过WiFi网络从WiFi网络的目标服务器获取另一路目标音视频的数据包(可以记为WiFi路数据包)。
本申请实施例中,对于获取到的至少两路数据包可以进行解码,得到至少两路音视频数据。以至少两个可接入网络包括5G网络和WiFi网络为例,可以对5G路数据包进行解码,得到一路音视频数据(可以记为5G路音视频数据),还可以对WiFi路数据包进行解码,得到另一路音视频数据(可以记为WiFi路音视频数据)。需要说明的是,关于对数据包进行解码得到音视频数据的实现方式可以参考相关技术中的相关描述,在此不再赘述。
本申请实施例中,针对得到的至少两路音视频数据,可以融合至少两路音视频数据来进行目标音视频的播放,即在进行目标音视频播放时所播放的音视频帧的数据,可以是来源于至少两路音视频数据。其中,音视频帧与数据包的关系可以为一个音视频帧被编码在一个数据包中,或者,一个音视频帧被拆分编码在多个数据包中。
针对于一个音视频帧被编码在一个数据包中的情况,可以使用至少两路音视频数据中的一路中对应该音视频帧的音视频数据进行播放。基于此,一个实施例中,步骤44具体可以包括:在一个音视频帧被编码在一个数据包中时,使用所述至少两路音视频数据的属于同一音视频帧的音视频数据中,最早解码得到的音视频数据进行播放。例如,假设5G网络的目标服务器将某一音视频帧x编码在数据包a中,WiFi网络的目标服务器将该音视频帧x编码在数据包b中,则如果获取到数据包a而未获取到数据包b,或者先获取到数据包a后获取到数据包b,则可以使用解码数据包a得到的该音视频x进行播放。
针对于一个音视频帧被拆分编码在多个数据包中的情况,可以通过融合至少两路音视频数据中对应该音视频帧的音视频数据进行播放。基于此,一个实施例中,步骤44具体可以包括:在一个音视频帧被拆分编码在多个数据包中时,基于所述至少两路音视频数据的属于同一音视频帧的音视频数据进行帧组装,得到音视频帧,并对所述音视频帧进行播放。例如,假设5G网络的目标服务器将某一音视频帧x拆分编码在数据包a1和数据包a2中,WiFi网络的目标服务器将该音视频帧x拆分编码在数据包b1和数据包b2中,且数据包a1中音视频数据的内容与数据包b1相同,数据包a2中音视频数据的内容与数据包b2相同中,如果获取到数据包a1和数据包b2,则可以基于解码数据包a1和解码数据包b2得到的音视频数据进行帧组装,得到该音视频帧x,并对该音视频帧x进行播放。
在进行帧组装时,音视频帧的时间戳以及数据包的序列号,可以用于表征属于同一音视频帧的相同内容及不同内容的音视频数据。在至少两路数据包的序列号一致时,至少两路音视频数据中时间戳相同且对应的序列号相同的音视频数据,可以是属于同一音视频帧的内容相同的音视频数据,至少两路音视频数据中时间戳相同且对应的序列号不同的音视频数据,是属于同一音视频帧的内容不同的音视频数据。在此情况下,所述基于所述至少两路音视频数据的属于同一音视频帧的音视频数据进行帧组装,得到音视频帧,包括:在至少两路音视频数据中至少两个音视频数据的时间戳相同,且该至少两个音视频数据对应的至少两个数据包的序列号连续时,将该至少两个音视频数据组装成视频帧。
例如,假设5G网络的目标服务器将时间戳为第1秒的音视频帧x拆分编码在序列号为1的数据包a1和序列号为2的数据包a2中。WiFi网络的目标服务器将该音视频帧x拆分编码在序列号为1的数据包b1和序列号为2的数据包b2中,则如果获取到数据包a1和数据包b2,由于数据包a1和数据包b2中音视频数据的时间戳均为第1秒,且数据包a1和数据包b2的序列号连续,因此可以基于解码数据包a1和解码数据包b2得到的音视频数据进行帧组装,得到该音视频帧x。
在实际应用中,由于不同目标服务器对于数据包是独立编号的,因此可能出现至少两路数据包的序列号不一致的情况,即相同的音视频数据可以被编码在序列号不同的不同路数据包中。为了使得来自不同目标服务器的至少两路数据包的序列号一致,本申请实施例提供的方法还可以包括:确定通过副接入网络获取到的副路数据包与通过主接入网络获取到的主路数据包之间的序列号偏移量,并根据序列号偏移量修改副路数据包的序列号,以便副路数据包的序列号与主路数据包的序列号一致。
需要说明的是,对于音频而言,一帧数据可以有一个时间戳,可以只需一个数据包进行传输,数据包的序列号和音视频帧的时间戳之间可以存在一一对应关系。对于视频而言,一帧数据可以有一个时间戳,可能需要多个数据包进行传输,数据包的序列号和音视频帧的时间戳之间可以存在多对一关系。
考虑到带有帧结尾标记的数据包的序列号和音视频帧的时间戳之间可以一一对应,据此可以根据带有帧结尾标记的数据包确定序列号偏移量,从而有利于简化实现。基于此,确定序列号偏移量具体可以包括:针对于获取到的目标主路数据包,记录目标主路数据包中音视频数据的时间戳与目标主路数据包的序列号的对应关系,目标主路数据包是带有帧结束标记的主路数据包;从对应关系中查找与目标副路数据包中音视频数据的时间戳对应的序列号,目标副路数据包是带有帧结束标记的副路数据包;以及,根据查找到的与目标副路数据包中音视频数据的时间戳对应的目标序列号,以及目标副路数据包的序列号,计算序列号偏移量。
例如,假设一个音视频帧被编码在一个数据包中,且编码第1秒音视频帧的主路数据包c的序列号是1,编码第1秒音视频帧的副路数据包d的序列号是2,则可以确定序列号偏移量为1-2=-1,从而可以将副路数据包d的序列号由2修改为1。
又例如,假设一个音视频帧被编码在两个数据包中,且编码第1秒音视频帧的主路数据包c1和主路数据包c2的序列号分别是1和2,编码第1秒音视频帧的副路数据包d1和副路数据包d2的序列号分别是2和3,则可以确定序列号偏移量为2-3=-1,从而可以将副路数据包b1的序列号由2修改为1,并将副路数据包b2的序列号由3修改为2。
示例性的,参考图6,可以通过如下步骤61-步骤67将副路数据包的序列号与主路数据包的序列号修改为一致。
步骤61,将副接入网络标记为未完成同步。
其中,例如可以通过将预设的目标变量初始化为0,目标变量的值为0用于表示副接入网络未完成同步。
步骤62,针对当前的一个主路数据包,如果该主路数据包带有帧结束标记,则记录该主路数据包的时间戳与该主路数据包的序列号的对应关系。
其中,当前的一个主路数据包可以是当前获取到的一个主路数据包。
需要说明的是,图1中步骤62位于步骤61与步骤63之间仅为举例。
步骤63,针对当前的一个副路数据包,判断副接入网络是否已同步完成,如果是则执行步骤66,否则执行步骤64。
其中,当前的一个副路数据包可以是当前获取到的一个副路数据包,也可以是之前获取到的缓存在同步缓存中当前需要处理的一个副路数据包。
步骤64,判断该副数据包是否带有帧结束标记且该副路数据包的时间戳在对应关系中是否有记录,如果是则执行步骤65,否则执行步骤67。
步骤65,根据该副路数据包的时间戳在对应关系中对应的目标序列号,以及该副路数据包的时间戳计算得到序列号偏移量,并将副接入网络标记为已完成同步。
其中,例如可以通过将目标变量设置为1,实现将副接入网络标记为已完成同步,目标变量的值为1用于标识副接入网络已完成同步。
需要说明的是,在执行完步骤65之后可以进一步执行步骤66。
步骤66,根据序列号偏移量,修改该副路数据包的序列号。
步骤67,将该副路数据包放入同步缓存,并在到达特定时刻时,针对同步缓存中的数据包重新执行步骤63。
其中,例如可以以100ms为周期,针对同步缓存中的所有副路数据包重新执行步骤63,直至同步缓存中不存在副路数据包。
可选的,本申请实施例提供的方法还可以包括:在确定需要重传目标音视频的第一序列号的数据包时,根据第一序列号以及序列号偏移量,恢复得到第二序列号;通过副接入网络向副接入网络的目标服务器发送包括重传请求,重传请求用于请求重传第二序列号的数据包。从而实现了在对副路数据包的序列号进行修改之后,播放端12还能够向副接入网络的目标服务器请求重传数据包。
本申请实施例中,在通过至少两个可接入网络获取至少两路音视频数据的基础上,可以根据需要减少获取目标音视频所使用的可接入网络的数量,从而有利于节省流量消耗。应理解,减少获取目标音视频所使用的可接入网络的数量,目标音视频的数据包的路数可以相应减少,解码数据包得到的音视频数据的路数可以相应减少,进行目标音视频的播放所能够使用的音视频数据的路数也可以相应减少。
可选的,在开始播放目标音视频的一段时间后,可以停止通过副接入网络获取目标音视频的数据包,从而能够实现在起播阶段向用户提供较好的体验质量。基于此,在前述响应于播放指令向至少两个可接入网络各自的目标服务器分别发送获取请求之后,本申请实施例提供的方法还可以包括:在当前时刻与目标历史时刻之间的时长达到第一时长阈值时,通过副接入网络向副接入网络的目标服务器发送停止获取请求,停止获取请求用于请求停止获取目标音视频的数据,目标历史时刻为同时向至少两个可接入网络各自的目标服务器分别发送获取请求的时刻。其中,第一时长阈值例如可以为5秒。
应理解,在播放端通过副接入网络向副接入网络的目标服务器发送停止获取请求之后,副接入网络的目标服务器可以停止向播放端返回目标音视频的数据包,直播端可以停止通过副接入网络获取目标音视频的数据包,从而直播端可以由通过主接入网络和副接入网络均获取数据包的增强状态,变为通过主接入网络获取数据包而不通过副接入网络获取数据包的主路状态。
和/或,可选的,在主接入网络的网络质量较好时,可以停止通过副接入网络获取目标音视频的数据包,以避免不必要的流量开销,从而实现在确保向用户提供较好体验质量的同时,尽量控制流量开销。基于此,一个实施例中,前述向所述至少两个可接入网络各自的目标服务器分别发送获取请求之后,还包括:在确定主接入网络的网络质量满足第一网络质量要求的持续时长达到第二时长阈值时,通过副接入网络向副接入网络的目标服务器发送停止获取请求,停止获取请求用于请求停止获取目标音视频。从而直播端可以由通过主接入网络和副接入网络均获取数据包的增强状态,变为通过主接入网络获取数据包而不通过副接入网络获取数据包的主路状态,状态之间的切换可以如图7中的箭头1所示。
其中,第二时长阈值可以根据经验设置,应理解,第二时长阈值设置的越大,保持增强状态的时长可以越长,因此用户观看音视频的体验可以越好,但是流量开销会越大,第二时长阈值例如可以是10秒。
第一网络质量要求所涉及的指标可以包括服务质量(quality of service,简称QoS)指标和QoE指标,从而能够在主接入网络的QoS和QoE指标较好时停止通过副接入网络的获取数据包。示例性的,第一网络质量要求所涉及的指标可以包括接收速率、丢包率和往返时延。一个实施例中,网络质量满足第一网络质量要求具体可以包括:接收速率大于0,丢包率小于第一预设概率,以及,往返时延小于第一时延阈值。第一预设概率例如可以为10%,第一时延阈值例如可以是300ms。
在实际应用中,由于不同接入网络的服务质量不同,例如两个接入网络的延迟不同,丢包率不同或带宽不同,导致某一时刻播放端通过不同可接入网络已获取到的数据包中音视频数据的最新时间戳可能不同,应理解,在直播端向音视频帧打的时间戳不断增加时,时间戳越大可以表示时间戳越新,例如第2秒较第1秒要新。例如,在当前时刻,通过主接入网络获取到的数据包中音视频数据的时间戳是第13秒,而通过副接入网络获取到的数据包中音视频数据的时间戳是第14秒,通过主接入网络获取到的数据包中音视频数据的时间戳,比通过副接入网络获取到的数据包中音视频数据的时间戳慢1秒。虽然在进行音视频播放时可以缓存一个或多个音视频帧,但是在通过主接入网络获取到的数据包中音视频数据的时间戳,比通过副接入网络获取到的数据包中音视频数据的时间戳慢的过多时,如果直接停止通过副接入网络获取数据包,则可能出现由于需要等待主接入网络传入更新的数据包后才能继续播放,导致卡顿的问题。
为了解决这一问题,可选的,前述通过副接入网络向副接入网络的目标服务器发送停止获取请求,还可以包括:判断通过主接入网络获取到的主路数据包与通过副接入网络获取到的副路数据包的时间戳差异是否满足时间戳要求;如果是,则通过副接入网络向副接入网络的目标服务器发送停止获取请求;时间戳差异满足时间戳要求包括:主路数据包中音视频数据的最新时间戳大于副路数据包中音视频数据的最新时间戳,或者,副路数据包中音视频数据的最新时间戳与主路数据包中音视频数据的最新时间戳之差不超过第三时长阈值。其中,第三时长阈值例如可以为500ms。
以主接入网络为WiFi网络,副接入网络为4G网络为例,参考图8,可以通过如下步骤81-步骤83停止通过副接入网络获取数据包。
步骤81,分别获取WiFi路数据包和4G路数据包中音视频数据的最新时间戳。
步骤82,判断WiFi路数据包与4G路数据包中音视频数据的最新时间戳是否满足时间戳要求,如果是,则执行步骤83,如果不是,则可以返回步骤81执行。
其中,满足时间戳要求例如可以为WiFi路数据包中音视频数据的最新时间戳早于4G路数据包中音视频数据的最新时间戳,或者,WiFi路数据包中音视频数据的最新时间戳与4G路数据包中音视频数据的最新时间戳之差不超过500ms。
步骤83,通过4G网络向4G网络的目标服务器发送停止获取请求。
可选的,在直播端处于主路状态的情况下,在主接入网络的网络质量较差时,可以在通过主接入网络获取目标音视频的数据包的同时,也通过副接入网络获取,实现按序开启通过副接入网络的数据包获取,从而可以使用副接入网络补偿获取到的数据包的质量,保证用户体验质量,例如降低卡顿率和降低延迟等。基于此,一个实施例中,前述通过副接入网络向副接入网络的目标服务器发送停止获取请求之后,还可以包括:在确定主接入网络的网络质量不满足第二网络质量要求的持续时长达到第三时长阈值时,通过副接入网络向副接入网络的目标服务器发送获取请求。应理解,在播放端通过副接入网络向副接入网络的目标服务器发送获取请求之后,副接入网络的目标服务器可以向播放端返回与其发送的获取请求对应的数据包,直播端可以通过副接入网络获取目标音视频的数据包,从而直播端可以由通过主接入网络获取数据包而不通过副接入网络获取数据包的主路状态,变为通过主接入网络和副接入网络均获取数据包的增强状态,状态之间的切换可以如图7中的箭头2所示。
其中,第三时长阈值可以根据经验设置。应理解,第三时长阈值设置的越小,可以越及时的切换至增强状态,因此用户观看音视频的体验可以越好,但是流量开销会越大,第三时长阈值例如可以是300ms。
第二网络质量要求所涉及的指标可以包括QoS或QoE指标,从而能够在主接入网络的QoS或QoE指标出现恶化时通过副接入网络的获取数据包。示例性的,第二网络质量要求所涉及的指标可以包括卡顿率、接收速率、丢包率和往返时延。一个实施例中,网络质量不满足第二网络质量要求具体可以包括:卡顿率小于或等于第二预设概率,接收速率大于0,丢包率小于或等于第三预设概率,或者,往返时延小于或等于第二时延阈值。第二预设概率例如可以为10%,第三预设概率例如可以为30%,第二时延阈值例如可以是300ms。
可选的,在直播端处于主路状态的情况下,在主接入网络的状态由可接入变为不可接入时,可以通过副接入网络获取目标音视频的数据包,从而可以避免由于主接入网络不可用导致无法继续播放目标音视频的问题。基于此,一个实施例中,在前述通过副接入网络向副接入网络的目标服务器发送停止获取请求之后,还可以包括:在确定主接入网络变为不可接入时,通过副接入网络向副接入网络的目标服务器发送获取请求。应理解,在播放端通过副接入网络向副接入网络的目标服务器发送获取请求之后,副接入网络的目标服务器可以向播放端返回与其发送的获取请求对应的数据包,直播端可以通过副接入网络获取目标音视频的数据包,从而直播端可以由通过主接入网络获取数据包而不通过副接入网络获取数据包的主路状态,变为通过副接入网络获取数据包而不通过主接入网络获取数据包的副路状态,状态之间的切换可以如图7中的箭头3所示。
进一步可选的,在直播端处于副路状态的情况下,在主接入网络重新变为不可接入时,可以在通过副接入网络获取目标音视频的数据包的同时,也通过主接入网络获取,以便于后续可以平滑的切换至主路状态。基于此,一个实施例中,所述通过所述副接入网络向所述副接入网络的目标服务器发送所述获取请求之后,还可以包括:在确定主接入网络重新变为可接入时,通过主接入网络向主接入网络的目标服务器发送所述获取请求。应理解,在播放端通过主接入网络向主接入网络的目标服务器发送获取请求之后,主接入网络的目标服务器可以向播放端返回与其发送的获取请求对应的数据包,直播端可以通过主接入网络获取目标音视频的数据包,从而直播端可以由通过副接入网络获取数据包而不通过主接入网络获取数据包的副路状态,变为通过主接入网络和副接入网络均获取数据包的增强状态,状态之间的切换可以如图7中的箭头4所示。
另外,如图7中的箭头5所示,在直播端处于增强状态的情况下,在主接入网络重新变为不可接入时,由于无法继续通过主接入网络获取数据包,因此可以切换到副路状态。
本申请实施例提供的音视频处理方法,通过至少两个可接入网络向至少两个可接入网络各自的目标服务器分别发送获取请求,通过至少两个可接入网络从至少两个可接入网络各自的目标服务器分别获取一路目标音视频的数据包,对获取到的至少两路数据包进行解码,得到至少两路音视频数据,融合至少两路音视频数据进行目标音视频的播放,实现了基于多接入网络获取数据包的音视频处理方法,使得在融合至少两路数据包对应的至少两路音视频数据进行目标音视频的播放时,即使某一接入网络弱网或断网导致与其对应的一路音视频数据中的某个音视频丢失,但是还是能够基于其他路音视频数据中的该音视频进行播放,从而能够在接入网络弱网或断网时向用户提供较好的体验质量。
图9为本申请一实施例提供的音视频处理装置的结构示意图;参考附图9所示,本实施例提供了一种音视频处理装置,该装置可以执行上述音视频处理方法,具体的,该装置可以包括:
发送模块91,用于通过至少两个可接入网络向所述至少两个可接入网络各自的目标服务器分别发送获取请求,所述目标服务器用于对直播端实时采集并上传的目标音视频进行转发,所述获取请求用于请求获取所述目标音视频;
获取模块92,用于通过所述至少两个可接入网络,从所述至少两个可接入网络各自的目标服务器分别获取一路所述目标音视频的数据包;
解码模块93,用于对获取到的至少两路数据包进行解码,得到至少两路音视频数据;
融合模块94,用于融合所述至少两路音视频数据进行所述目标音视频的播放。
可选的,所述融合模块94,具体可以用于:在一个音视频帧被编码在一个数据包中时,使用所述至少两路音视频数据的属于同一音视频帧的音视频数据中,最早解码得到的音视频数据进行播放;在一个音视频帧被拆分编码在多个数据包中时,基于所述至少两路音视频数据的属于同一音视频帧的音视频数据进行帧组装,得到音视频帧,并对所述音视频帧进行播放。
可选的,所述至少两路音视频数据中时间戳相同且对应的序列号相同的音视频数据,是属于同一音视频帧的内容相同的音视频数据;所述至少两路音视频数据中时间戳相同且对应的序列号不同的音视频数据,是属于同一音视频帧的内容不同的音视频数据;
所述融合模块94用于基于所述至少两路音视频数据的属于同一音视频帧的音视频数据进行帧组装,得到音视频帧,具体可以包括:在所述至少两路音视频数据中至少两个音视频数据的时间戳相同,且所述至少两个音视频数据对应的至少两个数据包的序列号连续时,将所述至少两个音视频数据组装成视频帧。
可选的,所述装置还可以包括同步模块,用于确定通过所述副接入网络获取到的副路数据包与通过所述主接入网络获取到的主路数据包之间的序列号偏移量,根据所述序列号偏移量,修改所述副路数据包的序列号,以便所述副路数据包的序列号与所述主路数据包的序列号一致。
可选的,所述同步模块,用于确定所述副路数据包与所述主路数据包之间的序列号偏移量,具体可以包括:针对获取到的目标主路数据包,记录所述目标主路数据包中音视频数据的时间戳与所述目标主路数据包的序列号的对应关系,所述目标主路数据包是带有帧结束标记的主路数据包;从所述对应关系中查找与目标副路数据包中音视频数据的时间戳对应的序列号,所述目标副路数据包是带有帧结束标记的副路数据包;以及,根据查找到的与所述目标副路数据包中音视频数据的时间戳对应的目标序列号,以及所述目标副路数据包的序列号,计算序列号偏移量。
可选的,所述装置还包括重传模块,用于在确定需要重传所述目标音视频的第一序列号的数据包时,根据所述第一序列号以及所述序列号偏移量,恢复得到第二序列号,通过所述副接入网络向所述副接入网络的目标服务器发送包括重传请求,所述重传请求用于请求重传所述第二序列号的数据包。
可选的,所述发送模块91具体可以用于:获取用户的播放指令,播放指令用于指示开始播放目标音视频,响应于所述播放指令,通过至少两个可接入网络同时向所述至少两个可接入网络各自的目标服务器分别发送获取请求。
可选的,所述至少两个可接入网络包括主接入网络和副接入网络;所述发送模块91还可以用于:在当前时刻与目标历史时刻之间的时长达到第一时长阈值时,通过所述副接入网络向所述副接入网络的目标服务器发送停止获取请求,所述停止获取请求用于请求停止获取所述目标音视频的数据,目标历史时刻为所述同时向所述至少两个可接入网络各自的目标服务器分别发送获取请求的时刻。
可选的,所述至少两个可接入网络包括主接入网络和副接入网络;所述发送模块91还可以用于:在确定所述主接入网络的网络质量满足第一网络质量要求的持续时长达到第二时长阈值时,通过所述副接入网络向所述副接入网络的目标服务器发送停止获取请求,所述停止获取请求用于请求停止获取所述目标音视频。
可选的,所述网络质量满足第一网络质量要求包括:接收速率大于0,丢包率小于第一预设概率,以及,往返时延小于第一时延阈值。
可选的,所述发送模块91用于通过所述副接入网络向所述副接入网络的目标服务器发送停止获取请求之前,还可以用于:判断通过主接入网络获取到的主路数据包与通过副接入网络获取到的副路数据包的时间戳差异是否满足时间戳要求;所述时间戳差异满足时间戳要求,包括:所述主路数据包中音视频数据的最新时间戳大于所述副路数据包中音视频数据的最新时间戳,或者,所述副路数据包中音视频数据的最新时间戳与所述主路数据包中音视频数据的最新时间戳之差不超过第三时长阈值;如果是,则通过所述副接入网络向所述副接入网络的目标服务器发送停止获取请求。
可选的,所述发送模块91还可以用于:在确定所述主接入网络的网络质量不满足第二网络质量要求的持续时长达到第三时长阈值时,通过所述副接入网络向所述副接入网络的目标服务器发送所述获取请求。
可选的,所述网络质量不满足第二网络质量要求包括:卡顿率小于或等于第二预设概率,接收速率大于0,丢包率小于或等于第三预设概率,或者,往返时延小于或等于第二时延阈值。
可选的,所述发送模块91还可以用于:在确定所述主接入网络变为不可接入时,通过所述副接入网络向所述副接入网络的目标服务器发送所述获取请求。
可选的,所述发送模块91还可以用于:在确定所述主接入网络重新变为可接入时,通过所述主接入网络向所述主接入网络的目标服务器发送所述获取请求。
图9所示装置可以执行图4所示实施例提供的方法,本实施例未详细描述的部分,可参考对图4所示实施例的相关说明。该技术方案的执行过程和技术效果参见图4所示实施例中的描述,在此不再赘述。
在一个可能的实现中,图9所示装置的结构可实现为一终端。如图10所示,该终端可以包括:处理器101和存储器102。其中,存储器102用于存储支持终端执行上述图4所示实施例所提供方法的程序,处理器101被配置为用于执行存储器102中存储的程序。
程序包括一条或多条计算机指令,其中,一条或多条计算机指令被处理器101执行时能够实现如下步骤:
通过至少两个可接入网络向所述至少两个可接入网络各自的目标服务器分别发送获取请求,所述目标服务器用于对直播端实时采集并上传的目标音视频进行转发,所述获取请求用于请求获取所述目标音视频;
通过所述至少两个可接入网络,从所述至少两个可接入网络各自的目标服务器分别获取一路所述目标音视频的数据包;
对获取到的至少两路数据包进行解码,得到至少两路音视频数据;
融合所述至少两路音视频数据进行所述目标音视频的播放。
可选的,处理器101还用于执行前述图4所示实施例中的全部或部分步骤。
其中,终端的结构中还可以包括通信接口103,用于终端与其他设备或通信网络通信。
另外,本申请实施例提供了一种计算机程序,包括计算机程序指令,当所述指令由处理器执行时,实现如图4所示方法实施例提供的方法。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被执行时,实现如图4所示方法实施例提供的方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、链表、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。