CN110545254B - 一种元数据容器的解析方法、装置及存储介质 - Google Patents

一种元数据容器的解析方法、装置及存储介质 Download PDF

Info

Publication number
CN110545254B
CN110545254B CN201810532331.8A CN201810532331A CN110545254B CN 110545254 B CN110545254 B CN 110545254B CN 201810532331 A CN201810532331 A CN 201810532331A CN 110545254 B CN110545254 B CN 110545254B
Authority
CN
China
Prior art keywords
container
sub
data
binary data
metadata
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
CN201810532331.8A
Other languages
English (en)
Other versions
CN110545254A (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 Volcano Engine 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 CN201810532331.8A priority Critical patent/CN110545254B/zh
Priority to JP2020535968A priority patent/JP7174762B2/ja
Priority to PCT/CN2018/103550 priority patent/WO2019227749A1/zh
Publication of CN110545254A publication Critical patent/CN110545254A/zh
Priority to US17/021,967 priority patent/US10979759B2/en
Application granted granted Critical
Publication of CN110545254B publication Critical patent/CN110545254B/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/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/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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234318Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into objects, e.g. MPEG-4 objects
    • 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/432Content retrieval operation from a local storage medium, e.g. hard-disk
    • H04N21/4325Content retrieval operation from a local storage medium, e.g. hard-disk by playing back content from the storage medium
    • 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • 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/8455Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
    • 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/85406Content authoring involving a specific file format, e.g. MP4 format

Abstract

本公开提供了一种元数据容器的解析方法,包括:根据元数据容器在媒体文件中的位置,从媒体文件的二进制数据中获取对应元数据容器的二进制数据;顺序解析所获取的二进制数据中对应元数据容器头部的规范长度的二进制数据,得到元数据容器中子容器的容器类型、以及子容器的容器数据的长度;调用与子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与容器数据的长度相应的二进制数据,得到容器数据所表示的媒体信息。本公开还提供了一种元数据容器的解析装置和存储介质。

Description

一种元数据容器的解析方法、装置及存储介质
技术领域
本公开涉及多媒体数据技术,尤其涉及一种元数据容器的解析方法、装置及存储介质。
背景技术
媒体文件中封装的元数据承载媒体信息,根据媒体信息能够对媒体文件中封装的媒体数据(例如视频帧和音频帧)进行准确解码,从而避免影响不同步或者影响缺失等现象。
媒体文件通过网络传输播放时,播放的实时性要求能够准确、高效地从元数据中解析出媒体信息,从而避免播放的延迟。
发明内容
有鉴于此,本公开实施例提供一种元数据容器的解析方法、装置及存储介质,能够准确、高效地从元数据中解析出媒体信息。
本公开实施例的技术方案是这样实现的:
本公开实施例提供了一种元数据容器的解析方法,包括:根据元数据容器在媒体文件中的位置,从媒体文件的二进制数据中获取对应元数据容器的二进制数据;顺序解析所获取的二进制数据中对应所述元数据容器头部的规范长度的二进制数据,得到所述元数据容器中子容器的容器类型、以及所述子容器的容器数据的长度;调用与所述子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与所述容器数据的长度相应的二进制数据,得到所述容器数据所表示的媒体信息。
本公开实施例还提供了一种元数据容器的解析装置,包括:数据获取模块,用于根据元数据容器在媒体文件中的位置,从媒体文件的二进制数据中获取对应元数据容器的二进制数据;数据解析模块,用于顺序解析所获取的二进制数据中对应所述元数据容器头部的规范长度的二进制数据,得到所述元数据容器中子容器的容器类型、以及所述子容器的容器数据的长度;所述数据解析模块,用于调用与所述子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与所述容器数据的长度相应的二进制数据,得到所述容器数据所表示的媒体信息。
又一方面,本公开实施例还提供了一种元数据容器的解析装置,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令实现本发明实施例提供的元数据容器的解析方法。
又一方面,本公开实施例还提供了一种存储介质,存储有可执行指令,所述可执行指令被执行时,用于实现本公开实施例提供的元数据容器的解析方法。
本公开实施例具有如下技术效果:通过本公开实施例所示的技术方案,能够有效提升对元数据容器中相应数据的解析速度,提高数据解析的准确率,避免由于数据解析速度较慢影响用户的使用感受。
附图说明
图1是本公开实施例提供的用于多媒体文件封装的容器的一个可选结构示意图;
图2是本公开实施例中MP4文件的一个可选的封装结构示意图;
图3是本公开实施例中媒体文件中的媒体数据容器存储媒体数据的一个可选的结构示意图;
图4是本公开实施例中FMP4文件的一个可选的封装结构示意图;
图5为本公开实施例元数据容器的解析装置一个可选的组成示意图;
图6为本公开实施例元数据容器的解析装置一个可选的组成示意图;
图7为本公开实施例提供的元数据容器的解析方法的一个可选的流程示意图;
图8是本公开实施例提供的从元数据容器解析得到媒体信息的一个可选的流程示意图;
图9为本公开实施例提供的元数据容器的解析方法的一个可选的流程示意图;
图10为本公开实施例提供的元数据容器的解析方法的一个可选的流程示意图。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本公开。
对本公开进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释。
1)媒体文件,以容器(Box,也称为盒子)的方式存储进行编码的媒体数据(例如音频数据和视频数据中的至少一种)的文件,其中还包括用以表达媒体信息以保证媒体数据被正确解码的元数据。
例如,采用动态图像专家组(MPEG,Moving Picture Experts Group)-4封装MP4容器格式封装多媒体数据的形成的媒体文件被称为MP4文件。典型地,MP4文件中存储高级视频编码(AVC,Advanced Video Coding,即H.264)或MPEG-4(Part 2)规范编码的视频数据和高级音频编码(AAC,Advanced Audio Coding)规范编码的音频数据,当然不排除视频和音频的其他编码方式。
2)容器(Box),也称为盒子,由唯一的类型标识符和长度定义的面向对象的构件,参见图1,是本公开实施例提供的容器的一个可选的结构示意图,包括容器头部(BoxHeader)和容器数据(Box Data),其中填充有用于表达各种信息的二进制数据。其中,Box是可以相互嵌套的,当一个Box的Data中是一系列子Box时,这个Box可成为Container Box。
容器头部包括容量(size)和类型(type),容量指明了容器在媒体文件中所所占用的长度存储空间的大小,类型指明了容器的类型,参见图2,是本公开实施例提供的MP4文件的一个可选的封装结构示意图,MP4文件中涉及的基本容器类型包括文件类型容器(ftypbox)、元数据容器(moov box)和媒体数据容器(mdat box)。
容器数据部分可以存储具体的数据,此时容器称为“数据容器”,容器数据部分也可以进一步封装其他类型的容器,此时容器称为“容器的容器”。
3)轨道(Track),也称为流(Stream),媒体数据容器中按时间排序的相关的采样(Sample),对于媒体数据来说,轨道表示一个视频帧序列或一个音频帧序列,还可以包括与视频帧序列同步的字幕轨,同一轨道中的一组连续的采样称为块(Chunk)。
4)文件类型容器,媒体文件中用于存储文件的容量(即所占用字节的长度)和类型的容器,如图2所示,在文件类型容器记为“ftyp box,其中存储的二进制数据按照规范的字节长度描述了文件容器的类型和兼容性。
5)元数据容器,媒体文件中用于存储元数据(即描述媒体数据容器中存储的多媒体数据的数据)的容器,在MP4文件中的元数据容器中存储的二进制数据表达的信息称为媒体信息。
如图2所示,元数据容器的头部采用二进制数据表示容器的类型为“moov box数,容器数据部分封装用于存储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=0 to i-1of delta(j)) (2)
所有偏移量的和是轨道中媒体数据的时长。
sStss(Time-To-Sample Atoms)box记录了媒体文件中的关键帧的序号。
stsc(Sample-To-Chunk Atom)box记录了采样与存储采样的块的映射关系,通过表来映射采样的序号和块的序号之间的关系,通过查表可以找到包含指定采样的块。
stco box定义了每个块在轨道中的位置,位置采用在媒体数据容器的起始字节的偏移量、以及相对于所述起始字节的长度(即容量)表示。
stsz(Sample Size Atom)box记录了媒体文件中每个采样的容量(即大小)。
6)媒体数据容器,媒体文件中用于存储多媒体数据的容器,例如,在MP4文件中媒体数据容器,如图3所示,采样是媒体数据容器中存储的单位,存储在媒体文件的块中,块和样本的长度均可互不相同。
7)分段媒体文件,媒体文件经过分割形成的子文件,每个分段媒体文件能够被独立解码。
以MP4文件为例,MP4文件中的媒体数据根据关键帧分割,分割后的媒体数据与对应的元数据封装形成分段MP4(FMP4,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,HTTPLive Streaming)技术的TS媒体文件分片,FLV(Flash Video)文件等。
10)非流媒体封装格式流媒体格式,把媒体数据封装为媒体文件、且媒体文件完整下载后才可以被解码播放的封装技术,典型的非流媒体封装格式流媒体格式的文件包括:MP4文件,视窗媒体视频(WMV,Windows Media Video)文件,高级串流格式(ASF,AdvancedStreaming Format)文件等。
需要指出,MP4文件原生不支持流媒体形式的播放,但是通过在线转码后向播放器转码后的媒体流、或者部分下载的MP4文件的缺失部分填充无效的二进制数据(例如,在ftyp容器和moov容器完整下载的情况下,填充mdat容器的缺失部分以无效的二进制数据代替)也能实现一边下载一边播放的技术效果,本文中将这种原生不支持流媒体播放的文件的封装格式都称为非流媒体格式。
首先说明实现本公开实施例的元数据容器的解析装置,元数据容器的解析装置可以提供为硬件、软件或者软硬件结合的方式。
下面说明元数据容器的解析装置的软件硬件结合的实施,参见图5,图5为本公开实施例元数据容器的解析装置一个可选的组成示意图,元数据容器的解析装置500可以是带有包括带有视频播放功能的移动电话、计算机、数字广播终端、信息收发设备、游戏控制台、平板设备、医疗设备、健身设备、个人数字助理等。图5所示的元数据容器的解析装置500包括:至少一个处理器501、存储器502、至少一个网络接口504和用户接口503。元数据容器的解析装置500中的各个组件通过总线系统505耦合在一起。可理解,总线系统505用于实现这些组件之间的连接通信。总线系统505除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统505。
其中,用户接口503可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
可以理解,存储器502可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)。本公开实施例描述的存储器502旨在包括这些和任意其它适合类型的存储器。
本公开实施例中的存储器502包括但不限于:三态内容寻址存储器、静态随机存储器能够存储从服务器所获取的媒体文件数据以支持元数据容器的解析装置500的操作。这些数据的示例包括:用于在元数据容器的解析装置500上操作的任何计算机程序,如操作系统5021和应用程序5022;各类型媒体文件数据信息等。其中,操作系统5021包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序5022可以包含各种应用程序,例如带有元数据容器的解析功能的客户端、或应用程序等。实现本公开实施例元数据容器的解析方法的程序可以包含在应用程序5022中。
上述本公开实施例揭示的方法由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,本公开实施例提供的元数据容器的解析方法可以通过处理器501中的硬件的集成逻辑电路或者软件形式的操作完成。上述的处理器501可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器501可以实现或者执行本公开实施例中的提供的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本公开实施例所提供的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成元数据容器的解析方法。
在示例性实施例中,本公开实施例还提供了一种计算机可读存储介质,例如包括计算机程序的存储器502,上述计算机程序可由元数据容器的解析装置500的处理器501执行,以完成元数据容器的解析方法。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备,如移动电话、计算机、平板设备、个人数字助理等。
下面说明元数据容器的解析装置的纯硬件实施,实现本公开实施例元数据容器的解析装置可以被一个或多个应用专用集成电路(ASIC,Application Specific IntegratedCircuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件实现,用于执行实现本公开实施例提供的元数据容器的解析方法。
下面说明元数据容器的解析装置的纯软件实施,实现本公开实施例元数据容器的解析装置可以被应用程序或插件,或者采用二者结合的方式实现。
作为示例,应用程序可以是专用于进行元数据容器解析的客户端,也可以是将元数据容器的解析功能作为可选功能的客户端,通过安装相应的插件实现。
作为示例,插件可以实现为应用程序的功能升级安装包,在用于媒体播放的应用程序中叠加元数据容器的解析的功能;也可以是媒体播放的网页中的元素,采用前端语言实现,通过被浏览器直接解释执行而在网页中实现元数据容器的解析以及媒体播放的功能。
作为元数据容器的解析装置的硬件实施或软件实施的示例,元数据容器的解析装置可以提供为一系列在信号/信息/数据层面存在耦合关系的模块,下面将结合图6进行说明,参见图6,图6为本公开实施例元数据容器的解析装置一个可选的组成示意图,示出了实现元数据容器的解析装置包括的一系列模块,但是元数据容器的解析装置的模块结构不仅限于图6所示,例如,可以对其中的模块根据所实现的不同功能而进一步拆分或者合并。下面对图6所示的模块实现的功能进行说明。
下文继续根据图5说明图6示出的各个模块的功能。
数据获取模块601,用于根据元数据容器在媒体文件中的位置,从媒体文件的二进制数据中获取对应元数据容器的二进制数据。
数据解析模块602,用于顺序解析所获取的二进制数据中对应所述元数据容器头部的规范长度的二进制数据,得到所述元数据容器中子容器的容器类型、以及所述子容器的容器数据的长度。
所述数据解析模块602,用于调用与所述子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与所述容器数据的长度相应的二进制数据,得到所述容器数据所表示的媒体信息。
在一些实施例中,所提供的元数据容器的解析装置可以应用于与应用程序相对应的服务器中,其中,所述与应用程序对应的服务器用于响应前端的播放器的请求,向前端提供媒体文件中的二进制数据,所述前端的播放器包括:播放器是嵌入浏览器(或者是内嵌浏览器的任意应用程序)所加载的网页中的HTML5(H5)播放器,使用面向前端的语言(例如JavaScript)实现,当浏览器加载媒体播放的网页时,播放器代码与网页元素一并被下载到浏览器,由于播放器采用面向前端的语言实现,因此不需要经过编译,由浏览器直接解释、执行播放器代码即可在网页中实现播放器的功能,适应平台广泛,实现效率高。
在一些实施例中,所述二进制数据包括文件类型容器、元数据容器和媒体数据容器中的二进制数据,供前端基于取回文件类型的二进制数据、关键帧之间的媒体数据、以及根据取回的元数据重新计算对应取回的媒体数据的新元数据。
在一些实施例中,所述根据取回的元数据重新计算对应取回的媒体数据的新元数据包括分段媒体文件级别的元数据(如FMP4中的moov容器及其所包括的数据)、以及分段媒体文件中分段级别的元数据(如FMP4中的moof盒子及其所包括的数据,其中一段FMP4文件中可能会有一个或多个分段),填充到分段媒体文件的封装结构中对应的容器。
在一些实施例中,所提供的元数据容器的解析装置可以应用于与终端设备中,例如,可以是终端设备所使用的播放器,播放器可以是嵌入浏览器(或者是内嵌浏览器的任意应用程序)所加载的网页中的H5播放器,使用面向前端的语言(例如JavaScript)实现,当浏览器加载媒体播放的网页时,播放器代码与网页元素一并被下载到浏览器,由于播放器采用面向前端的语言实现,因此不需要经过编译,由浏览器直接解释、执行播放器代码即可在网页中实现播放器的功能,适应平台广泛,实现效率高。
在一些实施例中,应用所述元数据容器的解析装置的播放器,首先向相应的服务器请求媒体文件中的文件类型容器和元数据容器的二进制数据,解析出媒体文件的类型、以及媒体信息;其次,播放器结合媒体信息计算时间跨度包括待播放时段的两个关键帧,向服务器请求媒体数据容器中两个关键帧之间的媒体数据(视频/音频数据);最后,播放器计算描述取回的媒体数据的元数据,计算新的元数据(包括分段媒体文件级别的元数据、以及分段媒体文件中分段级别的元数据),根据分段媒体文件的封装结构进行填充。
在一些实施例中,应用所述元数据容器的解析装置的播放器首先向相应的服务器请求的文件为MP4文件,MP4文件的元数据容器嵌套有多个子容器的嵌套结构,在嵌套结构中,部分子容器封装有具体的二进制数据,部分子容器中还封装有其它子容器。
对于所获取的元数据容器的二进制数据,根据封装规范,其起始的部分字节用于表示所述元数据容器的容器类型和容量,因此,当获取媒体文件对应元数据容器的二进制数据时,首先,根据所述媒体文件中容器头部的规范长度,逐字节解析二进制数据中相应规范长度的数据,得到所述媒体数据容器的容器类型和容量;其次,当解析到容器类型为元数据容器时,继续根据所述媒体文件中容器头部的规范长度逐字节解析元数据容器中的后续数据,即容器数据(其中包括有多个自容器)的子容器的头部对应的二进制数据。
在对元数据进行解析的过程中,需要根据所述MP4文件的封装规范进行相应数据的解析处理。
以MP4文件为例,容器头部的规范长度说明如下:容器头部的开头的4个字节(32位)为容器的长度(容量),包括容器头部和容器数据占用的存储空间。如果长度为1,则表示容器的容量要在接下来的8位uint64的large size字段来存放。如果size为0,表示容器为最后一个容器。容器头部的表示容量的字节之后的4个字节用于表示容器类型,如“ftyp”、“moov”等,表示特定类型的容器;如果是“uuid”,表示容器为扩展类型。如果box的type为通用唯一识别码(uuid),那接下来的16字节就用来存储uuid。从后续的字节开始,是moov容器中的容器数据,moov容器中包括多个容器的二进制数据,子容器的头部同样遵循规范长度。
在一些实施例中,所述数据解析模块602,用于将所述子容器的容器类型与预标记的容器类型比对;所述数据解析模块602,用于调用与所述子容器的容器类型对应的解析器,通过所述解析器解析所述子容器中的容器数据,得到所述容器数据所表示的媒体信息。当通过比对确定所述子容器的容器类型被预标记、且被预标记为用于直接封装二进制数据时,可以实现对相应容器数据的快速解析,有效提升解析处理速度。
在一些实施例中,所述数据解析模块602,用于将所述子容器的容器类型与预标记的容器类型比对;所述数据解析模块602,用于根据所述媒体文件中容器头部的规范长度,递归解析所述子容器所对应的二进制数据,直至,解析到所述子容器中所封装容器的容器类型被预标记、且被预标记为用于直接封装二进制数据。当通过比对确定所述子容器的容器类型被预标记,且被预标记为用于继续封装容器时,由于根据所述媒体文件中容器头部的规范长度,递归解析所述子容器所对应的二进制数据,因此,可以保证数据解析的准确性。
在一些实施例中,所述数据解析模块602,用于调用与子容器中所封装容器的容器类型相应的解析器,逐字节解析二进制数据,所解析二进制数据的长度与所述子容器中所封装容器的容器数据的长度对应,以得到所述子容器中所封装容器的容器数据所表示的媒体信息。当通过比对确定所述子容器中所封装容器的容器类型被预标记,且被预标记为用于直接封装二进制数据时,由于逐字节解析二进制数据,所解析二进制数据的长度与所述子容器中所封装容器的容器数据的长度对应,因此可以有效提高数据解析的准确性。
在一些实施例中,所述装置还包括:数据记录模块(图中未示出),用于在被调用的所述解析器中记录所解析的子容器;将所记录的子容器的实例设置到子容器属性中,所述子容器属性包括于所述子容器所归属的容器,用于描述所述子容器与所归属的容器之间的嵌套关系。通过在被调用的解析器中记录所解析的子容器,可以准确的描述所述子容器与所归属的容器之间的嵌套关系。
在一些实施例中,所述装置还包括:数据存储模块(图中未示出),用于根据所述子容器与所归属的容器之间的嵌套关系、以及所述子容器与所封装的容器嵌套关系建立对象,在对应所述子容器所建立的对象中存储包括有媒体信息的数组,所存储的媒体信息由所述子容器的容器数据表示。通过对象的方式能够在解析嵌套结构的过程中同步直接封装二进制数据子容器所存储的媒体信息。
在一些实施例中,当未调用到与所述子容器的容器类型相应类型的解析器时,所述数据解析模块602,还用于忽略解析所述子容器对应的二进制数据,具体的,忽略解析所述子容器对应的二进制数据包括两种情况:(a)当不能够被解析的子容器不是所有子容器中排在最后一位的子容器时,在忽略该子容器对应的二进制数据后还需要跳转到所述二进制数据中对应下一子容器的部分继续解析,以实现完整的解析过程。(b)当不能够被解析的子容器是排在所有子容器中最后一位的子容器时,可以仅忽略该子容器所对应的二进制数据。其中,子容器不能够被解析包括:子容器所对应的解析器缺失、子容器所对应的解析器不能够被调用。通过忽略解析所述子容器对应的二进制数据,以及,根据所述子容器的长度,跳转到所述二进制数据中对应下一子容器的部分继续解析,实现了对于不能被解析的容器的处理,保证了容器解析中的兼容性和稳定性,避免了由于无法解析或者解析过程中出现错误所导致的解析过程停顿。同时即使出现媒体文件中存在自定义容器而无法解析的情况时,采用本实施例所提供的技术方案也不会出现解析过程报错,使得后续的解析无法继续,确保了媒体文件能够最大程度的完整解析。
所述数据解析模块,用于根据所述子容器的长度,跳转到所述二进制数据中对应下一子容器的部分继续解析。其中,当不能够被解析的子容器是排在所有子容器中最后一位的子容器时,可以仅忽略该子容器所对应的二进制数据,相反的,当不能够被解析的子容器是不是所有子容器中排在最后一位的子容器时,在忽略该子容器对应的二进制数据后还需要跳转到所述二进制数据中对应下一子容器的部分继续解析,以实现完整的解析过程。通过忽略解析所述子容器对应的二进制数据,以及,根据所述子容器的长度,跳转到所述二进制数据中对应下一子容器的部分继续解析,实现了对于不能被解析的容器的处理,保证了容器解析中的兼容性和稳定性,避免了由于无法解析或者解析过程中出现错误所导致的解析过程停顿。同时即使出现媒体文件中存在自定义容器而无法解析的情况时,采用本实施例所提供的技术方案也不会出现解析过程报错,使得后续的解析无法继续,确保了媒体文件能够最大程度的完整解析。
在一些实施例中,由于被解析的元数据容器可能存在着数据被损毁的情况,因此采用本实施例所示的技术方案,通过跳转的方式忽略对部分子容器的解析,可以提升数据解析的速度,同时对于原始数据部分损坏的待解析数据,通过在子容器中的跳转,可以继续解析未损坏的数据。避免由于存在被损毁的数据而造成的数据解析失败。
在一些实施例中,容器中的嵌套关系包括:所述子容器与父容器的嵌套关系,所述子容器与所述子容器的子容器之间的嵌套关系;可以理解,当子容器的容器类型为用于直接封装二进制数据时,后一种嵌套关系不存在。
在一些实施例中,对播放器获取对应给定时段的媒体数据的流程进行说明。当播放器播放一部视频文件或者一个轨道的媒体文件时,播放器必须能够正确的解析数据流,并对一定的时间获取对应的媒体数据并确保这一段媒体数据能够被独立解码。
将结合本公开实施例提供的元数据容器的解析装置,说明实现本公开实施例的元数据容器的解析方法,下文中以媒体文件为MP4文件为例进行说明,可以理解,根据下文记载的针对MP4文件的转换方案可以轻易应用于其他非流媒体格式。
本公开的实施例所提供的元数据容器的解析方法可以应用于前端的播放器,播放器包括但不限于:嵌入浏览器所加载的网页中的HTML5(H5)播放器,其使用面向前端的语言(例如JavaScript)实现,当浏览器加载媒体播放的网页时,播放器代码与网页元素一并被下载到浏览器,由于播放器采用面向前端的语言实现,因此不需要经过编译,由浏览器直接解释、执行播放器代码即可在网页中实现播放器的功能,适应平台广泛,实现效率高。
在一个实施例中,播放器需要解析媒体文件的元数据得到媒体信息,以根据媒体信息对媒体文件中的媒体数据准确解码。参见图7,图7为本公开实施例提供的元数据容器的解析方法的一个可选的流程示意图,将结合图7示出的步骤进行说明。
步骤701,定位元数据容器在媒体文件中的位置。
在一个实施例中,通过从媒体文件的二进制数据读取符合容器头部规范的二进制数据,根据读取的二进制数据中识别的容器的类型和长度,直至定位元数据容器在媒体文件中的偏移量和容量。
举例来说,对于媒体文件的二进制数据,从零字节起始的二进制数据对应文件类型容器,通过容器头部的规范长度,读取媒体文件的二进制数据的起始位置,读取符合容器头部的规范长度的二进制数据,解析读取的二进制数据可以确定媒体文件中位于文件类型容器之后的容器的类型和长度。
如果解析出的类型是文件类型容器,则可以解析出元数据容器的长度(即容量),此时元数据容器的偏移量为文件类型容器的长度。
如果解析出的类型是媒体数据容器,则根据媒体数据容器的长度和分类型容器的长度为偏移量,继续读取符合容器头部的规范长度的二进制数据,从而可以解析出元数据容器的长度(即容量),此时元数据容器的长度为文件类型容器的长度与媒体数据容器的长度的加和。
由于媒体文件中除了起始的容器是文件类型容器,后续容器的封装顺序没有规范,通过上述解析方式,不管媒体文件中容器的封装顺序是文件类型容器、元数据容器和媒体数据容器,还是文件类型容器、媒体数据容器和元数据容器,都能够准确高效定位文件类型容器在媒体文件中的位置。
步骤702,根据元数据容器在媒体文件中的位置从媒体文件的二进制数据中获取对应元数据容器的二进制数据。
由于元数据容器在媒体文件中的位置可以通过偏移量和容量表示,因此从媒体文件中读取以偏移量对应的位置开始读取二进制数据,直至读取的二进制数据的长度符合元数据容器的容量,从而可以读取出元数据容器对应的二进制数据。
步骤703,顺序解析元数据容器二进制数据中对应容器头部的规范长度的二进制数据,得到元数据容器中子容器的容器类型、以及子容器的容器数据的长度。
在一个实施例中,针对元数据容器中嵌套多个子容器的情况,每次读取二进制数据的偏移量都是已经识别出子容器长度的加和,所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出当前所处理子容器的类型和长度。
举例说明,当首次读取时,从元数据容器的二进制数据的零字节开始读取二进制数据,且所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出第一个子容器的类型和长度;当第二次读取时,以首次读取的子容器的长度为偏移量,开始读取二进制数据,且所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出第二个子容器的类型和长度。
采用该实施例所示的方式读取二进制数据不会出现多读导致回退的情况,也不会出现及少读而二次读取的情况,从而提高了解析的效率和正确率。
步骤704,调用与子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与容器数据的长度相应的二进制数据,得到容器数据所表示的媒体信息。
在一个实施例中,对元数据容器中嵌套的典型容器类型进行预标记,用于表示容器是直接用于封装二进制数据还是进一步封装有容器,例如对于图2示出的mvhd box、audio track box和video track box等标记进一步封装有容器,对于图2示出的stts box、stsd box等标记为直接封装有二进制数据。对于标记为直接封装二进制数据的容器类型,设置与容器类型一一对应的解析器,解析器用于根据二进制数据解析出所表示的媒体信息;在步骤704中,将在步骤703中解析出的子容器的容器类型与预标记的容器类型比对时,涉及到以下两种情况。
情况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的子容器。
在一个实施例中,通过比对确定子容器的容器类型没被预标记、或者被预标记为直接封装二进制数据但是没有调用到相应类型的解析器时,忽略解析子容器对应的二进制数据,根据子容器的长度,跳转到二进制数据中对应下一子容器的部分继续解析。其中,当不能够被解析的子容器是排在所有子容器中最后一位的子容器时,可以仅忽略该子容器所对应的二进制数据,相反的,当不能够被解析的子容器是不是所有子容器中排在最后一位的子容器时,在忽略该子容器对应的二进制数据后还需要跳转到所述二进制数据中对应下一子容器的部分继续解析,以实现完整的解析过程。通过忽略解析所述子容器对应的二进制数据,以及,根据所述子容器的长度,跳转到所述二进制数据中对应下一子容器的部分继续解析,实现了对于不能被解析的容器的处理,保证了容器解析中的兼容性和稳定性,避免了由于无法解析或者解析过程中出现错误所导致的解析过程停顿。同时即使出现媒体文件中存在自定义容器而无法解析的情况时,采用本实施例所提供的技术方案也不会出现解析过程报错,使得后续的解析无法继续,确保了媒体文件能够最大程度的完整解析。
在一些实施例中,由于被解析的元数据容器可能存在着数据被损毁的情况,因此采用本实施例所示的技术方案,通过跳转的方式忽略对部分子容器的解析,可以提升数据解析的速度,同时对于原始数据部分损坏的待解析数据,通过在子容器中的跳转,可以继续解析未损坏的数据。避免由于存在被损毁的数据而造成的数据解析失败。
并且,由于媒体文件的来源多样,因此媒体文件中会出现自定义的容器类型,通过一些实施例中所记载的所采用的跳转的方式不会影响元数据容器的整体解析的进度,同时通过设置解析器的方式,当元数据容器的容器类型发生变动时,通过对相应类型的解析器的增加、删除和修改,可以快速实现对最新的元数据容器的兼容解析,提升了解析的灵活程度,也降低了使用成本。
在一些实施例中,还可以在被调用的所述解析器中记录所解析的子容器;将所记录的子容器的实例设置到子容器属性中,所述子容器属性包括于所述子容器所归属的容器,用于描述所述子容器与所归属的容器之间的嵌套关系。通过本实施例所示的技术方案,可以在被调用的解析器中记录所解析的子容器,通过分析记录信息判断被调用的解析器的频次,将被调用频次较高的解析器打包为基础解析单元,以实现提升数据的解析速度。
在一些实施例中,根据所述子容器与所归属的容器之间的嵌套关系、以及所述子容器与所封装的容器嵌套关系建立对象,以及,当所述子容器的容器类型被预标记为用于直接封装二进制数据时,在对应所述子容器所建立的对象中存储包括有媒体信息的数组,所存储的媒体信息由所述子容器的容器数据表示。
在一些实施例中,当未调用到与所述子容器的容器类型相应类型的解析器时,忽略解析所述子容器对应的二进制数据。通过本实施例所示的技术方案,通过忽略未调用解析器对应的二进制数据,可以有效提升对大容量数据的解析速度。
在一些实施例中,容器中的嵌套关系包括:所述子容器与父容器的嵌套关系,所述子容器与所述子容器的子容器之间的嵌套关系;其中当子容器的容器类型为用于直接封装二进制数据时,后一种嵌套关系不存在。
在一些实施例中,还可以根据所述子容器的长度,跳转到所述二进制数据中对应下一子容器的部分继续解析。通过本实施例所示的技术方案,通过子在子容器中的跳转,可以提升数据解析的速度,同时对于原始数据部分损坏的待解析数据,通过在子容器中的跳转,可以将未损坏的数据进行解析。进一步的,对于没有预标记而待用解析器失败的子容器,其对应的对象中数据为空,但是子容器的实例仍然需要设置到其所归属容器的子容器属性,以形成完整的嵌套关系。
将结合本公开实施例提供的元数据容器的解析装置,以内嵌于网页的H5播放器将MP4文件进行解析为例进行说明,参见图8,图8为本公开实施例提供的元数据容器的解析方法的一个可选的流程示意图,将结合图8示出的步骤进行说明。
步骤801:通过内嵌于网页的H5播放器从服务器获取媒体文件的元数据容器中封装的元数据。
在一实施例中,播放器可通过如下方式获取媒体文件的元数据容器中封装的元数据:播放器通过发送携带设定的偏移量和容量的网络请求给服务器,以获取服务器返回的媒体文件中从零字节开始、且符合设定容量的二进制数据;从服务器返回的二进制数据中识别出元数据容器中的元数据。
其中,设定的容量可以是根据已有的媒体文件的文件类型容器和元数据容器的容量统计得到,使得设定的容量能够覆盖设定比例(如全部)媒体文件的文件类型容器和元数据容器的容量的加和,确保当媒体文件的封装结构为顺序封装的文件类型容器、元数据容器和媒体数据容器时,能够通过一次请求得到完整的元数据容器中所封装的元数据,节约了网络传输时对连接的占用情况,进而避免了因为连接占用导致网页中非媒体播放业务因为无法使用连接而延迟响应的情况。
播放器获取的元数据容器中封装的元数据为MP4文件中的moov box中封装的二进制数据,当MP4文件的封装结构为顺序封装的fytp box、moov box和mdat box时,设定容量可以是根据已有MP4文件的ftyp box和moov box容量统计得到,使设定容量能够覆盖设定比例(如全部)MP4文件的ftyp box和moov box的二进制数据的加和,确保多数情况下一次即可从服务器请求到moov box中包括完整的二进制数据。
在一实施例中,播放器通过设定的偏移量及容量从服务器请求到的二进制数据中,从零字节开始的一段二进制数据是对应文件类型容器的,播放器通过读取容器头部得到文件类型容器的容量,通过读取第二个容器的头部得知下一个容器的类型及容量,当第二个容器的类型为元数据容器,且返回的二进制数据的容量不小于文件类型容器的容量及元数据容器容量的加和时,表明通过设定的偏移量及容量从服务器请求到的二进制数据中包含了元数据容器中封装的元数据;当第二个容器的类型为元数据容器,且返回的二进制数据的容量小于文件类型容器的容量及元数据容器容量的加和时,表明通过设定的偏移量及容量从服务器请求到的二进制数据中未包含元数据容器中封装的元数据。当播放器通过设定的偏移量及容量从服务器请求到的二进制数据未包含完整的元数据容器中的元数据时,播放器需要从服务器所返回的二进制数据中读取容器的容量,根据元数据容器的头部计算元数据容器的偏移量及容量,将计算得到的偏移量及容量携带在网络请求中以向服务器请求元数据,由服务器根据请求,从媒体文件中所计算得到的偏移量开始读取二进制数据、且读取的二进制数据符合计算得到的容量,向播放器返回数据。
举例说明,播放器从服务器所返回的二进制数据中读取容器的容量,根据元数据容器的头部计算元数据容器的偏移量及容量,涉及如下两种情况:
情况1)当从剩余的二进制数据(即返回的二进制数据中除文件类型容器的二进制数据之外的数据)读取的容器的类型为元数据容器,且剩余的二进制数据的容量小于元数据容器的容量时,计算元数据容器的容量与剩余二进制数据容量的差值作为二次请求的新的容量,以首次请求的偏移量和容量的加和作为新的偏移量,向服务器第二次请求二进制数据;
情况2)当从剩余的二进制数据读取的容器的类型为媒体数据容器时,计算媒体数据容器的容量与文件类型容器容量的加和为二次请求的新偏移量,以设定的容量(可以为能够覆盖元数据容器的容量的经验值)向服务器第二次请求二进制数据。
以媒体文件为MP4文件为例,播放器通过设定的偏移量及容量从服务器请求到的二进制数据未包含完整的moov box的二进制数据,此时,播放器需要从服务器所返回的二进制数据中读取容器的类型和容量,确定moov box在MP4文件中的偏移量和容量;
MP4文件的二进制数据,起始的字节总是对应ftyp box,从返回的二进制数据中识别出fytp box的二进制数据,根据ftypbox的头部可以获知其长度,从而从剩余的二进制数据中,根据头部的规范长度读取下一个box的二进制数据,根据头部表示的容器类型,包括以下几种情况:
1)当从剩余的二进制数据(即返回的二进制数据中除fytp box的二进制数据之外的数据)读取的容器的类型为moov box,且剩余的二进制数据的容量不小于moov box的容量时,根据所确定的偏移量和容量,从服务器获取MP4文件中以moov box在MP4文件中的偏移量开始、且符合moov box在MP4文件中的容量的moov数据;
2)当从剩余的二进制数据读取的容器的类型为moov box,且剩余的二进制数据的容量小于moov box的容量时,计算moov box的容量与剩余二进制数据容量的差值作为二次请求的新的容量,以首次请求的偏移量和容量的加和作为二次请求的新的偏移量,向服务器第二次请求二进制数据;
3)当从剩余的二进制数据读取的容器的类型为mdat box时,计算mdat box的容量与ftyp box容量的加和作为二次请求的新偏移量,以设定的容量向服务器第二次请求二进制数据。
如此,无论媒体文件为何种封装结构,即无论媒体文件中文件类型容器、元数据容器和媒体数据容器的封装顺序如何,均能够保证播放器最多两次请求便可从服务器处得到元数据容器中的元数据,提高了元数据的获取效率。
举例说明,对于MP4文件,服务器返回的二进制数据,根据MP4文件的封装规范,从零字节开始的一段二进制数据是对应ftyp box的,而根据box的的头部的封装规范,可以从ftyp box的头部读取ftyp box的容量(即长度)以及完整的MP4文件的容量;假设ftyp box的容量为a(单位为字节),则从a+1开始读取后续容器的头部信息,获取后续容器的类型和容量,如果通过读取得到ftyp box后续的是moov box,且剩余的二进制数据的容量(设定容量-ftyp box的容量)大于moov box的容量,说明已经取回了moov box的完整二进制数据,可以根据moov box的偏移量及容量从剩余的二进制数据中提取moov box中的元数据。
步骤802:解析所获取的元数据,得到用于描述媒体文件的媒体数据容器中封装的媒体数据的媒体信息。
播放器从服务器处获取元数据容器中封装的元数据后,解析元数据容器中子容器的嵌套结构,根据子容器的嵌套结构读取出各子容器中的二进制数据;从所读取出的二进制数据解析出各子容器表征的媒体数据的媒体信息。在实际应用中,媒体信息可以包括媒体文件中视频帧和/或音频帧的偏移量、容量、解码时间等信息。
以媒体文件为MP4文件为例,元数据容器即为moov box,参见图2,可知,moov box中封装有mvhd box和track box,其中,通过解析mvhd box的二进制数据,可以得到MP4文件的创建时间、修改时间、时间度量标尺、可播放时长、默认音量等信息;moov box中包括多个track box,记录了每个媒体轨道所特有的描述信息,如对于视频轨道video track box,video track box中多层嵌套了多个子容器,基于video track box的嵌套结构,解析相应的二进制数据得到MP4文件的视频帧信息、以及所对应的画面信息。
在一个实施例中,播放器可通过如下方式对获取的元数据进行解析,得到媒体信息:顺序解析元数据容器二进制数据中对应容器头部的规范长度的二进制数据,得到所述元数据容器中子容器的容器类型、以及所述子容器的容器数据的长度;调用与所述子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与所述容器数据的长度相应的二进制数据,得到所述容器数据所表示的媒体信息。
其中,播放器针对元数据容器中嵌套多个子容器的情况,每次读取二进制数据的偏移量都是已经识别出子容器长度的加和,所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出当前所处理子容器的类型和长度。
例如,首次读取时,从元数据容器的二进制数据的零字节开始读取二进制数据,且所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出第一个子容器的类型和长度;第二次读取时,以首次读取的子容器的长度为偏移量,开始读取二进制数据,且所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出第二个子容器的类型和长度。
通过上述方式读取二进制数据不会出现多读导致回退的情况,也不会出现及少读而二次读取的情况,解析的效率和正确率得以保证。
在一个实施例中,对元数据容器中嵌套的典型容器类型进行预标记,用于表示容器是直接用于封装二进制数据还是进一步封装有容器,例如对于图2示出的mvhd box、audio track box和video track box等标记进一步封装有容器,对于图2示出的stts box、stsd box等标记为直接封装有二进制数据。
对于标记为直接封装二进制数据的容器类型,设置与容器类型一一对应的解析器,解析器用于根据二进制数据解析出所表示的媒体信息;将解析出的子容器的容器类型与预标记的容器类型比对,涉及到以下两种情况。
情况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的子容器。
在一个实施例中,通过比对确定所述子容器的容器类型没被预标记、或者被预标记为直接封装二进制数据但是没有调用到相应类型的解析器时,忽略解析子容器对应的二进制数据,根据所述子容器的长度,跳转到所述二进制数据中对应下一子容器的部分继续解析。
事实上,媒体文件中会出现自定义的容器类型,通过跳转的方式不会影响元数据容器的整体解析的进度,同时通过设置解析器的方式,当元数据容器的容器类型发生变动时,通过对相应类型的解析器的增加、删除和修改,可以快速实现对最新的元数据容器的兼容解析,具有升级灵活快速的特点。
将结合本公开实施例提供的元数据容器的解析装置,以内嵌于网页的H5播放器将MP4文件进行解析为例进行说明,参见图10,图10为本公开实施例提供的元数据容器的解析方法的一个可选的流程示意图,将结合图10示出的步骤进行说明。
步骤1001:获取二进制视频数据;
由于元数据容器在媒体文件中的位置可以通过偏移量和容量表示,因此从媒体文件中读取以偏移量对应的位置开始读取二进制数据,直至读取的二进制数据的长度符合元数据容器的容量,从而可以读取出元数据容器对应的二进制数据。
步骤1002:创建box集合;
通过步骤1002能够实现对所获取的二进制视频数据的标记,以调用相应的解析器。
播放器通过发送携带设定的偏移量和容量的数据请求给服务器,以获取MP4文件中从零字节开始、且符合设定容量的二进制数据。MP4文件的封装结构包括顺序封装的fytpbox、moov box和mdat box为例,设定容量可以是根据已有MP4文件的ftyp box和moov box容量统计得到,使设定容量能够覆盖设定比例(如全部)MP4文件的ftyp box和moov box的加和,确保一次即可从服务器请求完整的moov box二进制数据。参见图9,播放器请求设定的偏移量为0字节,设定的容量为Math.pow(25,4)字节的二进制数据,从服务器返回的二进制数据中获取moov数据,若通过一次请求未获取到完整的moov数据,则重新计算偏移量(图9中start)及容量(start~size),进而二次请求。
步骤1003:创建读取Stream实例;
步骤1004:创建box实例;
步骤1005:读取box Header;
通过对所述box Header的解析可以获知所述box的类型和长度等信息。
步骤1006:读取box Body;
步骤1007:调用相应box的解析器;
其中,对于box中的元数据容器的解析可以采用以下方式:
顺序解析元数据容器二进制数据中对应容器头部的规范长度的二进制数据,得到所述元数据容器中子容器的容器类型、以及所述子容器的容器数据的长度;调用与所述子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与所述容器数据的长度相应的二进制数据,得到所述容器数据所表示的媒体信息。
其中,播放器针对元数据容器中嵌套多个子容器的情况,每次读取二进制数据的偏移量都是已经识别出子容器长度的加和,所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出当前所处理子容器的类型和长度。
例如,首次读取时,从元数据容器的二进制数据的零字节开始读取二进制数据,且所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出第一个子容器的类型和长度;第二次读取时,以首次读取的子容器的长度为偏移量,开始读取二进制数据,且所读取的二进制数据的长度符合容器头部的规范长度,从而可以解析出第二个子容器的类型和长度。
通过上述方式读取二进制数据不会出现多读导致回退的情况,也不会出现及少读而二次读取的情况,解析的效率和正确率得以保证。
步骤1008:确定各box之间的嵌套关系;
在一个实施例中,对解析元数据容器的过程中记录子容器之间的嵌套关系的方式说明,在顺序解析元数据容器二进制数据中对应容器头部的规范长度的二进制数据,得到所述元数据容器中子容器的容器类型时,如果容器类型被预标记为直接封装二进制数据,则在被调用的所述解析器中记录所解析的子容器;将所记录的子容器的实例设置到子容器属性中,所述子容器属性包括于所述子容器所归属的容器,用于描述所述子容器与所归属的容器之间的嵌套关系。
例如,在图2中,当解析的子容器的类型为stsd box时,由于stsd box被预标记为直接封装二进制数据,在对应stsd box所对应的解析器中记录stsd box,将stsd box的实例设置到stbl box子容器属性中,以此类推,最后在stsd box的子容器属性中记录了stsdbox、stts box、stsc box等多个嵌套于stbl box的子容器。
步骤1009:更新读取Stream的位置。
通过步骤1008和1009能够实现对子容器与所归属的容器之间的嵌套关系、以及所述子容器与所封装的容器嵌套关系的解析与标记。
通过图10所示的处理过程实现了对所获取的二进制视频数据的解析,其中,所获取的二进制视频数据中相关容器存在着子容器与所归属的容器之间的嵌套关系、以及所述子容器与所封装的容器嵌套关系。
通过上述实施例,能够有效提升对元数据容器中相应数据的解析速度,避免由于数据解析速度较慢影响用户的使用感受,同时通过解析元数据容器获得相应的信息可以用于所述元数据相对应的媒体信息进行转换。
本领域内的技术人员应明白,本公开实施例可提供为方法、系统、或计算机程序产品。因此,本公开实施例可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本公开实施例是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序操作实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序操作到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的操作产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序操作也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的操作产生包括操作装置的制造品,该操作装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序操作也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的操作提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本公开的较佳实施例而已,并非用于限定本公开的保护范围,凡在本公开的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本公开的保护范围之内。

Claims (12)

1.一种元数据容器的解析方法,其特征在于,所述方法包括:
根据元数据容器在媒体文件中的位置,从媒体文件的二进制数据中获取对应元数据容器的二进制数据;
顺序解析所获取的二进制数据中对应所述元数据容器头部的规范长度的二进制数据,得到所述元数据容器中子容器的容器类型、以及所述子容器的容器数据的长度;
将所述子容器的容器类型与预标记的容器类型比对;
当通过比对确定所述子容器的容器类型被预标记、且被预标记为用于直接封装二进制数据时,
调用与所述子容器的容器类型对应的解析器,通过所述解析器解析所述子容器中的容器数据,得到所述容器数据所表示的媒体信息,顺序解析未解析的数据中与所述容器数据的长度相应的二进制数据,得到所述容器数据所表示的媒体信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述子容器的容器类型与预标记的容器类型比对;
当通过比对确定所述子容器的容器类型被预标记,且被预标记为用于继续封装容器时,
根据所述媒体文件中容器头部的规范长度,递归解析所述子容器所对应的二进制数据,直至,
解析到所述子容器中所封装容器的容器类型被预标记、且被预标记为用于直接封装二进制数据;
调用与子容器中所封装容器的容器类型相应的解析器,逐字节解析二进制数据,所解析二进制数据的长度与所述子容器中所封装容器的容器数据的长度对应,以得到所述子容器中所封装容器的容器数据所表示的媒体信息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在被调用的所述解析器中记录所解析的子容器;
将所记录的子容器的实例设置到子容器属性中,所述子容器属性包括于所述子容器所归属的容器,用于描述所述子容器与所归属的容器之间的嵌套关系。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述子容器与所归属的容器之间的嵌套关系、以及所述子容器与所封装的容器嵌套关系建立对象,以及,
当所述子容器的容器类型被预标记为用于直接封装二进制数据时,在对应所述子容器所建立的对象中存储包括有媒体信息的数组,所存储的媒体信息由所述子容器的容器数据表示。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
当未调用到与所述子容器的容器类型相应类型的解析器时,
忽略解析所述子容器对应的二进制数据,以及,
根据所述子容器的长度,跳转到所述二进制数据中对应下一子容器的部分继续解析。
6.一种元数据容器的解析装置,其特征在于,所述装置包括:
数据获取模块,用于根据元数据容器在媒体文件中的位置,从媒体文件的二进制数据中获取对应元数据容器的二进制数据;
数据解析模块,用于顺序解析所获取的二进制数据中对应所述元数据容器头部的规范长度的二进制数据,得到所述元数据容器中子容器的容器类型、以及所述子容器的容器数据的长度;
所述数据解析模块,用于将所述子容器的容器类型与预标记的容器类型比对;
所述数据解析模块,用于当通过比对确定所述子容器的容器类型被预标记、且被预标记为用于直接封装二进制数据时,调用与所述子容器的容器类型对应的解析器,通过所述解析器解析所述子容器中的容器数据,得到所述容器数据所表示的媒体信息;
所述数据解析模块,用于调用与所述子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与所述容器数据的长度相应的二进制数据,得到所述容器数据所表示的媒体信息。
7.根据权利要求6所述的装置,其特征在于,
所述数据解析模块,还用于将所述子容器的容器类型与预标记的容器类型比对;
所述数据解析模块,还用于当通过比对确定所述子容器的容器类型被预标记,且被预标记为用于继续封装容器时,根据所述媒体文件中容器头部的规范长度,递归解析所述子容器所对应的二进制数据,直至,解析到所述子容器中所封装容器的容器类型被预标记、且被预标记为用于直接封装二进制数据;
所述数据解析模块,还用于调用与子容器中所封装容器的容器类型相应的解析器,逐字节解析二进制数据,所解析二进制数据的长度与所述子容器中所封装容器的容器数据的长度对应,以得到所述子容器中所封装容器的容器数据所表示的媒体信息。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
数据记录模块,还用于在被调用的所述解析器中记录所解析的子容器;
将所记录的子容器的实例设置到子容器属性中,所述子容器属性包括于所述子容器所归属的容器,用于描述所述子容器与所归属的容器之间的嵌套关系。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
数据存储模块,还用于根据所述子容器与所归属的容器之间的嵌套关系、以及所述子容器与所封装的容器嵌套关系建立对象,在对应所述子容器所建立的对象中存储包括有媒体信息的数组,所存储的媒体信息由所述子容器的容器数据表示。
10.根据权利要求6至9任一项所述的装置,其特征在于,
所述数据解析模块,还用于忽略解析所述子容器对应的二进制数据;
所述数据解析模块,还用于根据所述子容器的长度,跳转到所述二进制数据中对应下一子容器的部分继续解析。
11.一种元数据容器的解析装置,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述可执行指令时,实现如权利要求1至5任一项所述的元数据容器的解析方法。
12.一种存储介质,其特征在于,存储有可执行指令,所述可执行指令被执行时,用于实现如权利要求1至5任一项所述的元数据容器的解析方法。
CN201810532331.8A 2018-05-29 2018-05-29 一种元数据容器的解析方法、装置及存储介质 Active CN110545254B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201810532331.8A CN110545254B (zh) 2018-05-29 2018-05-29 一种元数据容器的解析方法、装置及存储介质
JP2020535968A JP7174762B2 (ja) 2018-05-29 2018-08-31 メタデータ容器の解析方法、装置及び記憶媒体
PCT/CN2018/103550 WO2019227749A1 (zh) 2018-05-29 2018-08-31 一种元数据容器的解析方法、装置及存储介质
US17/021,967 US10979759B2 (en) 2018-05-29 2020-09-15 Analysis method, device and storage medium of moov box

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810532331.8A CN110545254B (zh) 2018-05-29 2018-05-29 一种元数据容器的解析方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN110545254A CN110545254A (zh) 2019-12-06
CN110545254B true CN110545254B (zh) 2021-05-04

Family

ID=68698494

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810532331.8A Active CN110545254B (zh) 2018-05-29 2018-05-29 一种元数据容器的解析方法、装置及存储介质

Country Status (4)

Country Link
US (1) US10979759B2 (zh)
JP (1) JP7174762B2 (zh)
CN (1) CN110545254B (zh)
WO (1) WO2019227749A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111083410B (zh) * 2019-12-30 2022-02-25 珠海全志科技股份有限公司 一种用于dvr的音视频流的处理方法及装置
CN112433888B (zh) * 2020-12-02 2023-06-30 网易(杭州)网络有限公司 数据处理方法及装置、存储介质和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101828351A (zh) * 2007-09-19 2010-09-08 弗劳恩霍夫应用研究促进协会 存储和读取具有媒体数据容器和元数据容器的文件的设备和方法
CN102376333A (zh) * 2010-08-18 2012-03-14 Tcl集团股份有限公司 一种多媒体播放终端及其文件播放方法和装置
CN107888932A (zh) * 2017-10-20 2018-04-06 深圳思麦杰科技有限公司 一种基于浏览器的跨平台视频直播的系统及方法
CN107979783A (zh) * 2016-10-25 2018-05-01 杭州海康威视数字技术股份有限公司 一种流式数据解析方法、装置及电子设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4383721B2 (ja) 2002-07-01 2009-12-16 株式会社東芝 多重化分離装置
JPWO2005002231A1 (ja) 2003-06-27 2006-08-17 株式会社日立製作所 映像編集装置
JP2005229587A (ja) 2004-01-15 2005-08-25 Matsushita Electric Ind Co Ltd 多重化方式変換装置
JP4719506B2 (ja) 2005-05-19 2011-07-06 キヤノン株式会社 端末装置、コンテンツ再生方法、及びコンピュータプログラム
JP4598627B2 (ja) 2005-08-24 2010-12-15 富士通株式会社 コンテンツ編集装置及びその再生装置
JP4828352B2 (ja) * 2006-08-18 2011-11-30 ソニー株式会社 情報処理装置、情報処理方法、コンピュータプログラム、半導体装置
KR101530713B1 (ko) 2008-02-05 2015-06-23 삼성전자주식회사 영상 파일을 생성하고 표시하기 위한 장치 및 방법
EP2088789A3 (en) * 2008-02-05 2012-08-15 Samsung Electronics Co., Ltd. Apparatus and method for generating and displaying media files
AU2011221734B2 (en) 2010-03-03 2014-10-23 Samsung Electronics Co., Ltd. Apparatus and method for recording and playing a media file, and a recording medium therefor
CN102221998A (zh) * 2011-06-07 2011-10-19 北京大学 一种扩展构件运行支撑平台中ejb容器的方法
CN102917276B (zh) * 2012-11-12 2016-02-24 武汉市烽视威科技有限公司 一种应用于流媒体服务的音视频交错封装方法
US20140297882A1 (en) * 2013-04-01 2014-10-02 Microsoft Corporation Dynamic track switching in media streaming
CN103533094B (zh) * 2013-09-17 2016-08-24 镇锡惠 标码一体机及标码系统
KR102138075B1 (ko) * 2014-01-09 2020-07-27 삼성전자주식회사 미디어 데이터를 전송하기 위한 가변 크기 데이터 패킷을 송수신하는 방법 및 장치
CN110915180B (zh) * 2017-05-16 2022-06-28 瑞典爱立信有限公司 低时延媒体摄取系统、设备和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101828351A (zh) * 2007-09-19 2010-09-08 弗劳恩霍夫应用研究促进协会 存储和读取具有媒体数据容器和元数据容器的文件的设备和方法
CN102376333A (zh) * 2010-08-18 2012-03-14 Tcl集团股份有限公司 一种多媒体播放终端及其文件播放方法和装置
CN107979783A (zh) * 2016-10-25 2018-05-01 杭州海康威视数字技术股份有限公司 一种流式数据解析方法、装置及电子设备
CN107888932A (zh) * 2017-10-20 2018-04-06 深圳思麦杰科技有限公司 一种基于浏览器的跨平台视频直播的系统及方法

Also Published As

Publication number Publication date
WO2019227749A1 (zh) 2019-12-05
US20200413123A1 (en) 2020-12-31
US10979759B2 (en) 2021-04-13
JP2021508977A (ja) 2021-03-11
JP7174762B2 (ja) 2022-11-17
CN110545254A (zh) 2019-12-06

Similar Documents

Publication Publication Date Title
CN110545490B (zh) 媒体文件转换方法、装置及存储介质
CN110545466B (zh) 基于网页的媒体文件的播放方法、装置及存储介质
CN110545456B (zh) 媒体文件的同步播放方法、装置及存储介质
CN110545483B (zh) 网页中切换分辨率播放媒体文件的方法、装置及存储介质
CN110545491B (zh) 一种媒体文件的网络播放方法、装置及存储介质
CN110545479B (zh) 媒体播放的加载控制方法、装置及存储介质
US11025991B2 (en) Webpage playing method and device and storage medium for non-streaming media file
JP2021510991A5 (zh)
CN110545254B (zh) 一种元数据容器的解析方法、装置及存储介质
CN110545460A (zh) 一种媒体文件的预加载方法、装置及存储介质
CN110545471B (zh) 基于离线转换的播放控制方法、装置及存储介质
CN110545463B (zh) 基于媒体文件转换的播放控制方法、装置及存储介质
CN110545468B (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
CP01 Change in the name or title of a patent holder

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: Douyin Vision Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: Tiktok vision (Beijing) Co.,Ltd.

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: Tiktok vision (Beijing) Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20230712

Address after: 100190 1309, 13th floor, building 4, Zijin Digital Park, Haidian District, Beijing

Patentee after: Beijing volcano Engine Technology Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: Douyin Vision Co.,Ltd.

TR01 Transfer of patent right