音视频数据获取方法及其装置与流程

文档序号:24053386发布日期:2021-02-24 00:01阅读:129来源:国知局
音视频数据获取方法及其装置与流程

[0001]
本公开涉及流媒体技术领域,尤其涉及一种音视频数据获取方法及其装置。


背景技术:

[0002]
网络直播基于互联网的优势,利用视讯方式进行网上现场直播,可以将产品展示、相关会议、对话访谈、在线培训等内容现场发布到互联网上,利用互联网的直观、交互性强、地域不受限制等特点,加强活动现场的推广效果。
[0003]
网络直播的一种形式为:在现场架设信号采集设备,将采集的音视频导入到导播端(包括导播设备或平台),再通过网络上传至服务器进行发布,以供用户观看。
[0004]
终端设备可以一边下载网络直播数据,一边进行播放。该过程中,终端设备从存储有网络直播数据的服务器获取音视频数据流到本地(即拉流过程),经过解码后进行播放。因此,如何对音视频数据获取过程进行控制,以保证用户观看的流畅性,提高用户感受,是目前业界致力于解决的问题。


技术实现要素:

[0005]
本公开提供一种音视频数据获取方法及其装置,以保证终端设备侧音视频数据播放的流畅性和稳定性。本公开的技术方案如下:
[0006]
根据本公开的第一方面,提供一种音视频数据获取方法,包括:
[0007]
获取播放器的缓冲区状态,所述缓冲区用于缓存从网络侧获取到的音视频数据,以提供给所述播放器进行播放;
[0008]
根据所述缓冲区状态,确定音视频数据获取方式;
[0009]
采用确定出的音视频数据获取方式,从网络侧获取音视频数据,并将获取到的音视频数据存储到所述播放器的缓冲区。
[0010]
在一些实施方式中,所述根据所述缓冲区状态,确定音视频数据获取方式,包括:
[0011]
若所述缓冲区状态稳定,且当前音视频数据的获取方式为基于cdn的获取方式,则确定将音视频数据的获取方式从当前基于cdn的获取方式切换到基于pcdn的获取方式。
[0012]
在一些实施方式中,当满足以下条件时,确定所述缓冲区状态稳定:
[0013]
在第一设定时长持续时间内所述缓冲区缓存的数据的数据量大于第一阈值。
[0014]
在一些实施方式中,在满足所述第一设定时长持续时间内所述缓冲区缓存的数据的播放时长大于第一阈值时,若还满足以下条件中的至少一项,则确定所述缓冲区状态稳定:距离上一次音视频数据获取方式切换的时间间隔超过设定时间间隔,音视频数据获取方式切换失败次数少于设定次数。
[0015]
在一些实施方式中,所述将音视频数据的获取方式从当前基于cdn的获取方式切换到基于pcdn的获取方式,包括:
[0016]
保持当前所采用的基于cdn的获取方式从网络侧获取音视频数据,并开启基于pcdn的获取方式从网络侧获取音视频数据;其中,采用基于cdn的获取方式所获取到的音视
频数据被缓存到第一缓存队列,采用基于pcdn获取方式所获取到的音视频数据被缓存到第二缓存队列;
[0017]
根据所述第一缓存队列和所述第二缓存队列中时间信息和帧格式相匹配的数据单元,确定切换起始位置;
[0018]
在所述切换起始位置,停止将所述第一缓存队列的音视频数据输出到播放器的缓冲区,开始将所述第二缓存队列的音视频数据输出到所述播放器的缓冲区,并停止采用基于cdn的获取方式从网络侧获取音视频数据。
[0019]
在一些实施方式中,所述方法还包括:
[0020]
若保持当前所采用的基于cdn的获取方式从网络侧获取音视频数据,并开启基于pcdn的获取方式从网络侧获取音视频数据后,在所述第一缓存队列和所述第二缓存队列中未获取到时间戳以及帧类型相匹配的数据单元,则停止采用基于pcdn的获取方式从网络侧获取音视频数据。
[0021]
在一些实施方式中,所述根据所述缓冲区状态,确定音视频数据获取方式,包括:
[0022]
若所述缓冲区状态不稳定,且当前音视频数据的获取方式为基于pcdn的获取方式,则确定将音视频数据的获取方式从当前的基于pcdn的获取方式切换到基于cdn的获取方式。
[0023]
在一些实施方式中,当满足以下条件时,确定所述缓冲区不稳定:
[0024]
在第二设定时长持续时间内所述缓冲区缓存的数据的数据量小于或等于第二阈值。
[0025]
在一些实施方式中,所述将音视频数据的获取方式从当前基于pcdn的获取方式切换到基于cdn的获取方式,包括:
[0026]
保持当前所采用的基于pcdn的获取方式从网络侧获取音视频数据,并开启基于cdn的获取方式从网络侧获取音视频数据;其中,采用基于cdn的获取方式所获取到的音视频数据被缓存到第一缓存队列,采用基于pcdn获取方式所获取到的音视频数据被缓存到第二缓存队列;
[0027]
根据所述第一缓存队列和所述第二缓存队列中时间信息和帧格式相匹配的数据单元,确定切换起始位置;
[0028]
在所述切换起始位置,停止将所述第二缓存队列的音视频数据输出到播放器的缓冲区,开始将所述第一缓存队列的音视频数据输出到所述播放器的缓冲区,并停止采用基于pcdn的获取方式从网络侧获取音视频数据。
[0029]
在一些实施方式中,所述方法还包括:
[0030]
若保持当前所采用的基于pcdn的获取方式从网络侧获取音视频数据,并开启基于cdn的获取方式从网络侧获取音视频数据后,在所述第一缓存队列和所述第二缓存队列中未获取到时间戳以及帧类型相匹配的数据单元,则停止采用基于pcdn的获取方式从网络侧获取音视频数据。
[0031]
在一些实施方式中,所述根据所述第一缓存队列和所述第二缓存队列中时间信息和帧格式相匹配的数据单元,确定切换起始位置,包括:
[0032]
获取所述第一缓存队列和所述第二缓存队列中,时间戳以及帧类型相匹配的数据单元;
[0033]
将所述时间戳以及帧类型相匹配的数据单元的起始位置确定为切换起始位置。
[0034]
在一些实施方式中,所述获取播放器的缓冲区状态,包括:
[0035]
根据设定时间间隔获取播放器的缓冲区状态。
[0036]
根据本公开的第二方面,提供一种音视频数据获取装置,包括:
[0037]
播放器,被配置为对音视频数据进行解码以及播放解码后的音视频数据;
[0038]
控制器,被配置为获取播放器的缓冲区状态,根据所述缓冲区状态确定音视频数据获取方式,并将获取到的音视频数据存储到所述播放器的缓冲区;其中,所述缓冲区用于缓存从网络侧获取到的音视频数据,以提供给所述播放器进行播放;
[0039]
第一音视频获取模块,被配置为根据所述控制器确定的基于cdn的获取方式,采用基于cdn的方式从网络侧获取音视频数据;
[0040]
第二音视频获取模块,被配置为根据所述控制器确定的基于pcdn的获取方式,采用基于pcdn的方式从网络侧获取音视频数据。
[0041]
在一些实施方式中,所述控制器,具体被配置为:
[0042]
若所述缓冲区状态稳定,且当前音视频数据的获取方式为基于内容分发网络cdn的获取方式,则确定将音视频数据的获取方式从当前基于cdn的获取方式切换到基于点对点内容分发网络pcdn的获取方式。
[0043]
在一些实施方式中,所述控制器,具体被配置为:
[0044]
当满足以下条件时,确定所述缓冲区状态稳定:在第一设定时长持续时间内所述缓冲区缓存的数据的数据量大于第一阈值。
[0045]
在一些实施方式中,所述控制器,具体被配置为:
[0046]
在满足所述第一设定时长持续时间内所述缓冲区缓存的数据的播放时长大于第一阈值时,若还满足以下条件中的至少一项,则确定所述缓冲区状态稳定:距离上一次音视频数据获取方式切换的时间间隔超过设定时间间隔,音视频数据获取方式切换失败次数少于设定次数。
[0047]
在一些实施方式中,所述控制器,具体被配置为:
[0048]
保持当前所采用的基于cdn的获取方式从网络侧获取音视频数据,并开启基于pcdn的获取方式从网络侧获取音视频数据;其中,采用基于cdn的获取方式所获取到的音视频数据被缓存到第一缓存队列,采用基于pcdn获取方式所获取到的音视频数据被缓存到第二缓存队列;
[0049]
根据所述第一缓存队列和所述第二缓存队列中时间信息和帧格式相匹配的数据单元,确定切换起始位置;
[0050]
在所述切换起始位置,停止将所述第一缓存队列的音视频数据输出到播放器的缓冲区,开始将所述第二缓存队列的音视频数据输出到所述播放器的缓冲区,并停止采用基于cdn的获取方式从网络侧获取音视频数据。
[0051]
在一些实施方式中,所述控制器,还被配置为:
[0052]
若保持当前所采用的基于cdn的获取方式从网络侧获取音视频数据,并开启基于pcdn的获取方式从网络侧获取音视频数据后,在所述第一缓存队列和所述第二缓存队列中未获取到时间戳以及帧类型相匹配的数据单元,则停止采用基于pcdn的获取方式从网络侧获取音视频数据。
[0053]
在一些实施方式中,所述控制器,具体被配置为:
[0054]
若所述缓冲区状态不稳定,且当前音视频数据的获取方式为基于pcdn的获取方式,则确定将音视频数据的获取方式从当前的基于pcdn的获取方式切换到基于cdn的获取方式。
[0055]
在一些实施方式中,所述控制器,具体被配置为:
[0056]
当满足以下条件时,确定所述缓冲区不稳定:在第二设定时长持续时间内所述缓冲区缓存的数据的数据量小于或等于第二阈值。
[0057]
在一些实施方式中,所述控制器,具体被配置为:
[0058]
保持当前所采用的基于pcdn的获取方式从网络侧获取音视频数据,并开启基于cdn的获取方式从网络侧获取音视频数据;其中,采用基于cdn的获取方式所获取到的音视频数据被缓存到第一缓存队列,采用基于pcdn获取方式所获取到的音视频数据被缓存到第二缓存队列;
[0059]
根据所述第一缓存队列和所述第二缓存队列中时间信息和帧格式相匹配的数据单元,确定切换起始位置;
[0060]
在所述切换起始位置,停止将所述第二缓存队列的音视频数据输出到播放器的缓冲区,开始将所述第一缓存队列的音视频数据输出到所述播放器的缓冲区,并停止采用基于pcdn的获取方式从网络侧获取音视频数据。
[0061]
在一些实施方式中,所述控制器,还被配置为:
[0062]
若保持当前所采用的基于pcdn的获取方式从网络侧获取音视频数据,并开启基于cdn的获取方式从网络侧获取音视频数据后,在所述第一缓存队列和所述第二缓存队列中未获取到时间戳以及帧类型相匹配的数据单元,则停止采用基于pcdn的获取方式从网络侧获取音视频数据。
[0063]
在一些实施方式中,所述控制器,具体被配置为:
[0064]
获取所述第一缓存队列和所述第二缓存队列中,时间戳以及帧类型相匹配的数据单元;
[0065]
将所述时间戳以及帧类型相匹配的数据单元的起始位置确定为切换起始位置。
[0066]
在一些实施方式中,所述控制器,具体被配置为:
[0067]
根据设定时间间隔获取播放器的缓冲区状态。
[0068]
根据本公开的第三方面,提供一种终端设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如上述第一方面中任一项所述的音视频数据获取方法。
[0069]
根据本公开的第四方面,提供一种非易失性可读存储介质,当所述非易失性可读存储介质中的指令由终端设备的处理器执行时,使得所述终端设备能够执行如上述第一方面中任一项所述的音视频数据获取方法。
[0070]
本公开的实施例提供的技术方案至少带来以下有益效果:
[0071]
在音视频数据播放过程中,根据播放器的缓冲区状态确定当前的音视频数据获取方式,并采用确定出的音视频数据获取方式从网络侧获取音视频数据,从而可以及时根据播放器的缓冲区状态进行音视频获取方式的切换,以保证终端设备侧音视频播放的流畅性以及可靠性,以提高用户感受。
[0072]
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0073]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
[0074]
图1是根据一示例性实施例示出的一种cdn架构的示意图;
[0075]
图2是根据一示例性实施例示出的一种终端设备的框图;
[0076]
图3是根据一示例性实施例示出的一种数据队列的示意图;
[0077]
图4是根据一示例性实施例示出的一种终端设备的结构示意图;
[0078]
图5是根据一示例性实施例示出的一种音视频数据获取方法的流程示意图;
[0079]
图6是根据一示例性实施例示出的一种在匹配的flv tag进行切换的示意图;
[0080]
图7是根据一示例性实施例示出的一种直播场景下的音视频数据获取方式切换流程的示意图;
[0081]
图8是根据一示例性实施例示出的一种终端设备的框图;
[0082]
图9是根据一示例性实施例示出的一种终端设备的框图。
具体实施方式
[0083]
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
[0084]
本公开实施例描述的应用场景是为了更加清楚的说明本公开实施例的技术方案,并不构成对于本公开实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本公开实施例提供的技术方案对于类似的技术问题,同样适用。
[0085]
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0086]
本公开实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
[0087]
本公开实施例中术语“多个”,指两个或两个以上。
[0088]
本公开实施例提供一种音视频数据获取方法及其装置,本公开实施例基于播放器的缓冲区状态来确定音视频数据获取方式,以使得在音视频播放过程中保证数据码流的流畅性和可靠性,从而可以提高用户对音视频的观看感受。
[0089]
本公开实施例可适用于各种音视频播放场景,比如网络直播场景、音视频点播场景等。本公开实施例中,可以实现在不同音视频获取方式间进行切换,以使得切换后的音视频获取方式与当前播放器的缓冲区状态更匹配,从而保证终端设备侧兼顾音视频播放的流
畅性和稳定性。
[0090]
其中,音视频数据获取方式,可包括在基于内容分发网络(content delivery network或content distribution network,缩写:cdn)的获取方式(也被称为cdn拉流方式)与基于点对点内容分发网络(p2p cdn,pcdn)的获取方式(也被称为pcdn拉流方式)。
[0091]
cdn是指一种通过互联网互相连接的计算机网络系统,是一种用来分发流媒体等互联网内容的分布式网络节点结构,其根据用户所在的地理位置为用户选择最优的边缘网络节点(也称边缘服务器或边缘cdn节点),从而利用最靠近用户的边缘网络节点,将流媒体数据(比如音乐、图片、视频、应用程序及其他文件等)发送给用户。
[0092]
cdn是一个包括有分布式存储、负载均衡、网络请求的重定向和内容管理等组件的系统,它能够将内容资源从互联网数据中心(internet data center,缩写:idc)分发到离用户距离较近(或者别的条件)的网络边缘节点(服务器),利用其负载均衡技术将用户访问请求重定向到边缘网络节点上,减小访问的响应时间,减缓骨干网络的压力。一个cdn网络主要由边缘网络节点构成。
[0093]
图1示例性示出了一种网络直播的cdn架构。如图所示,网络直播数据提供者将网络直播数据发送给源站,源站将网络直播数据发送给中间源cdn节点和边缘cdn节点(边缘cdn节点可能为多个,图中仅以一个cdn边缘节点为例);当用户通过所在终端设备发送网络直播请求以请求观看网络直播时,调度中心基于用户地理位置以及负载均衡等策略,选择最优的边缘cdn节点,并通知该边缘cdn节点向该用户所在终端设备发送网络直播数据。
[0094]
pcdn(p2p cdn)是一种点对点传输与cdn相结合的技术,通过边缘网络节点提供类似cdn的分发互联网内容的技术。pcdn以对等网络(peer-to-peer,简称p2p)技术为基础,通过挖掘利用边缘网络海量碎片化闲置资源而构建内容分发网络。
[0095]
一种典型的pcdn架构为采用上层cdn、下层p2p的网络架构。在cdn的基础上(仍然由中心cdn节点发给边缘cdn节点),在边缘cdn节点引入可管理的p2p自治区,由边缘cdn节点(可能是多个)以及终端设备组成,以降低骨干网络的压力。另一种pcdn架构为在边缘服务器间建立p2p架构,即,将边缘cdn节点以p2p的方式连接起来,以降低中心cdn节点的负载。
[0096]
pcdn相较于cdn具有带宽成本低、大容量的特点,适用于网络直播业务场景,但其所提供的网络内容服务的质量(性能或稳定性)不及cdn。
[0097]
本公开的实施例中,可根据终端设备侧的播放器缓冲区状态来确定音视频数据的稳定性,基于pcdn获取方式和cdn获取方式各自的特点,在这两种音视频获取方式间自动切换,从而可以兼顾节省带宽成本以及保证播放质量。
[0098]
图2示例性示出了本公开实施例中的一种终端设备的结构示意图,该终端设备可进行音视频数据获取以及播放功能。
[0099]
本公开实施例中的术语“终端设备”可以是具有流媒体处理功能以及音视频显示功能的电子设备,可以支持音视频数据处理和播放,比如支持网络直播流的处理和播放。该终端设备可以是智能手机、平板电脑、计算机、智能电视、医疗终端设备、个人数字助理等。
[0100]
如图所示,终端设备200中包括播放器21、控制器22、第一音视频获取模块23以及第二音视频获取模块24。这些模块可以通过软件方式实现,或者通过软件和硬件相结合的方式实现,本公开的实施例对此不做限制。
[0101]
播放器21,被配置为对音视频数据进行解码以及播放解码后的音视频数据。播放器21中包含缓冲区(buffer),用于缓存待播放的音视频数据,播放器21从该缓冲区读取音视频数据进行播放。
[0102]
为了保证流畅播放,本公开的实施例中,可尽可能多地从网络侧获取音视频数据并保存在该缓冲区中,以便播放器21从中读取音视频数据并播放。如果从网络侧获取音视频数据的速度持续小于播放器21播放所需的速度,将会导致播放器21的缓冲区内缓存的音视频数据下降直至空,而导致出现播放卡顿现象。
[0103]
控制器22,被配置为获取播放器的缓冲区状态,根据该缓冲区状态确定音视频数据获取方式,并将获取到的音视频数据存储到所述播放器的缓冲区。
[0104]
其中,所述缓冲区状态用于表征播放器21的数据缓冲区中的数据缓存情况。比如,缓冲区状态可使用以下信息中的至少一种进行表征:缓冲区缓存的音视频数据的数据单元(或数据包)个数、缓冲区缓存的音视频数据的数据量(比如比特数或字节数等)、缓冲区缓存的音视频的帧数,以及缓冲区中缓存的音视频数据的时间戳(比如每个视频帧都有各自的时间戳)等,进一步地,还可以包括缓存的音视频数据占缓冲区容量的百分比。通过缓冲区中缓存的音视频数据的数据量以及时间戳可以确定缓存的音视频数据的播放时长。
[0105]
其中,缓冲区中缓存的音视频数据可以以指定的数据格式进行存储,举例来说,该指定的数据格式可以是flv(flash video)格式,以flv格式存储的视频数据包可称为flv tag,缓冲区状态可使用flv tag的数量以及各flv tag的时间戳来表示。
[0106]
flv是一种流媒体格式,flv格式是随着flash mx的推出发展而来的视频格式。flv流媒体格式的文件数据量小、加载速度快,还可以起到保护版权的作用,适用于视频数据的网络传输。
[0107]
flv格式的数据结构中包括flv header(flv头)以及flv body(flv体)。flv header中可包含“flv”格式的指示信息、版本信息、流的指示信息(表示是否有视频信息,是否有音频信息)、头部长度信息等。flv body包含由多个tag组成,tag分为三种类型:script(脚本流)、video(视频流)、audio(音频流)。
[0108]
flv tag包含tag header(tag头)以及tag data(tag体)。tag header中可包含数据类型(如脚本类型,音频类型,视频类型)、数据区长度信息、时间戳等信息。视频流类型得到tag data中可包含帧类型指示信息、解码器id、视频数据。
[0109]
其中,类型指示信息可指示以下帧类型中的一种:keyframe(关键帧)、inner frame(内部帧)、disposable inner fram、generated keyframe(生成的关键帧)。
[0110]
本公开的实施例中,可根据播放器的缓冲区状态信息判断缓冲区状态是否稳定,进而可以根据当前缓冲区状态,选取适合的音视频获取方式。缓冲区状态可以用判决条件来判断,比如,若缓冲区状态符合预设的稳定状态判决条件,则判断为缓冲区状态稳定,若缓冲区状态符合预设的不稳定状态判决条件,则判断为缓冲区状态不稳定。举例来说,在一些实施例中,如果播放器的缓冲区所缓存的音视频数据的数据量较少,表明所缓存的音视频数据的播放时长较短,则当前的缓冲区状态不稳定;在另一些实施例中,如果缓冲区所缓存的音视频数据的数据量较少,且该情况持续的时间超过一定时长,则当前的缓冲区状态不稳定。
[0111]
第一音视频获取模块23可根据控制器22的控制,采用控制器22确定出的基于cdn
的获取方式从网络侧获取音视频数据。
[0112]
第二音视频获取模块24可根据直播拉流控制器22的控制,采用控制器22确定出的基于pcdn的获取方式从网络侧获取音视频数据。
[0113]
上述终端设备的结构中,播放器21与控制器22之间交互的接口,可包括标准的类socket的接口(包括open接口、close接口、read接口)。其中,基于open(开始)接口,播放器21可与控制器22之间建立连接,以用于将音视频数据传递给播放器21;基于close(关闭)接口,播放器21可将其与控制器22之间的连接断开,以停止从控制器22接收音视频数据;基于read(读取)接口,播放器21可从控制器22接收音视频数据并缓存到缓冲区中。
[0114]
本公开的实施例中,播放器21与控制器22之间交互的接口,还可包括一个提供和传递播放器21的缓冲区状态信息的接口,通过该接口,控制器22可以获取播放器21的缓冲区状态信息,以作为音视频获取方式切换判决的依据。在一些实施例中,播放器21可按照设定时间间隔或者按照设定周期或时间间隔,将其缓冲区状态信息发送给控制器22;在另一些实施例中,控制器22也可按照设定时间间隔或者按照设定周期或时间间隔,查询播放器21的缓冲区状态信息。
[0115]
上述终端设备的结构中,控制器22在底层与第一音视频获取模块23以及第二音视频获取模块24,分别通过标准的类socket接口(包括open接口、close接口、read接口)进行交互,以分别从两种渠道获取音视频数据。控制器22在上层为播放器21提供标准的类socket接口(包括open接口、close接口、read接口),从而提供一条不中断的音视频数据流,使得上层(播放器)无需感知不同音视频获取方式间的切换过程。
[0116]
在一些实施例中,在控制器22的内部,其为第一音视频获取模块23和第二音视频获取模块24分别配置一个数据队列。
[0117]
图3示例性示出了数据队列的示意图。如图所示,为第一音视频获取模块23配置的数据队列25用于存储该模块从网络侧获取的音视频数据,为第二音视频获取模块24配置的数据队列26用于存储该模块从网络侧获取的音视频数据。可选地,数据队列25和数据队列26可以采用flv格式存储音视频数据,即将获取到的音视频数据存储为flv tag,每个flv tag即为一个数据单元。
[0118]
对于第一音视频获取模块23从cdn获取到的音视频数据,控制器22对该数据进行解析,并放入数据队列25中(数据队列25中每个斜线填充的方框表示一个对应的数据单元,如一个flv tag);对于第二音视频获取模块24从pcdn获取到的音视频数据,控制器22对该数据进行解析,并放入数据队列26中(数据队列26中每个斜线填充的方框表示对应的一个数据单元,如一个flv tag)。
[0119]
控制器22提供给播放器21的音视频数据从控制器22内部的数据队列25和数据队列26给出。在一个给定的时刻,控制器22经过音视频获取方式切换判决,选择使用其中一个数据队列读取数据,读取到的数据经过重新组装后提供给播放器21进行播放。具体地,控制器22可通过切换read接口所对应的数据队列,实现拉流方式的切换,以将相应数据队列中由相应音视频获取方式获取的音视频数据传递给播放器21。
[0120]
关于上述图3所示的终端设备,其中各个组成部分所执行的操作以及所实现的功能的具体内容,可参见以下实施例提供的音视频获取流程中的相关描述,此处将不做详细阐述说明。
[0121]
图4示例性示出了本公开的实施例提供的一种控制器22的结构。
[0122]
如图所示,该控制器22可包括:获取单元41、处理单元42、控制单元43。
[0123]
获取单元41,被配置为获取播放器的缓冲区状态,所述缓冲区用于缓存从网络侧获取到的音视频数据,以提供给所述播放器进行播放;
[0124]
处理单元42,被配置为根据所述缓冲区状态,确定音视频数据获取方式;
[0125]
控制单元43,被配置为根据确定出的音视频数据获取方式,指示相应音视频获取模块从网络侧获取音视频数据,并将获取到的音视频数据存储到所述播放器的缓冲区。
[0126]
关于上述图4所示的装置,其中各个单元所执行的操作以及所实现的功能的具体内容,可参见以下实施例提供的音视频数据获取流程中的相关描述,此处将不做详细阐述说明。
[0127]
图5示例性示出了本公开的实施例提供的一种音视频数据获取方法的流程示意图,该流程可由用于实现音视频数据获取装置执行,比如可由图2或图3或图4所示的装置。具体地,该装置可以是终端设备或者是集成于终端设备中的装置。
[0128]
如图所示,该流程可包括:
[0129]
s501:获取播放器的缓冲区状态。
[0130]
其中,所述缓冲区用于缓存从网络侧获取到的音视频数据,以提供给播放器进行播放。
[0131]
可选地,可按照设定周期或设定时间间隔获取缓冲状态信息,根据缓冲区状态信息确定缓冲区状态。其中,缓冲区状态信息可包括以下信息中的至少一项:缓冲区缓存的音视频数据的数据单元(或数据包)个数、缓冲区缓存的音视频数据的数据量(比如比特数或字节数等)、缓冲区缓存的音视频的帧数,以及缓冲区中缓存的音视频数据的时间戳等,进一步地,还可以包括缓存的音视频数据占缓冲区容量的百分比。
[0132]
由于缓冲状态可以反映播放器的数据缓冲区中的数据缓存情况,因此根据缓冲状态可以判定当前的音视频数据获取状态是否稳定。
[0133]
具体地,缓冲区状态可包括稳定和不稳定,缓冲区状态稳定则表明当前的音视频数据获取状态稳定,缓冲区状态不稳定则表明当前的音视频数据获取状态不稳定。
[0134]
比如,如果缓冲区状态表明从网络侧获取音视频数据的速度持续大于或等于播放速度,保证播放器的播放流畅性,不至于出现卡顿的情况,则表明当前的音视频数据获取状态稳定;如果缓冲区状态表明从网络侧获取音视频数据的速度持续小于播放速度,则可能导致缓冲区缓存的数据量下降甚至为空,因而导致播放器出现卡顿的情况,则表明当前的音视频数据获取状态不稳定。
[0135]
举例来说,若根据播放器的缓冲区状态信息,确定在不低于第一设定时长的持续时间内,缓存的数据的数据量大于第一阈值,则表明从网络侧获取音视频数据的速度持续大于或等于播放速度,因而可以判定当前的音视频数据获取状态稳定,即缓冲区状态稳定。通过上述判断方法,可以准确判断出缓冲区状态是否稳定,进而使得以缓冲区状态作为依据所确定出的音视频获取方式,能够与缓冲区状态相匹配,从而保证音视频播放的流畅性和稳定性。
[0136]
再举例来说,若根据播放器的缓冲区状态信息,确定在不低于第一设定时长的持续时间内,缓存的数据的数据量大于第一阈值,且还满足以下条件:距离上一次音视频数据
获取方式切换时间间隔超过设定时间间隔,和/或音视频数据获取方式切换失败次数少于设定次数,则表明从网络侧获取音视频数据的速度持续大于或等于播放速度,因而判定当前的音视频数据获取状态稳定,即缓冲区状态稳定。
[0137]
其中,所述设定时间间隔以及所述设定次数可以预先设置,具体可根据网络性能并结合实测结果进行设置,本公开实施例对此不做限制。
[0138]
上述将音视频数据的缓存情况与音视频数据获取方式切换情况相结合对缓冲区状态是否稳定进行判断,可以使得判断结果更加合理,从而使得音视频数据获取方式切换判决更为合理,进而可以保证音视频播放的流畅性。比如,缓冲区中在连续n秒内(第一设定时长等于n)缓存的数据单元个数不低于m(第一阈值等于m),但距离上一次音视频数据获取方式切换时间间隔较短(未超过设定时间间隔)且音视频数据获取方式切换失败次数较多,则无法判断上述音视频数据的缓存情况是当前的音视频数据获取方式所导致的,还是切换之前的音视频数据获取方式所导致的,因此在音视频数据缓存情况满足相应条件的情况下,如果音视频数据获取方式切换情况也满足相同条件,则判定为当前的音视频数据获取状态稳定,这样可以提高判决的准确性和合理性。
[0139]
判断缓冲区状态不稳定的一个例子为:若根据播放器的缓冲区状态信息,确定在不低于第二设定时长的持续时间内,缓存的数据的数据量小于或等于第二阈值,则表明从网络侧获取音视频数据的速度持续小于播放速度,因而可以判定当前的音视频数据获取状态不稳定,即缓冲区状态不稳定。通过上述判断方法,可以准确判断出缓冲区状态是否稳定,进而使得以缓冲区状态作为依据所确定出的音视频获取方式,能够与缓冲区状态相匹配,从而保证音视频播放的流畅性和稳定性。
[0140]
其中,第一阈值和第二阈值可以相等,第二阈值也可以小于第一阈值。如果第二阈值小于第一阈值,则可以减少频繁进行音视频获取方式切换,即减少出现乒乓现象,以提高稳定性。
[0141]
可选地,第一阈值和第二阈值与当前的播放速度或帧率相关。比如,如果播放速度或帧率较高,则第一阈值的取值较大,反之,则第一阈值的取值较小。可以预先针对可能的播放速度或帧率,设置对应的第一阈值和第二阈值,在音视频播放过程中,可根据当前的音视频播放速度或帧率,选取对应的第一阈值和第二阈值。在另一些实施例中,也可仅针对正常或默认播放速度或帧率设置第一阈值和第二阈值,在音视频播放过程中,可根据当前的音视频播放速度与默认播放速度间的倍数关系,对预先配置的第一阈值和第二阈值进行缩放(比如进行相应比例的缩放),得到与当前的音视频播放速度对应的第一阈值和第二阈值。
[0142]
其中,第一设定时长与第二设定时长可以相同,也可以不同,比如,第二设定时长可以小于第一设定时长,这样,可以针对从网络侧获取音视频数据的速度持续小于播放速度的情况,及时将其判决为音视频数据获取状态不稳定(即缓冲区状态不稳定),从而可以及时进行音视频获取方式切换,以保证播放器播放的流畅性。
[0143]
其中,第一阈值和第二阈值,以及第一设定时长和第二设定时长可预先设置,具体可根据网络性能并结合实测结果进行设置,本公开实施例对此不做限制。
[0144]
以采用flv格式缓存音视频数据为例,控制器根据播放器发送来的缓冲区状态信息(比如flv tag的数量以及时间戳),判断在m秒内(第一设定时长等于m秒)flv tag的数量
始终大于n(第一阈值等于n),则表明从网络侧获取音视频数据的速度足以保证播放器能够在一定时间内播放的流畅性,因此判断当前的音视频数据获取状态稳定,即缓冲区状态稳定。
[0145]
s502:根据缓冲状态,确定音视频数据获取方式。
[0146]
该步骤中,若缓冲区状态稳定,且当前为基于cdn的获取方式,则判定需要进行音视频数据获取方式切换,即切换到基于pcdn的获取方式。在当前采用基于cdn的获取方式的情况下,若当前缓冲区状态稳定,则通过切换到基于pcdn的获取方式,可以基于pcdn网络能够节省网络带宽成本的特点,利用pcdn网络的优势,在保证音视频数据播放流畅的情况下,节省网络带宽成本。
[0147]
若缓冲区状态不稳定,且当前为基于pcdn的获取方式,则判定需要进行音视频数据获取方式切换,即切换到基于cdn的获取方式。在当前为基于pcdn的获取方式的情况下,若当前缓冲区状态不稳定,则通过切换到基于cdn的获取方式,可以基于cdn网络能够提供较高的网络内容服务质量的特点,保证音视频数据播放流畅。
[0148]
s503:采用确定出的音视频数据获取方式,从网络侧获取音视频数据,并将获取到的音视频数据存储到播放器的缓冲区。
[0149]
该步骤中,在一些实施例中,若判断为将当前所采用的基于cdn的获取方式切换到基于pcdn的获取方式,则保持当前所采用的基于cdn的获取方式从网络侧获取音视频数据,并开启基于pcdn的获取方式从网络侧获取音视频数据,其中,采用基于cdn的获取方式所获取到的音视频数据被缓存到第一缓存队列,采用基于pcdn获取方式所获取到的音视频数据被缓存到第二缓存队列;根据第一缓存队列和第二缓存队列中时间信息和帧格式相匹配的数据单元,确定切换起始位置;在该切换起始位置,停止将第一缓存队列的音视频数据输出到播放器的缓冲区,开始将第二缓存队列的音视频数据输出到播放器的缓冲区,并停止采用基于cdn的获取方式从网络侧获取音视频数据,从而实现音视频数据获取方式的切换。
[0150]
其中,以将音视频数据存储为flv格式为例,若第二数据队列中存在一个flv tag,其时间戳与第一数据队列中的一个flv tag的时间戳相匹配,则该两个flv tag在时间上对齐(即起始时间相同),则在该两个flv tag的帧类型也相同的情况下,可从该时间点开始从第一数据队列切换到第二数据队列读取flv tag以传递给播放器。
[0151]
如图6所示,采用基于cdn的获取方式拉取的网络直播数据被以flv tag形式存储到cdn数据队列中,以基于pcdn的获取方式拉取的网络直播数据被以flv tag形式存储到pcdn数据队列中。cdn数据队列中包含的flv tag 61(如图中斜线填充的方框),与pcdn数据队列中包含的flv tag 62(比如图中斜线填充的方框)的帧类型均为keyframe,且时间戳相同,则该两个flv tag在时间上对齐,因此在进行音视频数据获取方式切换时,在t0时刻从cdn数据队列切换到pcdn数据队列,即从该时刻停止从cdn队列读取数据,并开始从pcdn数据队列读取flv tag以提供给播放器的缓冲区。
[0152]
进一步地,若在第二数据队列(即基于cdn的获取方式所对应的数据队列)中未查找到时间戳以及帧类型与第一数据队列(即基于psdn的获取方式所对应的数据队列)中的数据单元相匹配的数据单元,则可放弃本次音视频获取方式切换,即,保持采用当前的基于cdn的方式从网络侧获取音视频数据以及从基于cdn的获取方式对应的第一数据队列获取数据并发送给播放器的缓冲区,停止采用基于pcdn的获取方式从网络侧获取音视频数据。
在原有基于cdn的获取方式和后续开启的基于pcdn的获取方式获取的音视频数据在帧类型或时间戳不匹配的情况下,放弃本次音视频数据获取方式切换,可以保证音视频数据播放的流畅性。
[0153]
在另一些实施例中,若判断为将当前所采用的基于pcdn的获取方式切换到基于cdn的获取方式,则保持当前所采用的基于pcdn的获取方式从网络侧获取音视频数据,并开启基于cdn的获取方式从网络侧获取音视频数据,其中,采用基于cdn的获取方式所获取到的音视频数据被缓存到第一缓存队列,采用基于pcdn获取方式所获取到的音视频数据被缓存到第二缓存队列;根据第一缓存队列和第二缓存队列中时间信息和帧格式相匹配的数据单元,确定切换起始位置;在该切换起始位置,停止将第二缓存队列的音视频数据输出到播放器的缓冲区,开始将第一缓存队列的音视频数据输出到所述播放器的缓冲区,并停止采用基于pcdn的获取方式从网络侧获取音视频数据。
[0154]
进一步地,在第一缓存队列和第二缓存队列中未获取到时间戳以及帧类型相匹配的数据单元,则停止采用基于pcdn的获取方式从网络侧获取音视频数据。
[0155]
上述音视频数据获取方式切换过程中,先维持原有获取方式进行音视频数据的获取,同时启动目标获取方式开始从网络侧获取音视频数据。此时基于cdn的获取方式和基于pcdn的获取方式同时进行,这样有可能能够从cdn拉取的数据和pcdn拉取的数据中找到时间戳和帧类型相匹配的数据,由于该相匹配的数据在时间上对齐且帧类型相同,这样在该位置上进行切换,可以保证音视频数据在时间上的连续性以及在观看上的流畅性。
[0156]
基于上述一个或多个实施例的组合,图7示出了一种具体应用场景下的网络直播拉流控制流程。如图所示,该流程可包括:
[0157]
s700~s701:在播放器开始播放网络直播时,拉流控制器开启第一音视频获取模块,以基于cdn的获取方式拉取网络直播数据,此时采用基于pcdn的获取方式的第二音视频获取模块为关闭状态。
[0158]
在开始播放网络直播时,选择使用基于cdn的获取方式可以基于cdn能够提供较高质量的网络内容服务的特点,保证播放器能够流畅播放网络直播。
[0159]
s702:根据播放器的缓冲区状态,判断在当前基于cdn的获取方式下音视频数据获取状态是否稳定,若稳定,则转入s703,否则保持当前使用第一音视频获取模块拉取网络直播数据。
[0160]
该步骤中,当网络直播数据播放开始一段时间后,若控制器根据播放器的缓冲区状态信息,判断缓冲区状态稳定,则转入s703以切换到基于pcdn的获取方式。在基于cdn的获取方式下若缓冲区状态稳定,则切换到基于pcdn的获取方式拉取网络直播数据,可以基于pcdn的特点,节省系统带宽开销。
[0161]
s703:从使用第一音视频获取模块拉取网络直播数据,切换到使用第二音视频获取模块拉取网络直播数据,即从基于cdn的获取方式切换到基于pcdn的获取方式。
[0162]
s704:根据播放器的缓冲区状态,判断当前基于pcdn的获取方式下缓冲区状态是否稳定,若稳定,则转入s705,否则保持当前使用第二音视频获取模块拉取网络直播数据。
[0163]
该步骤中,当使用基于pcdn的获取方式拉取网络直播数据一段时间后,若控制器根据播放器的缓冲区状态信息,判断缓冲区状态不稳定,则转入s705以切换到基于cdn的获取方式。在基于pcdn的获取方式下若判断缓冲区状态不稳定,则切换到基于cdn的获取方式
拉取网络直播数据,可以基于cdn的特点,提高拉流稳定性,以保证播放的流畅性。
[0164]
s705:从使用第二音视频获取模块拉取网络直播数据,切换到使用第一音视频获取模块拉取网络直播数据,即从基于pcdn的获取方式切换到基于cdn的获取方式。
[0165]
在网络直播播放过程中执行上述流程,直到直播结束或者用户停止播放为止。
[0166]
图7所示流程中相关步骤的实现方式,与前述实施例基本相同,在此不再重复。
[0167]
本公开的上述实施例中,通过将播放器的缓冲状态信息传递给控制器以作为音视频获取方式切换判决的依据,从而使得播放器与控制器深度融合,控制器可以实时地根据播放器的缓冲区状态灵活准确地对基于cdn的获取方式与基于pcdn的获取方式之间的切换进行判决。进一步地,控制器在进行音视频数据获取方式切换时,并不立即进行切换,而是保持原有获取方式与目标获取方式同时进行音视频数据的获取,并在合适的切换时机进行切换,从而不会引起输出音视频流的中断,对上层透明,可以更加鲁棒地应对pcdn质量差的情形,也可以充分地利用pcdn资源在条件允许的情况下使用基于pcdn的获取方式。总体来说,本公开的实施例能够有效地提升基于pcdn的音视频播放质量。
[0168]
基于相同的技术构思,本公开的实施例还提供了一种终端设备。
[0169]
图8是根据一示例性实施例示出的一种终端设备800的框图,该装置包括:处理器801、用于存储处理器801可执行指令的存储器802。其中,处理器801被配置为执行指令,以实现本公开实施例中任意一种音视频数据获取方法。
[0170]
在示例性实施例中,还提供了一种包括指令的非易失性可读存储介质,上述指令可由终端设备800的处理器801执行以完成上述方法。可选地,非易失性可读存储介质可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
[0171]
在本公开实施例中还提供一种终端设备,其结构如图9所示,本公开实施例给出一种用于音视频数据获取方法的终端设备900,包括:射频(radio frequency,rf)电路910、电源920、处理器930、存储器940、输入单元950、显示单元960、摄像头970、通信接口980、以及无线保真(wireless fidelity,wi-fi)模块990等部件。本领域技术人员可以理解,图9中示出的终端设备的结构并不构成对终端设备的限定,本公开实施例提供的终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0172]
下面结合图9对终端设备900的各个构成部件进行具体的介绍:
[0173]
rf电路910可用于通信或通话过程中,数据的接收和发送。特别地,rf电路910在接收到基站的下行数据后,发送给处理器930处理;另外,将待发送的上行数据发送给基站。通常,rf电路910包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noise amplifier,lna)、双工器等。
[0174]
此外,rf电路910还可以通过无线通信与网络和其他终端通信。无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(global system of mobile communication,gsm)、通用分组无线服务(general packet radio service,gprs)、码分多址(code division multiple access,cdma)、宽带码分多址(wideband code division multiple access,wcdma)、长期演进(long term evolution,lte)、电子邮件、短消息服务(short messaging service,sms)等。
[0175]
wi-fi技术属于短距离无线传输技术,终端设备900通过wi-fi模块990可以连接接
入点(access point,ap),从而实现数据网络的访问。wi-fi模块990可用于通信过程中,数据的接收和发送。
[0176]
终端设备900可以通过通信接口980与其他终端实现物理连接。可选的,通信接口980与其他终端的通信接口通过电缆连接,实现终端900和其他终端之间的数据传输。
[0177]
由于在本公开实施例中,终端设备900能够与网络侧进行交互以请求获取音视频数据,并从网络侧获取音视频数据,因此终端设备900需要具有数据传输功能,即终端设备900内部需要包含通信模块。虽然图9示出了rf电路910、wi-fi模块990、和通信接口980等通信模块,但是可以理解的是,终端设备900中存在上述部件中的至少一个或者其他用于实现通信的通信模块(如蓝牙模块),以进行数据传输。
[0178]
例如,当终端设备900为手机时,终端设备900可以包含rf电路910,还可以包含wi-fi模块990;当终端设备900为计算机时,终端设备900可以包含通信接口980,还可以包含wi-fi模块990;当终端设备900为平板电脑时,终端设备900可以包含wi-fi模块。
[0179]
存储器940可用于存储软件程序以及模块。处理器930通过运行存储在存储器940的软件程序以及模块,从而执行终端设备900的各种功能应用以及数据处理,并且当处理器930执行存储器940中的程序代码后,可以实现本公开实施例图5或图7中的部分或全部过程。
[0180]
可选的,存储器940可以主要包括存储程序区和存储数据区。其中,存储程序区可存储操作系统、各种应用程序(比如通信应用)以及人脸识别模块等;存储数据区可存储根据终端的使用所创建的数据(比如各种图片、视频文件等多媒体文件,以及人脸信息模板)等。
[0181]
此外,存储器940可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0182]
输入单元950可用于接收用户输入的数字或字符信息,以及产生与终端900的用户设置以及功能控制有关的键信号输入。
[0183]
可选的,输入单元950可包括触控面板951以及其他输入终端952。
[0184]
其中,触控面板951,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板951上或在触控面板951附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板951可以包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器930,并能接收处理器930发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板951。
[0185]
可选的,其他输入终端952可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一个或多个。
[0186]
显示单元960可用于显示由用户输入的信息或提供给用户的信息以及终端设备900的各种菜单。显示单元960即为终端设备900的显示系统,用于呈现界面,实现人机交互。
[0187]
显示单元960可以包括显示面板961。可选的,显示面板961可以采用液晶显示屏(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)等形式来配置。
[0188]
进一步的,触控面板951可覆盖显示面板961,当触控面板951检测到在其上或附近的触摸操作后,传送给处理器930以确定触摸事件的类型,随后处理器930根据触摸事件的类型在显示面板961上提供相应的视觉输出。
[0189]
虽然在图9中,触控面板951与显示面板961是作为两个独立的部件来实现终端设备900的输入和输入功能,但是在某些实施例中,可以将触控面板951与显示面板961集成而实现终端900的输入和输出功能。
[0190]
处理器930是终端设备900的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在存储器940内的软件程序和/或模块,以及调用存储在存储器940内的数据,执行终端设备900的各种功能和处理数据,从而实现基于终端设备的多种业务。
[0191]
可选的,处理器930可包括一个或多个处理单元。可选的,处理器930可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器930中。
[0192]
摄像头970,用于实现终端设备900的拍摄功能,拍摄图片或视频。摄像头970还可以用于实现终端900的扫描功能,对扫描对象(二维码/条形码)进行扫描。
[0193]
终端设备900还包括用于给各个部件供电的电源920(比如电池)。可选的,电源920可以通过电源管理系统与处理器930逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
[0194]
需要说明的是,本公开实施例处理器930可以执行图8中处理器801的功能,存储器940存储存储器802中的内容。
[0195]
本公开实施例还提供一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行实现本公开实施例上述任意一项音视频数据获取方法或其可能涉及的方法。
[0196]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0197]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1