CN110545467B - 一种媒体文件加载控制方法、装置及存储介质 - Google Patents

一种媒体文件加载控制方法、装置及存储介质 Download PDF

Info

Publication number
CN110545467B
CN110545467B CN201810531892.6A CN201810531892A CN110545467B CN 110545467 B CN110545467 B CN 110545467B CN 201810531892 A CN201810531892 A CN 201810531892A CN 110545467 B CN110545467 B CN 110545467B
Authority
CN
China
Prior art keywords
media file
time
media
segmented
player
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810531892.6A
Other languages
English (en)
Other versions
CN110545467A (zh
Inventor
银国徽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201810531892.6A priority Critical patent/CN110545467B/zh
Publication of CN110545467A publication Critical patent/CN110545467A/zh
Application granted granted Critical
Publication of CN110545467B publication Critical patent/CN110545467B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Television Signal Processing For Recording (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种媒体文件加载控制方法,包括:检测播放器播放媒体文件过程中所到达的播放点;获取播放时间晚于所述播放点的两个时间戳之间的分段媒体文件,所述两个时间戳构成所述分段媒体文件的播放时间段;通过所述播放器预加载所获取的分段媒体文件。本公开还提供一种媒体文件加载控制装置及存储介质。

Description

一种媒体文件加载控制方法、装置及存储介质
技术领域
本公开涉及媒体文件加载控制技术,尤其涉及一种媒体文件加载控制方法、装置及存储介质。
背景技术
通过网页播放多媒体信息时,多媒体信息的缓冲或加载由网页浏览器完成;具体实现为网页浏览器从当前播放点开始,加载当前播放点至结束点分段的多媒体数据,加载过程中浏览器不能控制缓存或加载的多媒体数据的大小。如此,当用户选择性的观看加载的多媒体数据时,造成了流量的不必要消耗。
发明内容
有鉴于此,本公开实施例提供一种媒体文件加载控制方法、装置及存储介质,能够在播放多媒体信息时,减少流量的不必要消耗。
一方面,本公开实施例提供一种媒体文件加载控制方法,包括:
检测播放器播放媒体文件过程中所到达的播放点;
获取播放时间晚于所述播放点的两个时间戳之间的分段媒体文件,所述两个时间戳构成所述分段媒体文件的播放时间段;
通过所述播放器预加载所获取的分段媒体文件。
另一方面,本公开实施例还提供一种媒体文件加载控制装置,包括:
检测单元,用于检测播放器播放媒体文件过程中所到达的播放点;
获取单元,用于获取播放时间晚于所属播放点的两个时间戳之间的分段媒体文件,所述两个时间戳构成所述分段媒体文件的播放时间段;
加载单元,用于通过所述播放器预加载所获取的分段媒体文件。
再一方面,本公开实施例提供一种媒体文件加载控制装置,包括:
存储器,用于存储可执行指令;
处理器,用于通过执行所述存储器中存储的可执行指令实现本公开实施例提供的媒体文件加载控制方法。
又一方面,本公开实施例还提供一种存储介质,所述存储介质中存储有可执行指令,所述可执行指令被执行时,用于实现本公开实施例提供的媒体文件加载控制方法。
可执行指令,可以解释成安装包、程序、代码、插件、库(动态/静态库)的上位概念。
本公开实施例中,检测播放器播放媒体文件过程中所到达的播放点;获取播放时间晚于所述播放点的两个时间戳之间的分段媒体文件,所述两个时间戳构成所述分段媒体文件的播放时间段;通过所述播放器预加载所获取的分段媒体文件。如此,通过预先将媒体文件划分得到多个分段媒体文件,播放器加载播放点之后的部分分段媒体文件,或加载播放点之后的唯一一个分段媒体文件,使得用户在选择性观看播放点之后加载的分段媒体文件时,由于播放器预先加载播放点之后的分段媒体文件,能够避免流量的消耗。
附图说明
图1是本公开实施例提供的容器的一个可选的结构示意图;
图2是本公开实施例提供的MP4文件的一个可选的封装结构示意图;
图3是本公开实施例提供的媒体文件中的媒体数据容器存储媒体数据的结构示意图;
图4是本公开实施例提供的FMP4文件的一个可选的封装结构示意图;
图5是本公开实施例提供的媒体文件加载控制装置的一个可选的结构示意图;
图6是本公开实施例提供的媒体文件加载控制方法的一个可选处理流程示意图;
图7为本公开实施例从媒体文件中提取第一关键帧和第二关键帧之间的媒体数据的一个可选处理流程示意图;
图8是本公开示例提供的封装分段媒体文件的一个可选的流程示意图;
图9是本公开实施例提供的从元数据容器解析得到媒体信息的一个可选的流程示意图;
图10为本公开实施例通过播放器加载所获取的分段媒体文件的一个可选处理流程示意图;
图11是本公开实施例提供的播放器通过网页的媒体源扩展接口发送分段媒体文件给网页的媒体元素进行解码播放的流程示意图;
图12是本公开实施例提供的播放器通过网页的媒体源扩展接口播放分段媒体文件的一个可选的示意图;
图13为本公开实施例提供的MP4文件转换为FMP4文件并通过媒体源扩展接口播放的一个示意图;
图14为本公开实施例提供的应用于播放器的媒体文件加载控制方法的另一个可选处理流程示意图;
图15为本公开实施例提供的媒体文件加载控制装置的组成结构示意图。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本公开。
对本公开进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释。
1)媒体文件,以容器(Box,也称为盒子)的方式存储进行编码的媒体数据(例如音频数据和视频数据中的至少一种)的文件,其中还包括元数据,即描述媒体数据的数据,元数据中承载有确保媒体数据被正确解码的媒体信息。
例如,采用MP4容器格式封装多媒体数据的文件被称为MP4文件,典型地,MP4文件中存储高级视频编码(AVC,Advanced Video Coding,即H.264)或MPEG-4(Part 2)规范编码的视频数据和高级音频编码(AAC,Advanced AudioCoding)规范编码的音频数据,当然不排除视频和音频的其他编码方式。
2)容器(Box),也称为盒子,由唯一的类型标识符和长度定义的面向对象的构件,参见图1,是本公开实施例提供的容器的一个可选的结构示意图,包括容器头部(BoxHeader)和容器数据(Box Data),其中填充有用以表达各种信息的二进制数据。
容器头部包括容量(size)和类型(type),容量指明了容器所占用的存储空间的大小(本文中也称为容量或长度),类型指明了容器的类型,参见图2,是本公开实施例提供的MP4文件的一个可选的封装结构示意图,MP4文件中涉及的基本容器类型包括文件类型容器(ftyp box)、元数据容器(moov box)和媒体数据容器(mdat box)。
容器数据部分可以存储具体的数据,此时容器称为“数据容器”,容器数据部分也可以进一步封装其他类型的容器,此时容器称为“容器的容器”。
3)轨道(Track),媒体数据容器中按时间排序的相关的采样(Sample),对于媒体数据来说,轨道表示一个视频帧序列或一个音频帧序列,还可以包括与视频帧序列同步的字幕轨,同一轨道中的一组连续的采样称为块(Chunk)。
4)文件类型容器,媒体文件中用于存储文件的容量(即所占用字节的长度)和类型的容器,如图2所示,在文件类型容器中存储的二进制数据按照规范的字节长度描述了容器的类型和容量。
5)元数据容器,媒体文件中用于存储元数据(即描述媒体数据容器中存储的多媒体数据的数据)的容器,在MP4文件中的元数据容器中存储的二进制数据表达的信息称为媒体信息。
如图2所示,元数据容器的头部采用二进制数据表示容器的类型为“moovbox”,容器数据部分封装用于存储MP4文件的总体信息的mvhd容器,是独立于MP4文件的,并且与MP4文件的播放相关,包括时长、创建时间和修改时间等。
媒体文件的媒体数据容器中可以包括对应多个轨道的子容器,例如音频轨道容器(audio track box)和视频轨道容器(video track box),在音频轨道容器和视频轨道容器的子容器中都包括了相应轨道的媒体数据的引用和描述,必要的子容器包括:用于描述轨道的特性和总体信息(如时长、宽高)的容器(记为tkhd box)、记录轨道的媒体信息(比如媒体类型和采样的信息)的容器(记为mdia box)。
就mdia box中封装的子容器而言,可以包括:记录轨道的相关属性和内容的容器(记为mdhd box),记录媒体的播放过程信息的容器(记为hdlr box),描述轨道中媒体数据的媒体信息的容器(记为minf box);minf box中又封装了用于解释如何定位媒体信息的子容器(记为dinf box)、以及用于记录轨道中采样的所有时间信息(解码时间/显示时间)、位置信息和编解码等信息的子容器(记为stbl box)。
参见图3,是本公开实施例提供的媒体文件中的媒体数据容器存储媒体数据的结构示意图,利用从stbl box容器中二进制数据所识别出的媒体信息,可以解释采样的时间、类型、容量以及在媒体数据容器中的位置,下面说明stbl box中的各个子容器。
stsd box包含了一个采样描述(sample description)表,根据不同的编码方案和存储数据的文件数目,每个媒体文件中可以有一个或多个描述表,通过描述表可以找到每个采样的描述信息,描述信息可以保证采样的正确的解码,不同的媒体类型存储不同的描述信息,例如,视频媒体而言描述信息就是图像的结构。
stts box存储了采样的时长信息,并提供表来映射时间(解码时间)和采样的序号,通过sttx box,可以定位媒体文件中任何时间的采样;stts box中还使用其他的表来映射采样的容量和指针,表中每个条目提供了在同一个时间偏移量里面连续的采样的序号,以及采样的偏移量,递增这些偏移量,可以建立一个完整的时间-采样的映射表,计算公式如下:
DT(n+1)=DT(n)+STTS(n)(1)
其中STTS(n)是第n个采样的时长,DT(n)是第n个采样的显示时间,采样的排列是按照时间的顺序排序,这样偏移量永远是非负的,DT一般以0开始,以第i个采样的显示时间DT(i)为例,计算公式如下:
DT(i)=SUM(for j=0to i-1of delta(j))(2)
所有偏移量的和是轨道中媒体数据的时长。
stss box记录了媒体文件中的关键帧的序号。
stsc box记录了采样与存储采样的块的映射关系,通过表来映射采样的序号和块的序号之间的关系,通过查表可以找到包含指定采样的块。
stco box定义了每个块在轨道中的位置,位置采用在媒体数据容器的起始字节的偏移量、以及相对于所述起始字节的长度(即容量)表示。
stsz box记录了媒体文件中每个采样的容量(即大小)。
6)媒体数据容器,媒体文件中用于存储多媒体数据的容器,例如,在MP4文件中媒体数据容器,如图3所示,采样是媒体数据容器中存储的单位,存储在媒体文件的块中,块和样本的长度均可互不相同。
7)分段媒体文件,媒体文件经过分割形成的子文件,每个分段媒体文件能够被独立解码。
以MP4文件为例,MP4文件中的媒体数据根据关键帧分割,分割后的媒体数据与对应的元数据封装形成分段MP4(Fragmented MP4)文件,每个FMP4文件中的元数据能够保证媒体数据被正确解码。
例如,在将如图2所示的MP4文件转换为多个FMP4文件时,参见图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,Media Source Extensions)接口,在网页中实现的面向播放器的接口,在网页中的加载期间通过浏览器的解释器解释、执行前端编程语言(例如JavaScript)而实现,向播放器提供调用超文本标记语言(HTML)媒体元素(Media Element)的播放媒体流的功能,例如使用视频元素<video>、以及音频元素<audio>来实现视频/音频的播放功能。
9)流媒体封装格式,把媒体数据封装为流媒体的文件,媒体文件不必完整下载、不需要额外转码,即可被解码播放,即,原生地支持一边下载,一遍播放的封装技术。典型的流媒体封装格式的文件如,基于HTTP直播流(HLS,HTTP Live Streaming)技术的TS媒体文件分片,FLV(Flash Video)文件等。
10)非流媒体封装格式,把媒体数据封装为媒体文件、且媒体文件完整下载后才可以被解码播放的封装技术,典型的非流媒体封装格式的文件包括:MP4文件,视窗媒体视频(WMV,Windows Media Video)文件,高级串流格式(ASF,Advanced Streaming Format)文件等。
需要指出,MP4文件原生不支持流媒体播放,但是通过在线转码后向播放器转码后的媒体流、或者部分下载的MP4文件的缺失部分填充无效的二进制数据(例如,在ftyp容器和moov容器完整下载的情况下,填充mdat容器的缺失部分以无效的二进制数据代替)也能实现一边下载一遍播放的技术效果,本文中这种原生不支持流媒体播放的文件的封装格式都称为非流媒体封装格式。
下面说明实现本公开实施例的播放器获取给定时段内媒体数据的流程。
当播放一部电影或者一个轨道的时候,播放器必须能够正确的解析数据流,对一定的时间获取对应的媒体数据并确保这一段媒体数据能够被独立解码。
1.确定待获取的媒体数据对应的时段,时段是接续播放当前的播放点的一段时间,播放点对应的时间是相对于媒体时间坐标系统(以媒体文件的播放开始时间为时间原点)的时间度量。
2.检查stts box来确定解码时间对应给定时段的采样的序号。
对于音频帧帧来说,检查stts box来确定解码时间对应给定时段的音频帧的序号。
对于视频帧来说,由于采用压缩算法,给定时段内的首帧如果不是关键帧,还需要根据时间顺序向给定时段的开始时间之前追溯到关键帧,以保证给定时段内的帧能够被解码。
3.根据采用的序号查询stsc box来确定包括采样的块的序号。
4.从stco box中查找块的偏移量。
5.根据采样的序号查找stsz box,找到采样在块内的偏移量和采样的容量。
继续说明实现本公开实施例的查找关键帧的流程。
1.确定给定时间内的采样的序号。
2.检查stss box来发现这个采样之后的关键帧。
3.检查stsc box来发现对应该关键帧的块。
4.从stco box中提取块的偏移量。
5.利用stsz box找到关键帧sample在块内的偏移量和关键帧的容量。
下面首先说明实现本公开实施例的媒体文件加载控制装置,媒体文件加载控制装置检测播放器播放媒体文件过程中所到达的播放点;获取播放时间晚于所述播放点的两个时间戳之间的分段媒体文件,所述两个时间戳构成所述分段媒体文件的播放时间段;通过所述播放器预加载所获取的分段媒体文件。
下面继续说明实现本公开实施例的媒体文件加载控制装置的结构。
参见图5,是本公开实施例提供的媒体文件加载控制装置100的一个可选的结构示意图,图5所示的媒体文件加载控制装置包括:至少一个处理器150、至少一个通信总线160、用户接口180、至少一个网络接口170和存储器190。媒体文件加载控制装置100中的各个组件通过通信总线160耦合在一起。可以理解,通信总线160用于实现这些组件之间的连接通信。通信总线160除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为通信总线160。
其中,用户接口180可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。网络接口170可以包括标准的有线接口、无线接口可以是WiFi接口。
可以理解,存储器190可以是高速RAM存储器,也可以是非不稳定的存储器(Non-Volatile Memory),例如至少一个磁盘存储器。存储器190还可以是至少一个在物理位置上远离处理器150的存储系统。
本公开实施例提供的应用于媒体文件加载控制装置的媒体文件加载控制方法可以应用于处理器150中,或者由处理器150实现。处理器150可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,应用于媒体文件加载控制装置的媒体文件加载控制方法中的不同操作可以通过处理器150中的硬件形式的集成逻辑电路或者软件形式的指令完成。上述的处理器150可以是通用处理器、DSP或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,处理器150可以实现或者执行本公开实施例应用于媒体文件加载控制装置的媒体文件加载控制方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本公开实施例所提供的应用于媒体文件加载控制装置的媒体文件加载控制方法,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。
作为示例,软件模块可以位于存储介质中,存储介质可以是如图5示出的存储器190,处理器150读取存储器190中的可执行指令,结合其硬件完成本公开实施例提供的应用于媒体文件加载控制装置的媒体文件加载控制方法的可选处理流程,如图6所示,包括如下步骤:
步骤S101,检测播放器播放媒体文件过程中所到达的播放点;
在一实施方式中,播放点可以是通过播放进度的跳转操作所到达的时刻,例如原播放点为播放进度的20%,跳转后的播放点为30%;播放点还可以是通过连续播放的方式所到达的时刻,例如从第30分钟开始连续播放到第40分钟所到达的时刻。
播放器的形态可以是嵌入网页的H5播放器,也可以是专用的视频播放应用(APP)。
媒体文件基于播放时长被时间戳划分为多个分段媒体文件,或者媒体文件基于位于播放点之后的播放时长被时间戳划分为多个分段媒体文件;每个分段媒体文件具有两个时间戳,用于界定分段媒体文件的播放开始时间和播放结束时间。媒体文件划分的分段媒体文件,可以是等时长的分段媒体文件,也可以是不等时长的分段媒体文件。等时长的分段媒体文件,是指每个分段媒体文件的播放时长都相等。不等时长的分段媒体文件,是指多个分段媒体文件的播放时长都不相等;举例来说,预先设置将播放点之后的播放时长划分为固定的N段,那么,不同的播放点之后的播放时长也不相等,相应的,基于不同的播放点之后的播放时长,划分得到的固定数量的分段媒体文件对应的播放时长也不相等。
在一些实施例中,时间戳可由播放器从媒体文件的存储服务器中获取,存储服务器根据媒体文件的历史播放次数以及媒体文件的大小确定时间戳。在一种实施方式中,存储服务器根据媒体文件的点播频率、完整播放频率等数据计算用户针对整个媒体文件的观看倾向,并对应设定时间戳,以表征跳转播放媒体文件还是完整播放媒体文件。在具体实施时,设定媒体文件的历史播放次数数值越高,则完整播放媒体文件的概率越高,对应媒体文件的时间戳的数量相对较少,即媒体文件被划分为较少的分段媒体文件。在另一种实施方式中,可以根据用户画像区分不同类型观众的历史播放数据,并针对不同类型观众设定对应的时间戳;如此,能够使加载的分段媒体文件最长程度地被观看,而非跳转观看,进而实现流量的节约。
在另一些实施例中,时间戳的信息是由播放器在开始播放媒体文件时,由播放器设定。在一实施方式中,根据媒体文件的播放时长,设定将媒体文件划分为不小于分段时长阈值的分段媒体文件的时间戳。在另一些实施例中,根据播放器历史播放媒体文件的特征,例如完整播放概率、跳转播放概率、或同文件跳转次数设定时间戳,使时间戳对媒体文件的划分符合当前用户的观看倾向。
步骤S102,获取播放时间位于播放点之后的时间戳对应的分段媒体文件。
这里,分段媒体文件包括两个时间戳,分别为第一时间戳和第二时间戳,且第二时间戳晚于第一时间戳。
针对流媒体格式的媒体文件,即为获取媒体文件中与分段媒体文件的播放起始时刻和播放结束时刻之间的分段,每个分段可以独立解码播放。
在一实施方式中,媒体文件加载控制装置根据关键帧的解码时间,查找解码时间在第一时间戳之前、且距离第一时间戳最近的第一关键帧,以及解码时间在第二时间戳之后、且距离第二时间戳最近的第二关键帧;再从媒体文件中提取第一关键帧和第二关键帧之间的媒体数据。如此,能够保证解码后的第一时间戳和第二时间戳之间的媒体数据的完整性。
接下来对确定给定时段对应的两个关键帧进行说明,两个关键帧的解码时间为端点的时段包括给定时段,以两个关键帧之间的媒体作为对应给定时段的媒体数据,构造分段媒体文件进行播放,给定时段用于接续播放器的实时的播放点,从而实现媒体文件的连续播放。
就播放点而言,可以是通过连续播放媒体文件(也即在用户未加以干预的情况下自然播放)的方式到达的播放时刻,例如从第30分钟开始播放到第40分钟的播放点;也可以是通过跳转的方式(也即用户通过光标点击进度条实现页面跳转)到达媒体文件到达的播放时刻,例如原播放点为播放进度的20%,跳转后的播放点为播放进度的30%。
在一些实施例中,针对播放点是通过连续播放媒体文件的方式到达的播放时刻的情况,根据播放点对应的视频帧及给定时段的结束时间对应的视频帧是普通帧或关键帧的情况,说明确定两个关键帧(设为第一关键帧、以及解码时间第一关键帧之后的第二关键帧)的方式。
情况1)播放点所对应的视频帧为普通帧,由于播放器以两个关键帧之间的媒体数据为基本播放加载单位,因此,播放点之后的首个关键帧(解码时间晚于播放点的关键帧中距离播放点最近的关键帧)之前的媒体数据为已加载的媒体数据,而为了避免重复获取该部分已加载的媒体数据,给定时段的两个关键帧中的第一关键帧为:媒体文件中解码时间在播放点之后的首个关键帧。
情况2)播放点所对应的视频帧为关键帧,给定时段的两个关键帧中的第一关键帧为:播放点对应的关键帧,即与给定时段的起始时间对齐的关键帧。
情况3)若给定时段的结束时间对应的视频帧为普通帧,由于播放器以两个关键帧之间的媒体数据为基本播放加载单位,因此,若将结束时间之前的关键帧作为给定时段的第二关键帧,则会漏获取该关键帧与结束时间对应的视频帧之间的媒体数据,则进行媒体文件播放的时候,结束时间之前的关键帧到结束时间对应的视频帧之间的媒体数据则无法实现播放而跳帧,因此为了保证给定时段的结束时间对应的视频帧能够正常播放不会出现跳帧的情况,给定时段的两个关键帧中的第二关键帧为:解码时间晚于给定时段的结束时间的关键帧中距离结束时间最近的关键帧;
情况4)给定时段的结束时间对应的视频帧为关键帧,给定时段的两个关键帧中的第二关键帧为:解码时间对齐给定时段的结束时间的第二关键帧,即与给定时段的结束时间对齐的关键帧。
在上述情况1)、3)中,将跨越播放点的关键帧作为给定时段的媒体数据的端点,能够保证在播放点所对应的视频帧有足够的信息用于正确解码,不会出现因为缺少解码数据(即关键帧)而跳帧的情况。
在上述情况2)、4)中,对于播放点对齐关键帧的情况,则直接将对齐的关键帧作为给定时间段的媒体数据的端点,最大程度减少请求多余数据的情况,避免对连接和流量的占用导致网页中非媒体播放业务延迟的情况。
在另一些实施例中,针对播放点是通过跳转的方式到达的播放时刻的情况,根据播放点对应的视频帧及给定时段的结束时间对应的视频帧是普通帧或关键帧的情况,说明确定两个关键帧(设为第一关键帧、以及解码时间第一关键帧之后的第二关键帧)的方式。
情况1)播放点所对应的视频帧为普通帧,由于播放点是跳转到达的,因此播放点之前的首个关键帧、与播放点之间的媒体数据没有被加载,第一关键帧为:媒体文件中解码时间在播放点之前的首个关键帧,也即是媒体数据的时间(也即是,媒体信息所表示的序号与帧的解码时间的对应关系)中查找解码时间早于给定时段的起始时间、且距离起始时间最近的关键帧。
额外请求播放点至播放点之前的关键帧之间的媒体数据,可以保证跳转到任何播放点都能够正常解码,避免出现播放点对应普通帧时因为无法解码而跳帧的情况。
情况2)播放点所对应的视频帧为关键帧,第一关键帧为:播放点所对应的关键帧,也即是从媒体数据的时间(也即是,媒体信息所表示的序号与帧的解码时间的对应关系)中查找的解码时间对齐给定时段的起始时间的关键帧。
情况3)给定时段的结束时间对应的视频帧为普通帧,第二关键帧为:解码时间晚于给定时段的结束时间、且距离结束时间最近的关键帧。
在上述情况1)、3)中,将跨越播放点的关键帧作为给定时段的媒体数据的端点,能够保证在播放点所对应的视频帧有足够的信息用于正确解码,不会出现因为缺少解码数据(即关键帧)而跳帧的情况。
情况4)给定时段的结束时间对应的视频帧为关键帧,第二关键帧为:解码时间对齐给定时段的结束时间的关键帧。
在情况2)、4)中,以对齐播放点的关键帧来界定待获取的媒体数据,在播放点能够被正确解码的前提下,最大程度减少了获取不必要的媒体数据的情况,减少了对连接和流量的占用,进而保证网页中非媒体播放业务的实时性。
在一些实施例中,从媒体文件中提取第一关键帧和第二关键帧之间的媒体数据的一个可选处理流程,如图7所示,包括以下步骤:
步骤S1021,从媒体文件中提取第一关键帧与第二关键帧之间的视频帧。
步骤S1022,查找解码时间在所述第一关键帧的解码时间之前、且距离所述第一关键帧的解码时间最近的第一音频帧,以及解码时间在所述第二关键帧的解码时间之后、且距离所述第二关键帧的解码时间最近的第二音频帧。
步骤S1023,从媒体文件中提取第一音频帧与第二音频帧之间的音频帧。
第一关键帧与第二关键帧之间的视频帧和第一音帧与第二音频帧之间的音频帧共同构成了第一关键帧和第二关键帧之间的媒体数据。
在一些实施例中,当媒体文件采用非流媒体封装格式时,(即MPEG-4文件格式,本文中也简称为MP4),将提取的媒体数据、以及对应的元数据填充到分段媒体文件的容器中,得到相应的分段媒体文件。
这里,媒体数据包括视频帧和音频帧。
在一些实施例中,播放器从服务器获取媒体文件中对应给定时段的媒体数据,其中给定时段用于接续播放点,将根据媒体数据、以及描述所述媒体数据的元数据根据分段媒体文件的封装结构进行封装,形成能够用于被网页的媒体元素独立解码的分段媒体文件。
参见图8,图8是本公开示例提供的封装分段媒体文件的一个可选的流程示意图,将结合图8示出的步骤进行说明。
步骤S媒体,将表示所述分段媒体文件的类型和兼容性的数据,填充到所述分段媒体文件的文件类型容器中。
例如,以封装形成如图4时所示的封装结构的FMP4文件为例,在FMP4文件的文件类型容器即ftyp box的头部填充容器的类型和长度(表示ftypbox的整体长度),在ftyp box的数据部分填充生成表示文件类型为FMP4以及兼容协议的数据(二进制数据)。
步骤S202,将表示所述分段媒体文件的文件级别的元数据,填充到所述分段媒体文件的元数据容器中。
在一些实施例中,根据向分段媒体文件的封装结构待填充的媒体数据,根据分段媒体文件中的元数据容器的嵌套结构,计算填充嵌套结构所需要的描述媒体数据的元数据。
仍以图4为例,计算表示FMP4文件的文件级别的元数据,并填充到FMP4的元数据容器(即moov box)中,在moov box中嵌套有mvhd、track和视频扩展(mvex,movie extend)三个容器。
其中,mvhd容器中封装的元数据用于表示与分段媒体文件的播放相关的媒体信息,包括位置、时长、创建时间和修改时间等;track容器中嵌套的子容器表示媒体数据中相应轨道的引用和描述,例如track容器中嵌套有描述轨道的特性和总体信息(如时长、宽高)的容器(记为tkhd box)、记录轨道的媒体信息(比如媒体类型和采样的信息)的容器(记为mdia box)。
步骤S203,将所提取的媒体数据、以及描述所述媒体数据的元数据,对应填充到所述分段媒体文件的分段容器中的媒体数据容器、以及分段级别的元数据容器中。
在一些实施例中,分段媒体文件中可以封装有一个或多个分段(fragment),对于待填充的媒体数据而言,可以填充到分段媒体文件的一个或分段的媒体数据容器(即mdatbox)中,每个分段中封装有分段级别的元数据容器(记为moof box),其中填充的元数据用以描述分段中填充的媒体数据,使分段能够被独立解码。
结合图4,以将待填充的媒体数据填充到FMP4文件的封装结构的2个分段中为例,填充到每个分段媒体数据;计算需要填充到相应分段的分段级别的元数据容器(即moofbox)中的元数据,并对应填充到moof box嵌套的子容器中,其中在moof box的头部称为moof box,其中填充的二进制数据用于表示容器的类型为“moof box”以及moof box的长度。
在步骤S201至步骤S203中填充数据到相应容器的一些实施例中,当执行填充操作时,调用类的写操作功能在所述子容器的内存缓冲区完成二进制数据的写入和合并,以及,返回所述类的实例,所返回的实例用于合并所述子容器与具有嵌套关系的子容器的合并。
作为填充数据的一个示例,建立用于实现封装功能的类MP4,将分段媒体文件中的每个子容器封装为类Stream的静态方法;建立用于实现二进制数据操作功能的类Stream,每个类Stream提供有一个内存缓冲区,用来保存待填充的二进制数据;通过Stream提供的静态方法,转换待填充的多字节十进制数据到二进制数据;通过类Stream的实例提供的写操作功能,在内存缓冲区完成待填充到子容器的二进制数据的合并以及填充;Stream提供的静态方法返回一个新的Stream实例,可以实现当前子容器与其他具有嵌套关系的子容器的合并。
分段媒体文件的封装之前,需要计算待填充的媒体数据的元数据,这需要结合媒体文件中的元数据计算,以得到分段媒体文件级别的元数据(例如对于FMP4文件而言,对应填充到moov box中的元数据),以及分段媒体文件中分段级别的元数据(例如对应FMP4文件而言,对应填充到moof box中的元数据)。
下面,说明解析媒体文件的元数据容器中封装的元数据得到用于描述媒体文件的媒体数据容器中封装的媒体数据的媒体信息的示例性实施。
在本公开的一些实施例中,媒体文件为MP4文件,解析媒体文件的元数据容器中子容器的嵌套结构,根据嵌套结构读取出各子容器中的二进制数据;从所读取出的二进制数据解析出各子容器表征的媒体数据的媒体信息。
结合图2所示的结构,MP4文件的moov容器为嵌套结构,对元数据容器中子容器的嵌套结构进行解析,确定moov容器所嵌套的子容器,例如mvhd容器、音频轨道容器和视频轨道容器等,如果子容器还嵌套有容器则继续解析,直至解析到不再嵌套有容器的子容器时,读取相应的子容器中封装的二进制数据,解析得到二进制数据所表示的媒体消息,例如stss box记录的媒体文件中的关键帧的序号,stsz box记录的媒体文件中每个采样的容量(即大小),等等。
在本公开的一些实施例中,提供根据容器类型设置解析器,根据容器类型解析元数据容器中的子容器从而得到媒体信息的方式,将结合图9进行说明。
参见图9,图9是本公开实施例提供的从元数据容器解析得到媒体信息的一个可选的流程示意图,将结合图9示出的步骤进行说明。
步骤S301,定位元数据容器在媒体文件中的位置。
在一些实施例中,通过从媒体文件的二进制数据读取符合容器头部规范的二进制数据,根据读取的二进制数据中识别的容器的类型和长度,直至定位元数据容器在媒体文件中的偏移量和容量。
举例来说,对于媒体文件的二进制数据,从零字节起始的二进制数据对应文件类型容器,通过容器头部的规范长度,读取媒体文件的二进制数据的起始位置,读取符合容器头部的规范长度的二进制数据,解析读取的二进制数据可以确定媒体文件中位于文件类型容器之后的容器的类型和长度。
如果解析出的类型是文件类型容器,则可以解析出元数据容器的长度(即容量),此时元数据容器的偏移量为文件类型容器的长度。
如果解析出的类型是媒体数据容器,则根据媒体数据容器的长度和分类型容器的长度为偏移量,继续读取符合容器头部的规范长度的二进制数据,从而可以解析出元数据容器的长度(即容量),此时元数据容器的长度为文件类型容器的长度与媒体数据容器的长度的加和。
媒体文件中除了起始的容器是文件类型容器,后续容器的封装顺序没有规范,通过上述解析方式,不管媒体文件中容器的封装顺序是文件类型容器、元数据容器和媒体数据容器,还是文件类型容器、媒体数据容器和元数据容器,都能够准确高效定位文件类型容器在媒体文件中的位置。
步骤S302,根据元数据容器在媒体文件中的位置从媒体文件的二进制数据中获取对应元数据容器的二进制数据。
元数据容器在媒体文件中的位置以偏移量和容量表示,从媒体文件中读取以偏移量对应的位置开始读取二进制数据,直至读取的二进制数据的长度符合元数据容器的容量,从而读取出元数据容器对应的二进制数据。
步骤S303,顺序解析元数据容器二进制数据中对应容器头部的规范长度的二进制数据,得到元数据容器中子容器的容器类型、以及子容器的容器数据的长度。
在一些实施例中,针对元数据容器中嵌套多个子容器的情况,每次读取二进制数据的偏移量都是已经识别出子容器长度的加和,所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出当前所处理子容器的类型和长度。
例如,首次读取时,从元数据容器的二进制数据的零字节开始读取二进制数据,且所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出第一个子容器的类型和长度;第二次读取时,以首次读取的子容器的长度为偏移量,开始读取二进制数据,且所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出第二个子容器的类型和长度。
通过上述方式读取二进制数据不会出现多读导致回退的情况,也不会出现及少读而二次读取的情况,解析的效率和正确率得以保证。
步骤S304,调用与子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与容器数据的长度相应的二进制数据,得到容器数据所表示的媒体信息。
在一些实施例中,对元数据容器中嵌套的典型容器类型进行预标记,用于表示容器是直接用于封装二进制数据还是进一步封装有容器,例如对于图2示出的mvhd box、audio track box和video track box等标记进一步封装有容器,对于图2示出的stts box、stsd box等标记为直接封装有二进制数据。
对于标记为直接封装二进制数据的容器类型,设置与容器类型一一对应的解析器,解析器用于根据二进制数据解析出所表示的媒体信息;在步骤S304中,将在步骤S303中解析出的子容器的容器类型与预标记的容器类型比对时,涉及到以下两种情况。
情况1)当通过比对确定子容器的容器类型被预标记、且被预标记为用于直接封装二进制数据时,则调用与子容器的容器类型对应的解析器,通过解析器解析子容器中的容器数据,得到容器数据所表示的媒体信息。
情况2)当通过比对确定子容器的容器类型被预标记、且被预标记为用于继续封装容器时,根据媒体文件中容器头部的规范长度,递归解析子容器所对应的二进制数据,直至解析到子容器中所封装容器的容器类型被预标记、且被预标记为用于直接封装二进制数据,调用与子容器中所封装容器的容器类型相应的解析器,逐字节解析二进制数据,所解析二进制数据的长度与子容器中所封装容器的容器数据的长度对应,以得到子容器中所封装容器的容器数据所表示的媒体信息。
在一些实施例中,对解析元数据容器的过程中记录媒体信息的方式进行说明,在顺序解析元数据容器二进制数据中对应容器头部的规范长度的二进制数据,得到元数据容器中子容器的容器类型时,根据子容器与所归属的容器之间的嵌套关系、以及子容器与所封装的容器嵌套关系建立对象,当子容器的容器类型被预标记为用于直接封装二进制数据时,在对应子容器所建立的对象中存储包括有媒体信息的数组,所存储的媒体信息由子容器的容器数据表示。
例如,在图2中,当解析的子容器的类型为stts box时,由于stts box被预标记为直接封装二进制数据,在对应stts box所建立的对象中存储包括有媒体信息的数组,这里的媒体信息是stts box的容器数据所表示的时长信息。
在一些实施例中,对解析元数据容器的过程中记录子容器之间的嵌套关系的方式说明,在顺序解析元数据容器二进制数据中对应容器头部的规范长度的二进制数据,得到元数据容器中子容器的容器类型时,如果容器类型被预标记为直接封装二进制数据,则在被调用的解析器中记录所解析的子容器;将所记录的子容器的实例设置到子容器属性中,子容器属性包括于子容器所归属的容器,用于描述子容器与所归属的容器之间的嵌套关系。
例如,在图2中,当解析的子容器的类型为stsd box时,由于stsd box被预标记为直接封装二进制数据,在对应stsd box所对应的解析器中记录stsd box,将stsd box的实例设置到stbl box子容器属性中,以此类推,最后在stsd box的子容器属性中记录了stsdbox、stts box、stsc box等多个嵌套于stbl box的子容器。
在一些实施例中,通过比对确定子容器的容器类型没被预标记、或者被预标记为直接封装二进制数据但是没有调用到相应类型的解析器时,忽略解析子容器对应的二进制数据,根据子容器的长度,跳转到二进制数据中对应下一子容器的部分继续解析。
事实上,媒体文件中会出现自定义的容器类型,通过跳转的方式不会影响元数据容器的整体解析的进度,同时通过设置解析器的方式,当元数据容器的容器类型发生变动时,通过对相应类型的解析器的增加、删除和修改,可以快速实现对最新的元数据容器的兼容解析,具有升级灵活快速的特点。
步骤S103,通过播放器加载获取的分段媒体文件。
当播放器以APP的形态实施时,通过播放器加载获取的分段媒体文件是指,将获取的分段媒体文件加载到播放器APP的缓存中。当播放器以H5播放器的形态实施时,且媒体文件为不支持流媒体的文件格式时(本文中也简称为MP4文件),通过播放器加载获取的分段媒体文件是指,H5播放器将分段媒体文件发送给MSE接口,由MSE接口创建媒体源(MediaSource)对象作为虚拟统一资源定位符(Uniform Resource Locator,URL)的源,创建缓存对象(Source Buffer)作为媒体源的缓存,向缓存对象添加分段媒体文件对应的媒体数据(包括视频帧和音频帧);调用网页的媒体元素播放虚拟URL;这里,媒体元素为audio/video标签。
这里,所述网页可以是浏览器的网页,或者内嵌有浏览器内核的APP的网页。
在一实施方式中,通过人机交互确定被选定的分段媒体文件时,通过播放器加载所获取的分段媒体文件的一个可选处理流程,如图10所示,包括以下步骤:
步骤S1031,用户选定播放时间点。
在一些实施例中,用户通过触发播放器的进度上的播放点来选定播放时间点。
步骤S1032,播放器确定所选定的播放时间点所属的播放时间段。
播放器确定用户所选定的播放时间点所属的时间戳区间。
步骤S1033,播放器加载所确定的播放时间段对应的分段媒体文件。
在另一实施方式中,当未通过人机交互确定被选定的分段媒体文件时,按照获取的至少一个分段媒体文件对应的时间戳的起始时刻,通过所述播放器顺序加载所述至少一个分段媒体文件。
这里,当播放点之后有多个分段媒体文件时,不同时加载播放点之后的全部分段媒体文件,即只加载播放点之后的部分分段媒体文件。当播放点之后仅有一个分段媒体文件时,加载该分段媒体文件。
需要说明的是,本公开实施例提供的媒体文件加载控制方法可由播放器来实施。
继续说明播放器向网页的媒体源扩展接口发送分段媒体文件给网页的媒体元素进行解码播放的过程。
参见图11,是本公开实施例提供的播放器通过网页的媒体源扩展接口发送分段媒体文件给网页的媒体元素进行解码播放的流程示意图,将结合图11示出的步骤进行说明。
步骤S401,播放器将分段媒体文件添加到媒体资源扩展接口中的媒体源对象。
参见图12,图12是本公开实施例提供的播放器通过网页的媒体源扩展接口播放分段媒体文件的一个可选的示意图,当播放器在网页中播放窗口(播放器对应播放窗口)接收到媒体文件的播放事件时,播放器通过执行MediaSource方法创建媒体源(Media Source)对象;执行媒体源扩展接口中封装的addSourceBuffer方法创建MediaSource对象的缓存,即源缓存(SourceBuffer)对象,一个MediaSource对象拥有一个或多个SourceBuffer对象,每个SourceBuffer对象可以用于对应网页中的一个播放窗口,用于接收窗口中待播放的分段媒体文件。
在媒体文件的播放过程中,播放器中的解析器(Parser)通过解析新获取的媒体数据,不断构造新的分段媒体文件,通过执行SourceBuffer对象的appendBuffer方法,添加分段媒体文件到同一个SourceBuffer对象的SourceBuffer对象。
步骤S402,播放器调用媒体资源扩展接口创建对应媒体源对象的虚拟地址。
例如,播放器执行媒体源扩展接口中封装的createObjectURL方法,创建对应媒体源对象的虚拟地址,即虚拟URL,其中封装有Blob类型的分段媒体文件。
此外,播放器将MediaSource对象设置为虚拟URL的源(src)属性,也就是将虚拟URL与网页中的媒体元素如video/audio元素绑定,这个过程也称为将媒体源对象关联到网页中的媒体元素。
步骤S403,播放器向网页的媒体元素传递虚拟地址,虚拟地址用于供媒体元素以媒体源对象为数据源进行播放。
例如,播放器中包括有调用媒体元素播放虚拟URL的语句,例如:<audio>虚拟URL。当浏览器解释网页中嵌入的播放器中对应的语句时,使得浏览器的媒体元素到虚拟URL绑定的SourceBuffer对象中读取分段媒体文件,并解码播放。
下面,以播放器将MP4文件转换FMP4文件并通过媒体源扩展接口在网页播放的过程进行说明。
参见图13,图13为本公开实施例提供的MP4文件转换为FMP4文件并通过媒体源扩展接口播放的一个示意图,播放器基于媒体文件的真实地址(http://www.toutiao.com/a/b.mp4),从服务器请求获取MP4文件中部分的媒体数据,例如解码时间处于用于接续播放点的给定时段的数据。
播放器基于获取的媒体数据构造FMP4文件,然后添加到MediaSource对象对应的SourceBuffer对象,由于虚拟URL被绑定到MediaSource对象,因此播放器调用audio/video元素的代码被执行时,audio/video元素从MediaSource对象的SourceBuffer对象读取被不断添加的新的FMP4文件,并解码,实现媒体文件的连续播放。
本公开实施例提供的应用于播放器的媒体文件加载控制方法的可选处理流程,如图14所示,包括以下步骤:
步骤S501,播放器检测播放媒体文件过程中所达到的播放点。
步骤S502,播放器从服务器获取播放时间晚于所述播放点的两个时间戳之间的分段媒体文件。
步骤S503,播放器预加载所获取的分段媒体文件。
步骤S504,播放器响应于用户改变显示分辨率的请求,确定接收所述请求的时刻对应的第三时间戳,以及第四时间戳。
在一实施方式中,播放器接收用户触发的改变媒体文件的显示分辨率的请求,并确定接收所述请求的时刻对应的第三时间戳,以及当前所播放的分段媒体文件结束时刻的第四时间戳。
这里,所述第四时间戳不早于当前播放的分段媒体文件的播放结束时间。
步骤S505,播放器从服务器获取播放时间位于所述第三时间戳和所述第二时间点之间、且为切换的目标分辨率的新分段媒体文件。
在一实施方式中,播放器查找解码时间在第三时间戳之后、且距离第三时间戳最近的第三视频帧,以及解码时间在第四时间戳之前、且距离第四时间戳最近的第四视频帧;播放器从服务器存储的媒体文件中提取第三视频帧和第四视频帧之间的视频帧,作为新分段媒体文件,新分段媒体文件以请求的目标分辨率进行播放。
步骤S506,播放器加载所获取的新分段媒体文件以替换原分辨率的分段媒体文件。
本公开实施例中,播放器的形态可以是嵌入网页的H5播放器,也可以是专用的视频播放APP。
基于上述媒体文件加载控制方法,本公开实施例还提供一种媒体文件加载控制装置,所述媒体文件加载控制装置800的组成结构,如图15所示,包括:
检测单元801,用于检测播放器播放媒体文件过程中所到达的播放点;
获取单元802,用于获取播放时间晚于所属播放点的两个时间戳之间的分段媒体文件,所述两个时间戳构成所述分段媒体文件的播放时间段;
加载单元803,用于通过所述播放器预加载所获取的分段媒体文件。
在一些实施例中,所述媒体文件基于播放时长被所述时间戳划分为多个分段媒体文件,或者,所述媒体文件基于位于所述播放点之后的播放时长被所述时间戳划分为多个分段媒体文件。
在一些实施例中,所述媒体文件的时间戳的信息是从服务器获取,并由所述服务器根据所述媒体文件的历史播放数据设定。
在一些实施例中,所述时间戳的信息是由所述播放器在开始播放所述媒体文件时,由所述播放器设定。
在一些实施例中,所述两个时间戳包括第一时间戳、以及晚于所述第一时间戳的第二时间戳。
所述获取单元802,用于查找解码时间在第一时间戳之前、且距离所述第一时间戳最近的第一关键帧,以及解码时间在第二时间戳之后、且距离所述第二时间戳结束时间点最近的第二关键帧;
从所述媒体文件中提取所述第一关键帧和所述第二关键帧之间的媒体数据。
在一些实施例中,所述获取单元802,用于从所述媒体文件中提取所述第一关键帧与所述第二关键帧之间的视频帧;
查找解码时间在所述第一关键帧的解码时间之前、且距离所述第一关键帧的解码时间最近的第一音频帧,以及解码时间在所述第二关键帧的解码时间之后、且距离所述第二关键帧的解码时间最近的第二音频帧;
从所述媒体文件中提取所述第一音频帧与所述第二音频帧之间的音频帧。
在一些实施例中,所述加载单元803,用于当所述播放器以内嵌于所述网页的方式运行时,
向媒体资源扩展接口发送所述分段媒体文件,所述媒体资源扩展接口用于供所述播放器调用所述网页的媒体元素播放所述分段媒体文件。
在一些实施例中,所述获取单元802,用于当所述媒体文件采用非流媒体封装格式时,
从所述媒体文件中提取所述两个时间戳之间的媒体数据;
将所述提取的媒体数据、以及对应的元数据填充到分段媒体文件的容器中,得到相应的分段媒体文件。
在一些实施例中,所述加载单元803,用于响应于选定播放时间点的操作;
确定所选定的播放时间点所属的播放时间段;
通过所述播放器加载所确定的播放时间段对应的分段媒体文件。
在一些实施例中,所述加载单元803,用于当未通过人机交互确定被选定的分段媒体文件时,
按照获取的至少一个分段媒体文件对应的时间戳的起始时刻,通过所述播放器顺序加载所述至少一个分段媒体文件。
本公开实施例还提供一种媒体文件加载控制装置,包括:
存储器,用于存储可执行指令;
处理器,用于通过执行所述存储器中存储的可执行指令时实现上述的媒体文件加载控制方法。
本公开实施例中,媒体文件加载控制装置可以实施为播放器,播放器的形态可以是嵌入网页的H5播放器,也可以是专用的视频播放APP。
本公开实施例还提供一种存储介质,所述存储介质中存储有计算机可执行指令,该计算机可执行指令用于执行上述的媒体文件加载控制方法。
综上所述,应用本公开上述实施例,具备以下有益效果:
1、通过预先将媒体文件划分得到多个媒体文件分段,播放器加载播放点之后的部分媒体文件分段,或加载播放点之后的唯一一个媒体文件分段,使得用户在选择性观看播放点之后加载的媒体文件分段时,由于播放器预先加载播放点之后的媒体文件分段,能够避免流量的消耗。
2、当需要播放媒体文件的给定时段时,只需要从非流媒体格式的媒体文件提取给定时间的媒体数据,封装为可独立解码的分段媒体文件即可,通过这种方式,一方面,克服了非流媒体格式文件需要完整下载后才可以独立播放的限制,播放实时性好;另一方面,由于仅需要针对给定时段构造分段媒体文件,而不是将完整的媒体文件预先转换为流媒体格式,转换延迟小因此不需要预先存储,除了原始的媒体文件不会占用额外的存储空间,显著降低了对存储空间的占用。
3、将非流媒体格式的媒体文件中的媒体数据转换成分段媒体文件,并通过网页的媒体源扩展接口,发送给网页的媒体元素进行解码播放,实现了播放器通过所内嵌于的网页播放非流媒体格式的媒体文件,克服了非流媒体封装格式文件需要完整下载后才可以独立播放的限制。
4、播放器获取的是媒体文件的关键帧之间的部分媒体数据,实现了对播放媒体文件过程中,媒体数据加载的控制。
5、所封装得到的分段媒体文件基于获取的媒体文件的部分媒体数据,而非媒体文件的全部数据,如此,转换延迟小,不需要预先存储,除了原始的媒体文件不会占用额外的存储空间,显著降低了对存储空间的占用,进一步使得在用户观看过程中进行分辨率切换时,不会出现黑屏或卡顿,提高了分辨率切换的实时性。
6、网页的媒体元素基于虚拟地址获取分段媒体文件进行解码播放,而非基于媒体文件的真实地址进行媒体数据获取并播放,实现了对MP4文件的真实地址的保护。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (22)

1.一种媒体文件加载控制方法,其特征在于,包括:
检测播放器播放媒体文件过程中所到达的播放点,其中,所述播放点是通过播放进度的跳转操作所到达的时刻;
根据播放时间晚于所述播放点的两个时间戳,确定所述两个时间戳之间的分段媒体文件,所述两个时间戳构成所述分段媒体文件的播放时间段,其中,所述时间戳是根据所述播放器历史播放媒体文件的特征确定的;
通过所述播放器预加载所获取的分段媒体文件;
响应于改变显示分辨率的请求,确定接收所述请求的时刻对应的第三时间戳,以及第四时间戳,所述第四时间戳不早于所述分段媒体文件的播放结束时间且晚于所述第三时间戳;
获取播放时间位于所述第三时间戳和所述第四时间戳之间、且为切换至目标分辨率的新分段媒体文件;通过所述播放器加载所获取的新分段媒体文件,其中,所述新的分段媒体文件包括第三视频帧、第四视频帧和两者之间的视频帧,所述第三视频帧为解码时间在所述第三时间戳之后且距离所述第三时间戳最近的视频帧,所述第四视频帧为解码时间在所述第四时间戳之前且距离所述第四时间戳最近的视频帧。
2.根据权利要求1所述的方法,其特征在于,
所述媒体文件基于播放时长被所述时间戳划分为多个所述分段媒体文件,或者,
所述媒体文件基于位于所述播放点之后的播放时长被所述时间戳划分为多个所述分段媒体文件。
3.根据权利要求1所述的方法,其特征在于,
所述媒体文件的时间戳的信息是从服务器获取,并由所述服务器根据所述媒体文件的历史播放数据设定。
4.根据权利要求1所述的方法,其特征在于,
所述媒体文件的时间戳的信息是由所述播放器在开始播放所述媒体文件时,由所述播放器设定。
5.根据权利要求1所述的方法,其特征在于,所述根据播放时间晚于所述播放点的两个时间戳,确定所述两个时间戳之间的分段媒体文件,包括:
所述两个时间戳包括第一时间戳、以及晚于所述第一时间戳的第二时间戳;
查找解码时间在第一时间戳之前、且距离所述第一时间戳最近的第一关键帧,以及解码时间在第二时间戳之后、且距离所述第二时间戳结束时间点最近的第二关键帧;
从所述媒体文件中提取所述第一关键帧和所述第二关键帧之间的媒体数据。
6.根据权利要求5所述的方法,其特征在于,所述从所述媒体文件中提取所述第一关键帧和所述第二关键帧之间的媒体数据,包括:
从所述媒体文件中提取所述第一关键帧与所述第二关键帧之间的视频帧;
查找解码时间在所述第一关键帧的解码时间之前、且距离所述第一关键帧的解码时间最近的第一音频帧,以及解码时间在所述第二关键帧的解码时间之后、且距离所述第二关键帧的解码时间最近的第二音频帧;
从所述媒体文件中提取所述第一音频帧与所述第二音频帧之间的音频帧。
7.根据权利要求1所述的方法,其特征在于,所述通过所述播放器预加载所获取的分段媒体文件,包括:
当所述播放器以内嵌于网页的方式运行时,
向媒体资源扩展接口发送所述分段媒体文件,所述媒体资源扩展接口用于供所述播放器调用所述网页的媒体元素播放所述分段媒体文件。
8.根据权利要求7所述的方法,其特征在于,所述根据播放时间晚于所述播放点的两个时间戳,确定所述两个时间戳之间的分段媒体文件,包括:
当所述媒体文件采用非流媒体封装格式时,
从所述媒体文件中提取所述两个时间戳之间的媒体数据;
将所述提取的媒体数据、以及对应的元数据填充到分段媒体文件的容器中,得到相应的分段媒体文件。
9.根据权利要求1所述的方法,其特征在于,所述通过所述播放器预加载所获取的分段媒体文件,包括:
响应于选定播放时间点的操作;
确定所选定的播放时间点所属的播放时间段;
通过所述播放器加载所确定的播放时间段对应的分段媒体文件。
10.根据权利要求1所述的方法,其特征在于,所述通过所述播放器预加载所获取的分段媒体文件,包括:
当未通过人机交互确定被选定的分段媒体文件时,
按照获取的至少一个分段媒体文件对应的时间戳的起始时刻,通过所述播放器顺序加载所述至少一个分段媒体文件。
11.一种媒体文件加载控制装置,其特征在于,包括:
检测单元,用于检测播放器播放媒体文件过程中所到达的播放点,其中,所述播放点是通过播放进度的跳转操作所到达的时刻;
获取单元,用于根据播放时间晚于所述播放点的两个时间戳,确定所述两个时间戳之间的分段媒体文件,所述两个时间戳构成所述分段媒体文件的播放时间段,其中,所述时间戳是根据所述播放器历史播放媒体文件的特征确定的;
加载单元,用于通过所述播放器预加载所获取的分段媒体文件;
响应单元,用于响应于改变显示分辨率的请求,确定接收所述请求的时刻对应的第三时间戳,以及第四时间戳,所述第四时间戳不早于所述分段媒体文件的播放结束时间且晚于所述第三时间戳;
获取单元,用于获取播放时间位于所述第三时间戳和所述第四时间戳之间、且为切换至目标分辨率的新分段媒体文件,其中,所述新的分段媒体文件包括第三视频帧、第四视频帧和两者之间的视频帧,所述第三视频帧为解码时间在所述第三时间戳之后且距离所述第三时间戳最近的视频帧,所述第四视频帧为解码时间在所述第四时间戳之前且距离所述第四时间戳最近的视频帧;
所述加载单元,还用于通过所述播放器加载所获取的新分段媒体文件。
12.根据权利要求11所述的装置,其特征在于,所述媒体文件基于播放时长被所述时间戳划分为多个所述分段媒体文件,或者,
所述媒体文件基于位于所述播放点之后的播放时长被所述时间戳划分为多个所述分段媒体文件。
13.根据权利要求11所述的装置,其特征在于,所述媒体文件的时间戳的信息是从服务器获取,并由所述服务器根据所述媒体文件的历史播放数据设定。
14.根据权利要求11所述的装置,其特征在于,所述媒体文件的时间戳的信息是由所述播放器在开始播放所述媒体文件时,由所述播放器设定。
15.根据权利要求11所述的装置,其特征在于,所述两个时间戳包括第一时间戳、以及晚于所述第一时间戳的第二时间戳;
所述获取单元,用于查找解码时间在第一时间戳之前、且距离所述第一时间戳最近的第一关键帧,以及解码时间在第二时间戳之后、且距离所述第二时间戳结束时间点最近的第二关键帧;
从所述媒体文件中提取所述第一关键帧和所述第二关键帧之间的媒体数据。
16.根据权利要求15所述的装置,其特征在于,所述获取单元,用于从所述媒体文件中提取所述第一关键帧与所述第二关键帧之间的视频帧;
查找解码时间在所述第一关键帧的解码时间之前、且距离所述第一关键帧的解码时间最近的第一音频帧,以及解码时间在所述第二关键帧的解码时间之后、且距离所述第二关键帧的解码时间最近的第二音频帧;
从所述媒体文件中提取所述第一音频帧与所述第二音频帧之间的音频帧。
17.根据权利要求11所述的装置,其特征在于,所述加载单元,用于当所述播放器以内嵌于网页的方式运行时,
向媒体资源扩展接口发送所述分段媒体文件,所述媒体资源扩展接口用于供所述播放器调用所述网页的媒体元素播放所述分段媒体文件。
18.根据权利要求17所述的装置,其特征在于,所述获取单元,用于当所述媒体文件采用非流媒体封装格式时,
从所述媒体文件中提取所述两个时间戳之间的媒体数据;
将所述提取的媒体数据、以及对应的元数据填充到分段媒体文件的容器中,得到相应的分段媒体文件。
19.根据权利要求11所述的装置,其特征在于,所述加载单元,用于响应于选定播放时间点的操作;
确定所选定的播放时间点所属的播放时间段;
通过所述播放器加载所确定的播放时间段对应的分段媒体文件。
20.根据权利要求11所述的装置,其特征在于,所述加载单元,用于当未通过人机交互确定被选定的分段媒体文件时,
按照获取的至少一个分段媒体文件对应的时间戳的起始时刻,通过所述播放器顺序加载所述至少一个分段媒体文件。
21.一种媒体文件加载控制装置,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于通过执行所述存储器中存储的可执行指令时实现权利要求1至10任一项所述的媒体文件加载控制方法。
22.一种存储介质,其特征在于,所述存储介质中存储有可执行指令,所述可执行指令被执行时,用于实现权利要求1至10任一项所述的媒体文件加载控制方法。
CN201810531892.6A 2018-05-29 2018-05-29 一种媒体文件加载控制方法、装置及存储介质 Active CN110545467B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810531892.6A CN110545467B (zh) 2018-05-29 2018-05-29 一种媒体文件加载控制方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810531892.6A CN110545467B (zh) 2018-05-29 2018-05-29 一种媒体文件加载控制方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN110545467A CN110545467A (zh) 2019-12-06
CN110545467B true CN110545467B (zh) 2023-05-02

Family

ID=68701481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810531892.6A Active CN110545467B (zh) 2018-05-29 2018-05-29 一种媒体文件加载控制方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN110545467B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006172304A (ja) * 2004-12-17 2006-06-29 Nippon Telegr & Teleph Corp <Ntt> マルチメディアメモ装置、マルチメディアメモ記録方法及びマルチメディアメモ再生方法
JP2008141696A (ja) * 2006-12-05 2008-06-19 Toshiba Corp 情報記憶媒体、情報記録方法、情報記憶装置、情報再生方法、及び情報再生装置
CN101557464A (zh) * 2009-04-01 2009-10-14 深圳市融创天下科技发展有限公司 一种在视频节目播放中动态嵌入其他媒体片段的方法
CN101867747A (zh) * 2010-04-30 2010-10-20 广东广联电子科技有限公司 一种快速播放用户喜欢的节目的方法及系统
JP2012234619A (ja) * 2012-06-29 2012-11-29 Toshiba Corp 情報処理方法、情報転送方法、情報制御方法、情報サービス方法、情報表示方法、情報処理装置、情報再生装置、およびサーバ
CN103167358A (zh) * 2011-12-09 2013-06-19 深圳市快播科技有限公司 一种机顶盒、媒体播放处理及媒体恢复播放方法
CN103533439A (zh) * 2013-09-30 2014-01-22 乐视网信息技术(北京)股份有限公司 一种多媒体文件推荐方法及电子设备
CN104822084A (zh) * 2015-04-30 2015-08-05 华南理工大学 基于并发流的p2p实时播放系统快速频道切换方法
CN104902346A (zh) * 2015-05-25 2015-09-09 网易(杭州)网络有限公司 一种视频播放方法和装置
CN105681912A (zh) * 2015-10-16 2016-06-15 乐视致新电子科技(天津)有限公司 一种视频播放方法和装置
CN105898579A (zh) * 2015-12-22 2016-08-24 乐视网信息技术(北京)股份有限公司 一种视频跟播方法及系统
CN107241511A (zh) * 2017-06-30 2017-10-10 广东欧珀移动通信有限公司 一种音乐播放方法、装置、存储介质和终端

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2633366C (en) * 2005-12-22 2015-04-28 Vidyo, Inc. System and method for videoconferencing using scalable video coding and compositing scalable video conferencing servers
CN101188751A (zh) * 2007-09-24 2008-05-28 陈勇 一种本地视频节目的播放方法和装置
CN101246491B (zh) * 2008-03-11 2014-11-05 孟智平 一种在网页中使用描述文件的方法和系统
CN102314912A (zh) * 2010-07-08 2012-01-11 睿码科技股份有限公司 多媒体播放器模块
EP2654315A1 (en) * 2012-04-18 2013-10-23 Harman International Industries, Incorporated Multimedia system and method of performing a playback by means of a multimedia system
CN104185077A (zh) * 2014-09-12 2014-12-03 飞狐信息技术(天津)有限公司 一种视频剪辑方法及装置
CN104519323A (zh) * 2014-12-26 2015-04-15 桂林远望智能通信科技有限公司 一种人车目标分类系统和方法
CN105451084A (zh) * 2015-12-08 2016-03-30 深圳市福云明网络科技有限公司 远程编辑并下载摄像机内视频的方法和装置
CN105933741A (zh) * 2016-05-16 2016-09-07 乐视控股(北京)有限公司 一种广告播放方法、装置、广告投放方法、装置和系统
CN106131610A (zh) * 2016-06-28 2016-11-16 乐视控股(北京)有限公司 在线播放视频的方法、设备及装置
CN106507140A (zh) * 2016-12-03 2017-03-15 乐视控股(北京)有限公司 一种视频加载方法、装置及电子设备
CN107690081B (zh) * 2017-05-25 2020-07-28 腾讯科技(北京)有限公司 视频播放方法和装置以及存储介质、电子装置

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006172304A (ja) * 2004-12-17 2006-06-29 Nippon Telegr & Teleph Corp <Ntt> マルチメディアメモ装置、マルチメディアメモ記録方法及びマルチメディアメモ再生方法
JP2008141696A (ja) * 2006-12-05 2008-06-19 Toshiba Corp 情報記憶媒体、情報記録方法、情報記憶装置、情報再生方法、及び情報再生装置
CN101557464A (zh) * 2009-04-01 2009-10-14 深圳市融创天下科技发展有限公司 一种在视频节目播放中动态嵌入其他媒体片段的方法
CN101867747A (zh) * 2010-04-30 2010-10-20 广东广联电子科技有限公司 一种快速播放用户喜欢的节目的方法及系统
CN103167358A (zh) * 2011-12-09 2013-06-19 深圳市快播科技有限公司 一种机顶盒、媒体播放处理及媒体恢复播放方法
JP2012234619A (ja) * 2012-06-29 2012-11-29 Toshiba Corp 情報処理方法、情報転送方法、情報制御方法、情報サービス方法、情報表示方法、情報処理装置、情報再生装置、およびサーバ
CN103533439A (zh) * 2013-09-30 2014-01-22 乐视网信息技术(北京)股份有限公司 一种多媒体文件推荐方法及电子设备
CN104822084A (zh) * 2015-04-30 2015-08-05 华南理工大学 基于并发流的p2p实时播放系统快速频道切换方法
CN104902346A (zh) * 2015-05-25 2015-09-09 网易(杭州)网络有限公司 一种视频播放方法和装置
CN105681912A (zh) * 2015-10-16 2016-06-15 乐视致新电子科技(天津)有限公司 一种视频播放方法和装置
CN105898579A (zh) * 2015-12-22 2016-08-24 乐视网信息技术(北京)股份有限公司 一种视频跟播方法及系统
CN107241511A (zh) * 2017-06-30 2017-10-10 广东欧珀移动通信有限公司 一种音乐播放方法、装置、存储介质和终端

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Yeonjoon Chung Department of Electrical and Computer Engineering, University of Minnesota, Minneapolis, MN, USA.《An efficient video broadcasting protocol with scalable preloading scheme》.《2003 International Conference on Multimedia and Expo. ICME '03. Proceedings》.2003,全文. *
邓妙怡.《网络电视用户切换行为特征分析与预加载策略研究》.《中国优秀硕士学位论文全文数据库》.2017,全文. *

Also Published As

Publication number Publication date
CN110545467A (zh) 2019-12-06

Similar Documents

Publication Publication Date Title
CN110545466B (zh) 基于网页的媒体文件的播放方法、装置及存储介质
CN110545491B (zh) 一种媒体文件的网络播放方法、装置及存储介质
CN110545456B (zh) 媒体文件的同步播放方法、装置及存储介质
CN110545490B (zh) 媒体文件转换方法、装置及存储介质
CN110545483B (zh) 网页中切换分辨率播放媒体文件的方法、装置及存储介质
CN110545479B (zh) 媒体播放的加载控制方法、装置及存储介质
JP6961835B2 (ja) 非ストリームメディアファイルのウェブページ再生方法、装置及び記憶媒体
JP2021510991A5 (zh)
CN110545460B (zh) 一种媒体文件的预加载方法、装置及存储介质
WO2019227749A1 (zh) 一种元数据容器的解析方法、装置及存储介质
CN110545467B (zh) 一种媒体文件加载控制方法、装置及存储介质
CN110545471B (zh) 基于离线转换的播放控制方法、装置及存储介质
CN110545463B (zh) 基于媒体文件转换的播放控制方法、装置及存储介质
CN110545470A (zh) 一种媒体文件加载方法、装置及存储介质
CN110545468B (zh) 基于参数封装的媒体文件播放方法、装置及存储介质
CN110545461A (zh) 一种媒体文件的分辨率切换方法、装置及存储介质
CN110545480A (zh) 一种媒体文件的预加载控制方法、装置及存储介质
CN110545464A (zh) 一种媒体文件分辨率切换方法、装置及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant