一种分辨率切换时的接续播放方法、装置及存储介质与流程

文档序号:19347258发布日期:2019-12-06 20:59阅读:225来源:国知局
一种分辨率切换时的接续播放方法、装置及存储介质与流程

本公开涉及网络媒体播放技术,尤其涉及一种分辨率切换时的接续播放方法、装置及存储介质。



背景技术:

目前,利用网页进行媒体播放是普遍使用的视频播放方案,能够减少安装专用客户端的繁琐操作。

然而,当在网页中播放媒体文件时,若想要对当前正在播放的媒体文件进行分辨率切换,则需要重新开始加载相应分辨率的媒体文件,不可避免地会出现网络延迟,进而导致目标分辨率的媒体数据片段无法及时取回,使得整个媒体文件播放不流畅,从而出现播放卡顿的现象,严重影响用户的使用体验。针对上述技术问题,目前相关技术尚未提出有效解决方案。



技术实现要素:

有鉴于此,本公开实施例期望提供一种分辨率切换时的接续播放方法、装置及存储介质,至少用以提升网页取回目标分辨率的媒体数据片段的效率。

为达到上述目的,本公开实施例的技术方案是这样实现的:

第一方面,本公开实施例提供一种分辨率切换时的接续播放方法,所述方法包括:

当播放器在所内嵌的网页播放分段媒体文件的过程中,检测接收到分辨率切换事件时播放原分辨率的分段媒体文件的实时播放点;

获取用于接续所述实时播放点的分段媒体文件,其中,所述用于接续实时播放点的分段媒体文件为基于目标分辨率的媒体文件形成;

通过所述播放器加载所述目标分辨率的分段媒体文件,以接续所述原分辨率的分段媒体文件在所述网页中进行播放。

第二方面,本公开实施例还提供一种分辨率切换时的接续播放装置,所述装置包括:检测模块、获取模块和加载模块;其中,

所述检测模块,用于当播放器在所内嵌的网页播放分段媒体文件的过程中,检测接收到分辨率切换事件时播放原分辨率的分段媒体文件的实时播放点;

所述获取模块,用于获取用于接续所述实时播放点的分段媒体文件,其中,所述用于接续实时播放点的分段媒体文件为基于目标分辨率的媒体文件形成;

所述加载模块,用于通过所述播放器加载所述目标分辨率的分段媒体文件,以接续所述原分辨率的分段媒体文件在所述网页中进行播放。

第三方面,本公开实施例还提供一种分辨率切换时的接续播放装置,包括:

存储器,用于存储可执行指令;

处理器,用于执行所述可执行指令时,实现本公开实施例提供的分辨率切换时的接续播放方法。

第四方面,本公开实施例还提供一种存储介质,存储有可执行指令,所述可执行指令被执行时,用于实现本公开实施例提供的分辨率切换时的接续播放方法。

本公开实施例所提供的分辨率切换时的接续播放方法、装置及存储介质,播放器将媒体文件以分段媒体文件的形式在所嵌入的网页中播放,根据分辨率切换事件获取用于接续实时播放点的目标分辨率的分段媒体文件,以接续原分辨率的分段媒体文件在网页中进行播放,克服了需要重新请求目标分辨率的媒体文件导致出现的网络延迟,使得整个媒体文件播放流畅,进而避免出现播放卡顿的现象,能够有效提升网页取回目标分辨率的媒体数据片段的效率,从而大大提高用户的观看体验。

附图说明

图1为本公开实施例提供的容器的一个可选的结构示意图;

图2为本公开实施例提供的mp4文件的一个可选的封装结构示意图;

图3为本公开实施例提供的媒体文件中的媒体数据容器存储媒体数据的结构示意图;

图4为本公开实施例提供的fmp4文件的一个可选的封装结构示意图;

图5为本公开实施例提供的媒体播放控制系统的一个可选的架构示意图;

图6为本公开实施例提供的分辨率切换时的接续播放装置的一个可选的硬件结构示意图;

图7为本公开实施例提供的分辨率切换时的接续播放装置一个可选的组成示意图;

图8为本公开实施例提供的分辨率切换时的接续播放装置另一个可选的组成示意图;

图9为本公开实施例提供的分辨率切换时的接续播放装置另一个可选的组成示意图;

图10为本公开实施例提供的分辨率切换时的接续播放方法的一个可选的实现流程示意图;

图11为本公开实施例提供的播放器通过网页的媒体资源扩展接口发送目标分辨率分段媒体文件给网页的媒体元素进行解码播放的流程示意图;

图12为本公开实施例提供的播放器通过网页的媒体资源扩展接口播放目标分辨率分段媒体文件的一个可选的示意图;

图13为本公开实施例提供的封装目标分辨率分段媒体文件的一个可选的实现流程示意图;

图14为本公开实施例提供的从元数据容器解析得到媒体信息的一个可选的流程示意图;

图15为本公开实施例提供的分辨率切换时的接续播放方法的另一个可选的实现流程示意图;

图16为本公开实施例提供的分辨率切换时的接续播放方法的另一个可选的实现流程示意图;

图17为本公开实施例提供的分辨率切换时的接续播放方法的另一个可选的实现流程示意图。

具体实施方式

为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本公开。

对本公开进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释。

1)媒体文件,以容器(box,也称为盒子)的方式存储进行编码的媒体数据(例如音频数据和视频数据中的至少一种)的文件,其中还包括用以表达媒体信息以保证媒体数据被正确解码的元数据。

例如,采用动态图像专家组(mpeg,movingpictureexpertsgroup)-4封装格式封装媒体数据的形成的媒体文件被称为mp4文件。典型地,mp4文件中存储高级视频编码(avc,advancedvideocoding,即h.264)或mpeg-4(part2)规范编码的视频数据和高级音频编码(aac,advancedaudiocoding)规范编码的音频数据,当然不排除视频和音频的其他编码方式。

2)容器(box),也称为盒子,由唯一的类型标识符和长度定义的面向对象的构件,参见图1,图1为本公开实施例提供的容器的一个可选的结构示意图,包括容器头部(boxheader)和容器数据(boxdata),其中填充有用于表达各种信息的二进制数据。

容器头部包括容量(size)和类型(type),容量指明了容器在媒体文件中所占用的长度,类型指明了容器的类型,参见图2,图2为本公开实施例提供的mp4文件的一个可选的封装结构示意图,mp4文件中涉及的基本容器类型包括文件类型容器(ftypbox)、元数据容器(moovbox)和媒体数据容器(mdatbox)。

容器数据部分可以存储具体的数据,此时容器称为“数据容器”,容器数据部分也可以进一步封装其他类型的容器,此时容器称为“容器的容器”。

3)轨道(track),也称为流(stream),媒体数据容器中按时间排序的相关的采样(sample),对于媒体数据来说,轨道表示一个视频帧序列或一个音频帧序列,还可以包括与视频帧序列同步的字幕轨,同一轨道中的一组连续的采样称为块(chunk)。

4)文件类型容器,媒体文件中用于存储文件的容量(即所占用字节的长度)和类型的容器,如图2所示,文件类型容器记为“ftypbox”,其中存储的二进制数据按照规范的字节长度描述了文件的类型和兼容性。

5)元数据容器,媒体文件中用于存储元数据(即描述媒体数据容器中存储的多媒体数据的数据)的容器,在mp4文件中的元数据容器中存储的二进制数据表达的信息称为媒体信息。

如图2所示,元数据容器的头部采用二进制数据表示容器的类型为“moovbox”,容器数据部分封装用于存储mp4文件的总体信息的mvhd容器,是独立于mp4文件的,并且与mp4文件的播放相关,包括时长、创建时间和修改时间等。

媒体文件的媒体数据容器中可以包括对应多个轨道的子容器,例如音频轨道容器(audiotrackbox)和视频轨道容器(videotrackbox),在音频轨道容器和视频轨道容器的子容器中都包括了相应轨道的媒体数据的引用和描述,必要的子容器包括:用于描述轨道的特性和总体信息(如时长、宽高)的容器(记为tkhdbox)、记录轨道的媒体信息(比如媒体类型和采样的信息)的容器(记为mdiabox)。

就mdiabox中封装的子容器而言,可以包括:记录轨道的相关属性和内容的容器(记为mdhdbox),记录媒体的播放过程信息的容器(记为hdlrbox),描述轨道中媒体数据的媒体信息的容器(记为minfbox);minfbox中又封装了用于解释如何定位媒体信息的子容器(记为dinfbox)、以及用于记录轨道中采样的所有时间信息(解码时间/显示时间)、位置信息和编解码等信息的子容器(记为stblbox)。

参见图3,图3为本公开实施例提供的媒体文件中的媒体数据容器存储媒体数据的结构示意图,利用从stblbox中二进制数据所识别出的媒体信息,可以解释采样的时间、类型、容量以及在媒体数据容器中的位置,下面说明stblbox中的各个子容器。

stsdbox包含了一个采样描述(sampledescription)表,根据不同的编码方案和存储数据的文件数目,每个媒体文件中可以有一个或多个描述表,通过描述表可以找到每个采样的描述信息,描述信息可以保证采样的正确的解码,不同的媒体类型存储不同的描述信息,例如,视频媒体而言描述信息就是图像的结构。

sttsbox存储了采样的时长信息,并提供表来映射时间(解码时间)和采样的序号,通过sttxbox可以定位媒体文件中任何时间的采样;sttsbox中还使用其他的表来映射采样的容量和指针,表中每个条目提供了在同一个时间偏移量里面连续的采样的序号,以及采样的偏移量,递增这些偏移量,可以建立一个完整的时间-采样的映射表,计算公式如下:

dt(n+1)=dt(n)+stts(n)(1)

其中,stts(n)是第n个采样的时长,dt(n)是第n个采样的显示时间,采样的排列是按照时间的顺序排序,这样偏移量永远是非负的,dt一般以0开始,以第i个采样的显示时间dt(i)为例,计算公式如下:

dt(i)=sum(forj=0toi-1ofdelta(j))(2)

所有偏移量的和是轨道中媒体数据的时长。

stssbox记录了媒体文件中的关键帧的序号。

stsbox记录了采样与存储采样的块的映射关系,通过表来映射采样的序号和块的序号之间的关系,通过查表可以找到包含指定采样的块。

stcobox定义了每个块在轨道中的位置,位置采用在媒体数据容器的起始字节的偏移量、以及相对于所述起始字节的长度(即容量)表示。

stszbox记录了媒体文件中每个采样的容量(即大小)。

6)媒体数据容器,媒体文件中用于存储多媒体数据的容器,例如,在mp4文件中媒体数据容器,如图3所示,采样是媒体数据容器中存储的单位,存储在媒体文件的块中,块和样本的长度可不相同。

7)分段媒体文件,媒体文件经过分割形成的子文件,每个分段媒体文件能够被独立解码。

以mp4文件为例,mp4文件中的媒体数据根据关键帧分割,分割后的媒体数据与对应的元数据封装形成分段mp4(fmp4,fragmentedmp4)文件,每个fmp4文件中的元数据能够保证媒体数据被正确解码。

例如,在将如图2所示的mp4文件转换为多个fmp4文件时,参见图4,图4为本公开实施例提供的fmp4文件的一个可选的封装结构示意图,一个mp4文件可以转换为多个fmp4文件,每个fmp4文件包括三个基本的容器:moov容器、moof容器和mdat容器。

moov容器包括了mp4文件级别的元数据,用来描述fmp4文件所来源的mp4文件中的全部媒体数据,例如mp4文件的时长、创建时间和修改时间等。

moof容器存储了分段级别的元数据,用于描述所在的fmp4文件中封装的媒体数据,保证fmp4中的媒体数据能够被解码。

1个moof容器和1个mdat容器组成分段mp4文件的1个分段,1个分段mp4文件中可以包括1个或多个这样的分段,每个分段中封装的元数据保证分段中封装的媒体数据能够被独立解码。

8)媒体资源扩展(mse,mediasourceextensions)接口,在网页中实现的面向播放器的接口,在网页中的加载期间通过浏览器的解释器解释、执行前端编程语言(例如javascript)而实现,向播放器提供调用超文本标记语言(html)媒体元素(mediaelement)的播放媒体流的功能,例如使用视频元素<video>、以及音频元素<audio>来实现视频/音频的播放功能。

9)流媒体格式,把媒体数据封装为流媒体的媒体文件,媒体文件不必完整下载、不需要额外转码,即可被解码播放,即,原生地支持一边下载,一边播放的封装技术。典型的流媒体格式的文件包括:基于http直播流(hls,httplivestreaming)技术的ts媒体文件分片,flv(flashvideo)文件等。

10)非流媒体格式,把媒体数据封装为媒体文件、且媒体文件完整下载后才可以被解码播放的封装技术,典型的非流媒体格式的文件包括:mp4文件,视窗媒体视频(wmv,windowsmediavideo)文件,高级串流格式(asf,advancedstreamingformat)文件等。

需要指出,mp4文件原生不支持流媒体形式的播放,但是通过在线转码后向播放器转码后的媒体流、或者部分下载的mp4文件的缺失部分填充无效的二进制数据(例如,在ftyp容器和moov容器完整下载的情况下,填充mdat容器的缺失部分以无效的二进制数据代替)也能实现一边下载一边播放的技术效果,本文中将这种原生不支持流媒体播放的文件的封装格式都称为非流媒体格式。

现在将参考附图描述实现本公开实施例的媒体播放控制系统中的播放器、服务器以及网页间交互的处理过程。参见图5,图5为本公开实施例提供的媒体播放控制系统的一个可选的架构示意图;播放器用于对网页中播放的媒体文件进行播放控制,当正在播放的原分辨率媒体文件发生分辨率切换事件时,想要取回目标分辨率的媒体数据片段,此时,播放器先向服务器发送播放请求,以请求获取位于实时播放点之后的目标分辨率的分段媒体文件,当播放器从服务器获取用于接续实时播放点的目标分辨率的分段媒体文件之后,将目标分辨率的分段媒体文件发送给网页,在内嵌的网页中播放目标分辨率的分段媒体文件。

基于上述图5所示的媒体播放控制系统的实现架构,首先说明实现本公开实施例的分辨率切换时的接续播放装置,分辨率切换时的接续播放装置可以提供为硬件、软件或者软硬件结合的方式。

下面说明分辨率切换时的接续播放装置的软硬件结合的实施。具体地,现在将参考附图描述实现本公开实施例的分辨率切换时的接续播放装置的硬件结构,该分辨率切换时的接续播放装置可以以各种类型的播放器,比如应用到嵌入浏览器所加载的网页中的html5(简称h5)播放器或播放媒体文件的应用程序等来实施。

下面对本公开实施例的分辨率切换时的接续播放装置的硬件结构做进一步说明,可以理解,图6仅仅示出了分辨率切换时的接续播放装置的示例性结构而非全部结构,根据需要可以实施图6示出的部分结构或全部结构。

参见图6,图6为本公开实施例提供的分辨率切换时的接续播放装置的一个可选的硬件结构示意图,可以用于各种形式的播放器,比如应用到嵌入浏览器所加载的网页中的h5播放器或播放媒体文件的应用程序。分辨率切换时的接续播放装置600可以是带有包括带有视频播放功能的移动电话、计算机、数字广播终端、信息收发设备、游戏控制台、平板设备、医疗设备、健身设备、个人数字助理等。图6所示的分辨率切换时的接续播放装置600可以包括:至少一个处理器601、存储器602、用户接口603和至少一个网络接口604。所述分辨率切换时的接续播放装置600中的各个组件通过总线系统605耦合在一起。可以理解,总线系统605用于实现这些组件之间的连接通信。总线系统605除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统605。

其中,用户接口603可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。

可以理解,存储器602可以是易失性存储器或非易失性存储器,也可以包括易失性和非易失性存储器两者。

本公开实施例中的存储器602包括但不限于:三态内容寻址存储器、静态随机存储器能够存储从服务器所获取的媒体文件数据以支持分辨率切换时的接续播放装置600的操作。这些数据的示例包括:用于在分辨率切换时的接续播放装置600上操作的任何可执行指令,如可执行程序(应用程序)6021和操作系统6022;各类型媒体文件数据信息等。其中,操作系统6022包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序6021可以包含各种应用程序,例如带有媒体文件转换功能的客户端、或应用程序等。实现本公开实施例的分辨率切换时的接续播放方法的程序可以包含在可执行程序6021中。

本公开实施例揭示的分辨率切换时的接续播放方法可以应用于处理器601中,或者由处理器601实现。处理器601可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,分辨率切换时的接续播放方法的各步骤可以通过处理器601中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器601可以是通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器601可以实现或者执行本公开实施例中提供的各分辨率切换时的接续播放方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本公开实施例所提供的分辨率切换时的接续播放方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器602中,处理器601读取存储器602中的信息,结合其硬件完成本公开实施例提供的分辨率切换时的接续播放方法。

下面说明分辨率切换时的接续播放装置的纯硬件实施,实现本公开实施例分辨率切换时的接续播放装置可以被一个或多个应用专用集成电路(asic,applicationspecificintegratedcircuit)、dsp、可编程逻辑器件(pld,programmablelogicdevice)、复杂可编程逻辑器件(cpld,complexprogrammablelogicdevice)、现场可编程门阵列(fpga,field-programmablegatearray)或其他电子元件实现,用于执行实现本公开实施例提供的分辨率切换时的接续播放方法。

下面说明分辨率切换时的接续播放装置的纯软件实施,实现本公开实施例的分辨率切换时的接续播放装置可以采用应用程序或插件,或者二者结合的方式实现。

作为示例,应用程序可以是专用于进行媒体文件播放的客户端,针对不同硬件平台而预先编译有对应的安装包。

作为示例,插件可以实现为应用程序的功能升级安装包,在用于媒体播放的应用程序中叠加媒体播放控制的功能;也可以是媒体播放的网页中的元素,采用前端语言实现,通过被浏览器直接解释执行而在网页中实现媒体播放以及媒体播放控制的功能。

在示例性实施例中,本公开实施例提供了一种存储介质,存储介质可为光盘、闪存或磁盘等存储介质,可选为非瞬间存储介质。作为示例,软件模块可以位于存储介质中,存储介质可以是如图6示出的存储器602,处理器601读取存储器602中的信息,结合其硬件完成本公开实施例提供的应用于媒体播放控制系统的分辨率切换时的接续播放方法,其中,存储介质上存储有可执行指令,所述可执行指令被执行时实现本公开实施例提供的分辨率切换时的接续播放方法。

作为分辨率切换时的接续播放装置的硬件实施或软件实施的示例,分辨率切换时的接续播放装置可以提供为一系列在信号/信息/数据层面存在耦合关系的模块,下面将结合图7进行说明,参见图7,图7为本公开实施例提供的分辨率切换时的接续播放装置一个可选的组成示意图,示出了实现分辨率切换时的接续播放装置包括的一系列模块,但是分辨率切换时的接续播放装置的模块结构不仅限于图7所示,例如,可以对其中的模块根据所实现的不同功能而进一步拆分或者合并。

下面说明分辨率切换时的接续播放装置的纯硬件实施,分辨率切换时的接续播放装置可以为用于运行各种类型的播放器,比如嵌入浏览器所加载的网页中的h5播放器或播放媒体文件的应用程序,图7为本公开实施例提供的分辨率切换时的接续播放装置的一个可选的组成示意图;如图7所示,分辨率切换时的接续播放装置包括检测模块701、获取模块702和加载模块703。下面对各模块进行详细说明。

检测模块701,用于当播放器在所内嵌的网页播放分段媒体文件的过程中,检测接收到分辨率切换事件时播放原分辨率的分段媒体文件的实时播放点。

获取模块702,用于获取用于接续所述实时播放点的分段媒体文件,其中,所述用于接续实时播放点的分段媒体文件为基于目标分辨率的媒体文件形成。

加载模块703,用于通过所述播放器加载所述目标分辨率的分段媒体文件,以接续所述原分辨率的分段媒体文件在所述网页中进行播放。

在本公开实施例中,对于获取模块702获取用于接续所述实时播放点的分段媒体文件来说,可以采用如下方式来实现:首先,从服务器请求目标分辨率的媒体文件中的元数据;然后,根据从所述元数据中识别出的媒体信息,确定用于接续所述实时播放点的两个关键帧,以请求所述两个关键帧之间的媒体数据;最后,根据所请求的媒体数据、以及对应的元数据封装形成对应的目标分辨率的分段媒体文件。

在本公开一可选示例中,加载模块703,还用于在播放原分辨率的分段媒体文件的过程中,通过所述播放器预加载有所述实时播放点之后的至少一个原分辨率的分段媒体文件。

获取模块702,还用于当获取到所述目标分辨率的分段媒体文件,且原分辨率的下一分段媒体文件已经在播放时,继续请求获取所述目标分辨率的用于接续实时播放点的下一分段媒体文件,直至在所述原分辨率的下一分段媒体文件播放结束之前,取回所述目标分辨率的下一分段媒体文件。

在本公开另一可选示例中,图8为本公开实施例提供的分辨率切换时的接续播放装置另一个可选的组成示意图;如图8所示,分辨率切换时的接续播放装置中的加载模块703,还用于在播放原分辨率的分段媒体文件的过程中,通过所述播放器预加载有所述实时播放点之后的至少一个原分辨率的分段媒体文件。

该装置还包括:播放模块704,用于当原分辨率的分段媒体文件的实时播放点为所述当前所播放的原分辨率的分段媒体文件的结束时刻时,通过所述播放器继续在所述网页使用已经预加载的原分辨率的下一分段媒体文件进行播放。

在本公开另一可选示例中,图9为本公开实施例提供的分辨率切换时的接续播放装置另一个可选的组成示意图,如图9所示,该分辨率切换时的接续播放装置还包括:存放模块705,用于在检测模块701检测接收到分辨率切换事件时播放原分辨率的分段媒体文件的实时播放点之前,当通过所述播放器接收到播放请求时,根据所述播放请求的接收顺序,将所接收的播放请求存放于缓冲队列中进行排队。

分配模块706,用于在所述存放模块将所接收的播放请求存放于缓冲队列中进行排队之后,根据所述缓冲队列能够使用的并发连接数上限,以及所述接收顺序,为所述缓冲队列中的所述播放请求分配连接;其中,所述连接用于供所述播放器请求待播放的分段媒体文件。

所述分辨率切换时的接续播放装置还包括:管理模块707,用于当获取模块702获取到接续实时播放点的所述目标分辨率的分段媒体文件时,清空所述缓冲队列中针对原分辨率的播放请求,以及取消针对所述原分辨率的播放请求已经分配的连接。

在本公开另一可选的示例中,管理模块707,还用于当获取模块702获取到接续实时播放点的所述目标分辨率的分段媒体文件时,清空预缓存的用于接续实时播放点的原分辨率的分段媒体文件。

至此,已经按照其功能描述了本公开实施例中涉及的分辨率切换时的接续播放装置,基于上述分辨率切换时的接续播放装置的可选硬件结构示意图和组成结构示意图,下面再结合附图对实现本公开实施例中的分辨率切换时的接续播放方法的处理过程进行详细说明。

图10为本公开实施例提供的分辨率切换时的接续播放方法的一个可选的实现流程示意图,实现本公开实施例的终端设备可通过运行各种类型的播放器来实现分辨率切换时的接续播放方法,就终端设备而言,可以是台式机电脑和笔记本电脑等各种终端设备。

作为一个示例,播放器是嵌入浏览器(或者是内嵌浏览器的任意应用程序)所加载的网页中的h5播放器,使用面向前端的语言(例如javascript)实现,当浏览器加载用于媒体播放的网页时,播放器代码与网页元素一并被下载到浏览器,由于播放器采用面向前端的语言实现,因此不需要经过编译,而由浏览器直接解释、执行播放器代码即可在网页中实现播放器的功能,适应平台广泛,实现效率高。预加载是指,播放器将媒体文件分段添加到mse的媒体源的缓存中,由网页的媒体元素根据虚拟地址(以媒体源为数据源)播放。

作为另一个示例,播放器是用于播放媒体文件的应用程序,通过在终端设备中运行预先编译封装的安装包程序而安装到终端设备中。播放器加载是指,加载到播放器的缓存中。

如图10所示,对于本公开实施例中的分辨率切换时的接续播放方法的实现流程,将结合图10示出的步骤进行说明。

步骤1001:当播放器在所内嵌的网页播放分段媒体文件的过程中,播放器检测接收到分辨率切换事件时播放原分辨率的分段媒体文件的实时播放点。

步骤1002:播放器获取用于接续所述实时播放点的分段媒体文件,其中,所述用于接续实时播放点的分段媒体文件为基于目标分辨率的媒体文件形成。

这里,播放器内嵌于网页中播放分段媒体文件(适用于原分辨率的分段媒体文件和目标分辨率的分段媒体文件),也就是说,播放器通过内嵌的方式显示于网页的播放窗口中。在实际应用中,播放器在网页中播放多个媒体文件时,则可以通过网页中的多个并发的播放窗口进行并行的播放。

在本公开实施例中,实时播放点是依据原分辨率的分段媒体文件的播放进度而不断更新的。这里,播放点可以是指通过跳转操作所到达的时刻,例如原播放点为播放进度的20%,经过跳转操作后的播放点为播放进度的30%;当然,播放点还可以是指连续播放的方式到达的时刻,例如从第30分钟开始播放到第40分钟所对应的播放点。

一般情况下,对于整个媒体文件而言,可对应有多个分段媒体文件,包括以下两种情况:

情况1)在网页中播放的媒体文件本身可以就是支持以流媒体方式播放的文件,是一系列的分段媒体文件的集合,例如是基于超文本传输协议直播流(hls,httplivestreaming)的流媒体文件,则媒体文件实质是一系列连续的ts文件(即分段媒体文件)的集合,ts文件能够被独立解码播放,从而使得媒体文件能够原生地支持一边下载,一边播放。请求获取的目标分辨率的分段媒体文件,也就是解码时间位于实时播放点之后的ts文件,一次请求的数量可以为一个或多个。

情况2)在网页中播放的媒体文件本身是不支持以流媒体方式播放的非流媒体文件,如mp4文件,分段媒体文件是分段mp4文件(即fmp4文件),由播放器从mp4文件中提取媒体数据和元数据,经过适当的处理后(按照fmp4的封装结构计算新的元数据)并按照fmp4的封装结构填充形成的可独立解码播放的文件。

对于上述情况1)而言,由于目标分辨率媒体文件是流媒体文件,因此,播放器在所内嵌的网页中播放目标分辨率分段媒体文件是基于网页接收到播放器发送的播放请求实现的,即通过播放请求直接获取待播放的目标分辨率分段媒体文件;对于上述情况2)而言,由于目标分辨率媒体文件是非流媒体文件,因此,播放器请求目标分辨率媒体数据之后还需要将非流媒体文件与对应的元数据进行封装才能够形成对应的目标分辨率分段媒体文件,而不是直接请求获取目标分辨率分段媒体文件。

在一个实施例中,对于构造的目标分辨率分段媒体文件,下面结合附图说明播放器通过网页的媒体资源扩展接口播放目标分辨率分段媒体文件的实现方式。

参见图11,图11为本公开实施例提供的播放器通过网页的媒体资源扩展接口发送目标分辨率分段媒体文件给网页的媒体元素进行解码播放的流程示意图,将结合图11示出的步骤进行说明。

步骤1101:播放器将目标分辨率分段媒体文件添加到媒体资源扩展接口中的媒体源对象。

参见图12,图12为本公开实施例提供的播放器通过网页的媒体资源扩展接口播放目标分辨率分段媒体文件的一个可选的示意图,当播放器在网页中播放窗口(播放器对应播放窗口)接收到原分辨率的媒体文件的播放事件时,播放器通过执行媒体资源扩展接口中封装的mediasource方法创建媒体源(mediasource)对象;执行媒体资源扩展接口中封装的addsourcebuffer方法创建mediasource对象的缓存,即源缓存(sourcebuffer)对象,一个mediasource对象拥有一个或多个sourcebuffer对象,每个sourcebuffer对象可以用于对应网页中的一个播放窗口,用于接收窗口中待播放的目标分辨率分段媒体文件。

在目标分辨率媒体文件的播放过程中,播放器中的解析器(parser)通过解析新获取的媒体数据,不断构造新的目标分辨率分段媒体文件,通过执行sourcebuffer对象的appendbuffer方法,添加目标分辨率分段媒体文件到同一个mediasource对象的sourcebuffer对象。

步骤1102:播放器调用媒体资源扩展接口创建对应媒体源对象的虚拟地址。

此外,播放器将mediasource对象设置为虚拟url的源(src)属性,也就是将虚拟url与网页中的媒体元素如video/audio元素绑定,这个过程也称为将媒体源对象关联到网页中的媒体元素。

步骤1103:播放器向网页的媒体元素传递虚拟地址,虚拟地址用于供媒体元素以媒体源对象为数据源进行播放。

在一个实施例中,说明为缓冲队列中的播放请求分配连接的实现方式,当通过播放器接收到来自网页的播放请求时,根据播放请求的接收顺序,将所接收的播放请求存放于缓冲队列中进行排队;根据缓冲队列能够使用的并发连接数上限,以及播放请求的接收顺序,为缓冲队列中的播放请求分配连接。

这里,缓冲队列是独立于内嵌浏览器所加载的网页而存在的,且缓冲队列具有能够使用的并发连接数上限。当网页中内嵌的播放器发起的播放请求存在至少两个时,按照至少两个播放请求的接收顺序,将所接收的播放请求存放于缓冲队列中进行排队等待,以先入队列等待先分配的方式为播放请求分配相应的连接,连接用于供播放器请求待播放的分段媒体文件。

示例性地,播放请求可以是播放器通过网页发起的基于超文本传输协议(http,hypertexttransportprotocol)的请求,还可以是基于安全套接层的超文本传输协议(https,hypertexttransferprotocoloversecuresocketlayer)的请求,后者通过加密传输的方式可以避免数据在传输过程中被第三方截获和破解。

需要指出,缓冲队列中的播放请求分配连接的数量不超出并发连接数上限,缓冲队列能够使用的并发连接数,可以用于表示缓冲队列能够同时使用的连接的数目,一般地,缓冲队列的并发连接数据上限未达到时,每个播放请求能够被分配一个连接,以从服务器请求媒体数据。

所述并发连接数可依据用户对网页中的业务的性能的需求确定,例如,当用户对网页中的其他业务(如非视频播放或网页浏览)的延迟容忍程度较高时,则可配置的并发连接数的取值较某些业务的延迟容忍程度较低时更大的并发连接数取值。

下面根据缓冲队列能够使用的并发连接数上限和接收顺序说明为缓冲队列中的播放请求分配连接的实现方式,可以采用以下两种方式中的至少一种来实现:

方式1)当为所接收的播放请求分配的连接未达到所述并发连接数上限时,根据所述接收顺序,依次为所述缓冲队列中的播放请求分配相应的连接,直至分配的连接的数量达到所述并发连接数上限。

方式2)当为所接收的播放请求分配的连接达到所述并发连接数上限时,清除所述缓冲队列中释放连接的播放请求,以及根据所述接收顺序,为所述缓冲队列中的播放请求分配相应的连接,直至分配的连接的数量达到所述并发连接数上限。

对于上述方式1)而言,主要是采用先入先分配连接的策略,即根据所接收的播放请求的接收顺序,为缓冲队列中排队等待的所有的播放请求分别分配相应的连接。

对于上述方式2)而言,由于在为所接收的播放请求分配的连接的数量达到并发连接数上限时,缓冲队列中可能仍然存放有未分配连接的播放请求,对于这些请求来说需要等待空闲的连接,因此,要实时监测缓冲队列中是否存在播放请求释放连接的情况,当监测到缓冲队列中有播放请求释放连接时,即可清除缓冲队列中释放连接的播放请求,以获得空闲的连接,进而采用先入先分配连接的策略,为缓冲队列中排队等待的播放请求分配空闲的连接,直至使得分配的连接的数量达到并发连接数上限,并继续实时监测缓冲队列。

这里,并发连接数上限可以具有静态配置的属性,且所述并发连接数小于所述网页的并发连接数上限。举例来说,静态配置的并发连接数上限在播放器中可通过属性开放接口进行配置。具体来说,所述并发连接数上限可以支持由播放器的开发方、或者运营视频的业务方通过属性开放接口进行静态配置。其中,缓冲队列能够使用的并发连接数上限大于或等于2,且小于或等于网页中的并发播放窗口的数量。

需要指出,并发连接数上限是根据网页中并发播放窗口的需求进行自适应配置的。本公开实施例中将并发连接数上限的最小值设置为2而不是1,主要是因为网页中会存在有两个播放窗口同时播放的情况,相对于并发连接数上限的最小值为1的情况而言,将并发连接数上限的最小值设置为2,能够避免出现后播放的播放窗口无响应(因为只有1个连接)而需要等待的情况,进而使两个播放窗口具有实时响应的性能。

在本公开实施例中,所述缓冲队列能够使用的并发连接数上限可以预先设定,其中,可由播放器根据操作系统的连接数配置规范进行设定,也可由播放器接收浏览器的关于并发连接数上限进行设定;当然,也可以由播放器自主设定,例如根据宿主设备的特征参数进行设定。

下面对播放器根据宿主设备的特征参数设定的方案进行举例说明:首先,检测所述播放器的宿主设备的特征参数;然后,根据所述特征参数,动态确定适配所述宿主设备的性能的并发连接数上限,并发连接数小于网页的并发连接数上限。

在一个示例中,对于根据所述特征参数,动态确定适配宿主设备的性能的并发连接数上限来说,可以采用如下方式来实现:当宿主设备的特征参数的变化符合变化条件时,确定适配变化幅度的并发连接数上限。

举例来说,当检测到播放器的宿主设备的特征参数所发生的变化出现明显的抖动时,可以根据抖动幅度适应调低缓冲队列能够使用的并发连接数上限;当检测到播放器的宿主设备的特征参数所发生的变化有明显的改善时,可以根据改善的量化幅度适应调高缓冲队列能够使用的并发连接数上限。

这里,对于调低或调高并发连接数上限的实现方式而言,可以是等比例调低或调高并发连接数上限,也可以是非等比例调低或调高并发连接数上限,本公开实施例在此不做具体限定。

下面以等比例调低或调高并发连接数上限为采用阶梯式的方式对并发连接数上限进行调整为例进行说明。假设缓冲队列能够使用的并发连接数上限的初始值为8,预先设定特征参数的抖动幅度每变化一次,并发连接数上限的初始值等比例的降低一个数值,当检测到播放器的宿主设备的特征参数所发生的变化出现明显的抖动,且抖动幅度由5变为3,可见,特征参数的抖动幅度变化了两次,相应地,可将并发连接数上限的初始值由8降低为6。预先设定特征参数改善的量化幅度每变化一次,并发连接数上限的初始值等比例的调高一个数值,当检测到播放器的宿主设备的特征参数所发生的变化有明显的改善时,且改善的量化幅度由2变为5,可见,特征参数的改善的量化幅度变化了三次,则可将并发连接数上限的初始值由8提高为11。

在另一个示例中,并发连接数可以根据网页的网络参数进行设定:检测网页的网络参数,根据网络参数动态确定并发连接数上限。例如,网络参数可以包括浏览器能够使用的网络带宽、以及播放请求的网络延迟。

这里,以网络参数为浏览器能够使用的网络带宽为例,当网络带宽较高时,则取回媒体数据的延迟较小,因此,此时可以配置较带宽低时更小的并发连接数上限,即网络带宽与并发连接数上限是负相关的关系,也即网络带宽越高,并发连接数上限越小;网络带宽越低,并发连接数上限越大。

需要指出,本公开实施例记载的目标分辨率媒体文件可以是流媒体格式或非流媒体格式。

在一个实施例中,针对目标分辨率媒体文件是流媒体文件的情况,播放请求用于向服务器请求给定时段(用于接续播放器的实时播放点)内的目标分辨率分段媒体文件,通过网页的媒体资源扩展接口发送到网页的媒体元素进行解码,从而实现目标分辨率媒体文件的连续播放。

作为示例,给定时段是在播放点之后的预加载时长,用于在播放点之后预加载部分的媒体文件,用以实现流畅的观看体验。给定时段的长度可以由播放器与网络参数或宿主设备的特征参数相适配,以实现终端资源和/或网络资源的优化利用。

作为示例,给定时段也可以是播放点之后的至少一个内容单元的长度,其中内容单元用于依据媒体文件中的人物、场景和情节等划分形成,用以表示媒体文件中内容的变化,以最大程度避免给定时段被用户跳跃从而消耗不必要流量。

在一个实施例中,针对目标分辨率媒体文件是非流媒体文件的情况,播放器通过确定目标分辨率媒体文件中接续实时播放点的给定时段,进而确定目标分辨率媒体文件中对应给定时段的两个关键帧(关键帧的解码之间所界定的时段形成给定时段,或者,包括给定时段),进而从服务器请求两个关键帧之间的媒体数据,以此构造能够独立解码播放的目标分辨率媒体文件,通过网页的媒体资源扩展接口发送到网页的媒体元素进行解码,从而实现目标分辨率媒体文件的连续播放。

其中,播放点对应的时间是相对于媒体时间坐标系统(以媒体文件的播放开始时间为时间原点)的时间度量,给定时段的长度小于媒体文件的长度,例如媒体文件长度的预定比例5%,或者是设定的长度如10分钟。

下面继续对根据给定时段确定目标分辨率媒体文件中对应的两个关键帧的方式进行说明。

在本公开实施例中,对于本步骤1002中的获取用于接续所述实时播放点的分段媒体文件来说,可以采用如下方式来实现:从所述服务器请求目标分辨率的媒体文件中的元数据;然后,根据从所述元数据中识别出的媒体信息,确定用于接续所述实时播放点的两个关键帧,向所述服务器请求所述两个关键帧之间的媒体数据;最后,根据所请求的媒体数据、以及对应的元数据封装形成对应的目标分辨率的分段媒体文件。

举例来说,当目标分辨率媒体文件为mp4文件(不支持流媒体播放形式的文件)时,目标分辨率分段媒体文件是基于在媒体文件中确定的两个关键帧,从目标分辨率媒体文件中抽取两个关键帧之间的视频帧、以及对齐的音频帧,计算对应的元数据,并按照fmp4的封装格式填充形成的。

在一个实施例中,针对播放点是通过连续播放目标分辨率媒体文件的方式到达的播放时刻的情况,根据播放点对应的视频帧及给定时段的结束时间对应的视频帧为普通帧或关键帧的情况,说明确定两个关键帧(设为第一关键帧、以及解码时间是第一关键帧之后的第二关键帧)的实现方式。

情况1)播放点所对应的视频帧为普通帧,由于播放器以两个关键帧之间的媒体数据为基本播放加载单位,因此,播放点之后的首个关键帧(解码时间晚于播放点的关键帧中距离播放点最近的关键帧)之前的媒体数据为已加载的媒体数据,而为了避免重复获取该部分已加载的媒体数据,给定时段的两个关键帧中的第一关键帧为:目标分辨率媒体文件中解码时间在播放点之后的首个关键帧。

情况2)播放点所对应的视频帧为关键帧,给定时段的两个关键帧中的第一关键帧为:播放点对应的关键帧,即与给定时段的起始时间对齐的关键帧。

情况3)若给定时段的结束时间对应的视频帧为普通帧,由于播放器以两个关键帧之间的媒体数据为基本播放加载单位,因此,若将结束时间之前的关键帧作为给定时段的第二关键帧,则会漏获取该关键帧与结束时间对应的视频帧之间的媒体数据,则进行目标分辨率媒体文件播放的时候,结束时间之前的关键帧到结束时间对应的视频帧之间的媒体数据则无法实现播放而跳帧,因此,为了保证给定时段的结束时间对应的视频帧能够正常播放不会出现跳帧的情况,给定时段的两个关键帧中的第二关键帧为:解码时间晚于给定时段的结束时间的关键帧中距离结束时间最近的关键帧。

情况4)给定时段的结束时间对应的视频帧为关键帧,给定时段的两个关键帧中的第二关键帧为:解码时间对齐给定时段的结束时间的第二关键帧,即与给定时段的结束时间对齐的关键帧。

在上述情况1)和3)中,将跨越播放点的关键帧作为给定时段的媒体数据的端点,能够保证在播放点所对应的视频帧有足够的信息用于正确解码,不会出现因为缺少解码数据(即关键帧)而跳帧的情况。

在上述情况2)和4)中,对于播放点对齐关键帧的情况,则直接将对齐的关键帧作为给定时间段的媒体数据的端点,最大程度减少请求多余数据的情况,避免对连接和流量的占用导致网页中非媒体播放业务延迟的情况。

在另一个实施例中,针对播放点是通过跳转的方式到达的播放时刻的情况,根据播放点对应的视频帧及给定时段的结束时间对应的视频帧为普通帧或关键帧的情况,说明确定两个关键帧(设为第一关键帧、以及解码时间第一关键帧之后的第二关键帧)的实现方式。

情况1)播放点所对应的视频帧为普通帧,由于播放点是跳转到达的,因此播放点之前的首个关键帧、与播放点之间的媒体数据没有被加载,第一关键帧为:目标分辨率媒体文件中解码时间在播放点之前的首个关键帧,也即是媒体数据的时间(也即是,媒体信息所表示的序号与帧的解码时间的对应关系)中查找解码时间早于给定时段的起始时间、且距离起始时间最近的关键帧。

通过额外请求播放点至播放点之前的关键帧之间的媒体数据,可以保证跳转到任何播放点都能够正常解码,避免出现播放点对应普通帧时因为无法解码而跳帧的情况。

情况2)播放点所对应的视频帧为关键帧,第一关键帧为:播放点所对应的关键帧,也即是从媒体数据的时间(也即是媒体信息所表示的序号与帧的解码时间的对应关系)中查找的解码时间对齐给定时段的起始时间的关键帧。

情况3)给定时段的结束时间对应的视频帧为普通帧,第二关键帧为:解码时间晚于给定时段的结束时间、且距离结束时间最近的关键帧。

在上述情况1)和3)中,将跨越播放点的关键帧作为给定时段的媒体数据的端点,能够保证在播放点所对应的视频帧有足够的信息用于正确解码,不会出现因为缺少解码数据(即关键帧)而跳帧的情况。

情况4)给定时段的结束时间对应的视频帧为关键帧,第二关键帧为:解码时间对齐给定时段的结束时间的关键帧。

在情况2)和4)中,以对齐播放点的关键帧来界定待获取的媒体数据,在播放点能够被正确解码的前提下,最大程度减少了获取不必要的媒体数据的情况,减少了对连接和流量的占用,进而保证网页中非媒体播放业务的实时性。

下面说明根据目标分辨率媒体数据封装成目标分辨率分段媒体文件的实现方式,首先,将目标分辨率媒体数据和与媒体数据对应的元数据,封装成对应的目标分辨率分段媒体文件;然后,将目标分辨率分段媒体文件通过媒体资源扩展接口传递给网页的媒体元素进行播放。

在一个实施例中,播放器通过这样的方式封装成对应的目标分辨率分段媒体文件:从服务器获取目标分辨率媒体文件中对应给定时段的媒体数据,其中给定时段用于接续播放点,将根据媒体数据、以及描述媒体数据的元数据根据目标分辨率分段媒体文件的封装结构进行封装,形成能够用于被网页的媒体元素独立解码的目标分辨率分段媒体文件,继续结合图13说明。

参见图13,图13为本公开实施例提供的封装目标分辨率分段媒体文件的一个可选的实现流程示意图,将结合图13示出的步骤进行说明。

步骤1301:将表示目标分辨率分段媒体文件的类型和兼容性的数据,填充到目标分辨率分段媒体文件的文件类型容器中。

步骤1302:将表示所述目标分辨率分段媒体文件的文件级别的元数据,填充到所述目标分辨率分段媒体文件的元数据容器中。

在一个实施例中,根据向目标分辨率分段媒体文件的封装结构待填充的媒体数据,根据目标分辨率分段媒体文件中的元数据容器的嵌套结构,计算填充嵌套结构所需要的描述媒体数据的元数据。

步骤1303:将所提取的媒体数据、以及描述所述媒体数据的元数据,对应填充到所述目标分辨率分段媒体文件的分段容器中的媒体数据容器、以及分段级别的元数据容器中。

在一个实施例中,目标分辨率分段媒体文件中可以封装有一个或多个分段(fragment),对于待填充的媒体数据而言,可以填充到目标分辨率分段媒体文件的一个或分段的媒体数据容器(即mdatbox)中,每个分段中封装有分段级别的元数据容器(记为moofbox),其中填充的元数据用以描述分段中填充的媒体数据,使分段能够被独立解码。

在步骤1301至步骤1303中填充数据到相应容器的一个实施例中,当执行填充操作时,调用类的写操作功能在所述子容器的内存缓冲区完成二进制数据的写入和合并,以及返回所述类的实例,所返回的实例用于合并所述子容器与具有嵌套关系的子容器的合并。

在对目标分辨率分段媒体文件进行封装之前,需要计算待填充的媒体数据的元数据,这需要结合目标分辨率媒体文件中的元数据计算,以得到目标分辨率分段媒体文件级别的元数据(例如对于fmp4文件而言,对应填充到moovbox中的元数据),以及目标分辨率分段媒体文件中分段级别的元数据(例如对应fmp4文件而言,对应填充到moofbox中的元数据)。

下面,说明解析目标分辨率媒体文件的元数据容器中封装的元数据得到用于描述目标分辨率媒体文件的媒体数据容器中封装的媒体数据的媒体信息的示例性实施。

在本公开的一个实施例中,目标分辨率媒体文件为mp4文件,解析目标分辨率媒体文件的元数据容器中子容器的嵌套结构,根据嵌套结构读取出各子容器中的二进制数据;从所读取出的二进制数据解析出各子容器表征的媒体数据的媒体信息。

在本公开的一个实施例中,提供根据容器类型设置解析器,根据容器类型解析元数据容器中的子容器从而得到媒体信息的方式,将结合图14进行说明。

参见图14,图14为本公开实施例提供的从元数据容器解析得到媒体信息的一个可选的流程示意图,将结合图14示出的步骤进行说明。

步骤1401:定位元数据容器在目标分辨率媒体文件中的位置。

在一个实施例中,通过从目标分辨率媒体文件的二进制数据读取符合容器头部规范的二进制数据,根据读取的二进制数据中识别的容器的类型和长度,直至定位元数据容器在目标分辨率媒体文件中的偏移量和容量。

步骤1402:根据元数据容器在目标分辨率媒体文件中的位置从目标分辨率媒体文件的二进制数据中获取对应元数据容器的二进制数据。

元数据容器在目标分辨率媒体文件中的位置以偏移量和容量表示,从目标分辨率媒体文件中读取以偏移量对应的位置开始读取二进制数据,直至读取的二进制数据的长度符合元数据容器的容量,从而读取出元数据容器对应的二进制数据。

步骤1403:顺序解析元数据容器二进制数据中对应容器头部的规范长度的二进制数据,得到元数据容器中子容器的容器类型、以及子容器的容器数据的长度。

在一个实施例中,针对元数据容器中嵌套多个子容器的情况,每次读取二进制数据的偏移量都是已经识别出子容器长度的加和,所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出当前所处理子容器的类型和长度。

步骤1404:调用与子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与容器数据的长度相应的二进制数据,得到容器数据所表示的媒体信息。

在本公开一个可选的示例中,当播放器在网页中播放原分辨率的分段媒体文件的过程中,通过所述播放器预加载有所述实时播放点之后的至少一个原分辨率的分段媒体文件;当播放器获取到所述目标分辨率的分段媒体文件,且检测到原分辨率的下一分段媒体文件已经在播放时,则继续请求获取所述目标分辨率的用于接续实时播放点的下一分段媒体文件,直至在所述原分辨率的下一分段媒体文件播放结束之前,取回所述目标分辨率的下一分段媒体文件。

在本公开另一个可选的示例中,当播放器在网页中播放原分辨率的分段媒体文件的过程中,通过所述播放器预加载有所述实时播放点之后的至少一个原分辨率的分段媒体文件;当确定原分辨率的分段媒体文件的实时播放点为所述当前所播放的原分辨率的分段媒体文件的结束时刻时,通过所述播放器继续在所述网页中使用已经预加载的原分辨率的下一分段媒体文件进行播放。

这里,预加载的分段媒体文件对应的媒体数据是通过播放请求取回的,且通过每个播放请求可以取回一个分段媒体文件对应的媒体数据;也就是说,对于整个媒体文件而言,可通过一次或多次播放请求取回,将每次取回的数据封装成虚拟url对象,以供网页的媒体元素传递虚拟url进行播放分段媒体文件。

需要指出,本公开实施例中的原分辨率的分段媒体文件与目标分辨率的分段媒体文件,不是同一分段媒体文件,即播放器检测接收到分辨率切换事件时,是基于服务器存储的目标分辨率的媒体文件形成用于接续所述实时播放点的分段媒体文件。

步骤1003:通过所述播放器加载所述目标分辨率的分段媒体文件,以接续所述原分辨率的分段媒体文件在所述网页中进行播放。

在本公开实施例中,所述方法还包括:当获取到接续实时播放点的所述目标分辨率的分段媒体文件时,清空所述缓冲队列中针对原分辨率的播放请求,以及取消针对所述原分辨率的播放请求已经分配的连接。

在本公开另一实施例中,所述方法还包括:当获取到接续实时播放点的所述目标分辨率的分段媒体文件时,清空预缓存的用于接续实时播放点的原分辨率的分段媒体文件。

举例来说,分段媒体数据是通过播放请求取回的(即这里是通过每个播放请求分别取回一个分段媒体数据),在检测到发生分辨率切换事件时,假设缓冲时间为固定的15s,当播放器在网页中播放至10s时已经通过三次播放请求取回了11s-25s的媒体数据,比如取回的这三个分段媒体数据如下所示:10s-12s,12s-18s,以及18s-25s对应的媒体数据。

当播放器确定发生分辨率切换事件(例如从当前的分辨率(超清)切换到目标分辨率(高清))时,检测接收到分辨率切换事件时播放超清的分段媒体文件的实时播放点为11s,对于缓冲队列中存放的播放请求,可进行如下的管理操作(以下操作不分先后顺序):

a)假设在播放超清的分段媒体文件的过程中,在15s内完成高清数据的请求,请求切换分辨率,此时检测到超清的分段媒体文件的实时播放点已经从11s加载到12s,由于12s是当前所播放的超清的分段媒体文件的结束时刻,则通过播放器继续在网页中使用已经预加载的超清的下一分段媒体文件进行播放,即使用已经预加载的超清的12s-18s的分段媒体文件进行播放。

b)假设在发送请求时已获取到用于接续11s的高清的分段媒体文件,则清空缓冲队列中11s之后的针对超清数据的播放请求,以及取消针对超清的播放请求已经分配的连接(即不再预加载11s之后的超清数据)。

c)假设请求11s之后的高清数据,实质上是请求11s之后的关键帧对应的高清数据,而与11s相邻的关键帧对应的时间戳可能恰好是11s,也可能是11s之后的任意一个时刻例如13s,假设与11s相邻的关键帧对应的时间戳在13s-17s之间,并且取回高清数据时超清数据已经播放到了12s,由于12s-18s的超清数据已经在播放而无法清空,则继续请求18s之后的高清数据,假设请求到18s-25s的高清数据,当在播放至18s之前取回时,清空18s-25s的超清数据,使用18s-25s的高清数据进行播放。

采用本公开实施例的技术方案,通过采用预加载机制对原分辨率的分段媒体文件进行预加载,播放器将媒体文件以分段媒体文件的形式在所嵌入的网页中播放,根据分辨率切换事件获取用于接续实时播放点的目标分辨率的分段媒体文件,以接续原分辨率的分段媒体文件在网页中进行播放,克服了需要重新请求目标分辨率的媒体文件导致出现的网络延迟,使得整个媒体文件播放流畅,进而避免出现播放卡顿的现象,能够有效提升网页取回目标分辨率的媒体数据片段的效率,从而大大提高用户的观看体验。

图15为本公开实施例提供的分辨率切换时的接续播放方法的另一个可选的实现流程示意图;该分辨率切换时的接续播放方法可以应用于各种类型的播放器,比如应用到嵌入浏览器所加载的网页中的h5播放器或播放媒体文件的应用程序中;如图15所示,对于本公开实施例中的另一种分辨率切换时的接续播放方法的实现流程,将结合图15示出的步骤进行说明。

步骤1501:当播放器在所内嵌的网页播放分段媒体文件的过程中,播放器检测接收到分辨率切换事件时播放原分辨率的分段媒体文件的实时播放点。

在本公开实施例中,播放点可以是通过跳转操作所到达的时刻,例如原播放点为播放进度的20%,经过跳转操作后的播放点为播放进度的30%;当然,播放点还可以是连续播放的方式到达的时刻,例如从第30分钟开始播放到第40分钟所对应的播放点。

步骤1502:在网页播放原分辨率的分段媒体文件的过程中,通过播放器预加载有实时播放点之后的至少一个原分辨率的分段媒体文件。

其中,播放请求会通过所分配的连接向服务器请求目标分辨率分段媒体文件,当通过所述播放请求获得目标分辨率分段媒体文件中的媒体数据时,首先,将目标分辨率媒体数据和与媒体数据对应的元数据,封装成对应的目标分辨率分段媒体文件;然后,将目标分辨率分段媒体文件通过媒体资源扩展接口传递给网页的媒体元素进行播放。

需要指出的是,可基于关键帧将目标分辨率媒体文件中的媒体数据分割成多个子文件,将分割后的媒体数据与对应的元数据封装成对应的目标分辨率分段媒体文件,这里的每个分段媒体文件能够被独立解码。

这里,预加载是指,播放器将目标分辨率媒体文件分段添加到mse的媒体源的缓存(sourcebuffer)中,由网页的媒体元素根据虚拟地址(以媒体源为数据源)播放。所述播放请求可以是播放器通过网页发起的基于http的请求,还可以是基于https的请求。

步骤1503:当获取到目标分辨率的分段媒体文件,且原分辨率的下一分段媒体文件已经在播放时,播放器继续请求获取目标分辨率的用于接续实时播放点的下一分段媒体文件,直至在原分辨率的下一分段媒体文件播放结束之前,取回目标分辨率的下一分段媒体文件。

步骤1504:通过播放器加载目标分辨率的下一分段媒体文件,以接续原分辨率的下一分段媒体文件在网页中进行播放。

这里,播放器加载是指,加载到播放器的缓存中。对于预加载的原分辨率的分段媒体文件和目标分辨率的分段媒体文件而言,可通过播放请求取回,且通过每个播放请求可以取回一个分段媒体文件;也即对于整个媒体文件而言,可通过一次或多次播放请求取回,将每次取回的数据封装成虚拟url对象,以供网页的媒体元素传递虚拟url进行播放分段媒体文件。

图16为本公开实施例提供的分辨率切换时的接续播放方法的另一个可选的实现流程示意图;该分辨率切换时的接续播放方法可以应用于各种类型的播放器,比如应用到嵌入浏览器所加载的网页中的h5播放器或播放媒体文件的应用程序中;如图16所示,对于本公开实施例中的另一种分辨率切换时的接续播放方法的实现流程,将结合图16示出的步骤进行说明。

步骤1601:当播放器在所内嵌的网页播放分段媒体文件的过程中,播放器检测接收到分辨率切换事件时播放原分辨率的分段媒体文件的实时播放点。

步骤1602:在网页播放原分辨率的分段媒体文件的过程中,通过播放器预加载有实时播放点之后的至少一个原分辨率的分段媒体文件。

这里,所述播放请求可以是播放器通过网页发起的基于http的请求,还可以是基于https的请求。

其中,播放请求会通过所分配的连接向服务器请求目标分辨率分段媒体文件,当通过所述播放请求获得目标分辨率分段媒体文件中的媒体数据时,首先,将目标分辨率媒体数据和与媒体数据对应的元数据,封装成对应的目标分辨率分段媒体文件;然后,将目标分辨率分段媒体文件通过媒体资源扩展接口传递给网页的媒体元素进行播放。

需要指出的是,与媒体数据对应的元数据是指与媒体数据对应的分段级别的元数据。可基于关键帧将目标分辨率媒体文件中的媒体数据分割成多个子文件,将分割后的媒体数据与对应的元数据封装成对应的目标分辨率分段媒体文件,这里的每个分段媒体文件能够被独立解码。

步骤1603:当原分辨率的分段媒体文件的实时播放点为当前所播放的原分辨率的分段媒体文件的结束时刻时,通过播放器继续在网页中使用已经预加载的原分辨率的下一分段媒体文件进行播放。

图17为本公开实施例提供的分辨率切换时的接续播放方法的另一个可选的实现流程示意图;该分辨率切换时的接续播放方法可以应用于各种类型的播放器,比如应用到嵌入浏览器所加载的网页中的h5播放器或播放媒体文件的应用程序中;如图17所示,对于本公开实施例中的另一种分辨率切换时的接续播放方法的实现流程,将结合图17示出的步骤进行说明。

步骤1701:当播放器接收到来自网页的播放请求时,播放器根据播放请求的接收顺序,将所接收的播放请求存放于缓冲队列中进行排队。

步骤1702:播放器根据缓冲队列能够使用的并发连接数上限,以及接收顺序,为缓冲队列中的播放请求分配连接。

这里,所述连接用于供所述播放器请求待播放的分段媒体文件。

在本公开实施例中,为缓冲队列中的播放请求分配连接的数量不超出并发连接数上限。缓冲队列能够使用的并发连接数,可以用于表示缓冲队列能够同时使用的连接的数目,一般地,缓冲队列的并发连接数据上限未达到时,每个播放请求能够被分配一个连接,以从服务器请求媒体数据。其中,并发连接数可依据用户对网页中的业务的性能的需求确定,例如,当用户对网页中的其他业务(如非视频播放或网页浏览)的延迟容忍程度较高时,则可配置的并发连接数的取值较某些业务的延迟容忍程度较低时更大的并发连接数取值。

对于本步骤1702中的播放器根据缓冲队列能够使用的并发连接数上限,以及接收顺序,为缓冲队列中的播放请求分配连接来说,可以采用以下两种方式中的至少一种来实现:

方式1)当为所接收的播放请求分配的连接未达到所述并发连接数上限时,根据所述接收顺序,依次为所述缓冲队列中的播放请求分配相应的连接,直至分配的连接的数量达到所述并发连接数上限。

方式2)当为所接收的播放请求分配的连接达到所述并发连接数上限时,清除所述缓冲队列中释放连接的播放请求,以及根据所述接收顺序,为所述缓冲队列中的播放请求分配相应的连接,直至分配的连接的数量达到所述并发连接数上限。

步骤1703:当播放器在所内嵌的网页通过连接请求播放分段媒体文件的过程中,检测接收到分辨率切换事件时播放原分辨率的分段媒体文件的实时播放点。

步骤1704:播放器从服务器获取用于接续实时播放点的分段媒体文件,其中,用于接续实时播放点的分段媒体文件为基于目标分辨率的媒体文件形成。

在本公开实施例中,对于本步骤1704中的播放器从服务器获取用于接续实时播放点的分段媒体文件来说,可以采用以下方式来实现:首先,播放器从所述服务器请求目标分辨率的媒体文件中的元数据;然后,播放器根据从所述元数据中识别出的媒体信息,确定用于接续所述实时播放点的两个关键帧,并向所述服务器请求所述两个关键帧之间的媒体数据;最后,播放器根据所请求的媒体数据、以及对应的元数据封装形成对应的目标分辨率的分段媒体文件。

举例来说,当目标分辨率媒体文件为mp4文件(不支持流媒体播放形式的文件)时,目标分辨率分段媒体文件是基于在目标分辨率媒体文件中确定的两个关键帧,从目标分辨率媒体文件中抽取两个关键帧之间的视频帧、以及对齐的音频帧,计算对应的元数据,并按照fmp4的封装格式填充形成的。

步骤1705:当获取到接续实时播放点的目标分辨率的分段媒体文件时,播放器清空缓冲队列中针对原分辨率的播放请求,以及取消针对原分辨率的播放请求已经分配的连接。

在本公开另一可选实施例中,当获取到接续实时播放点的所述目标分辨率的分段媒体文件时,播放器清空预缓存的用于接续实时播放点的原分辨率的分段媒体文件。

综上所述,本公开实施例具有以下有益效果:克服了需要重新请求目标分辨率的媒体文件导致出现的网络延迟,使得整个媒体文件播放流畅,进而避免出现播放卡顿的现象,能够有效提升网页取回目标分辨率的媒体数据片段的效率,从而大大提高用户的观看体验。

本公开实施例所记载的各技术方案之间,在不冲突的情况下,可以任意组合。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

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