CN110545456A - 媒体文件的同步播放方法、装置及存储介质 - Google Patents

媒体文件的同步播放方法、装置及存储介质 Download PDF

Info

Publication number
CN110545456A
CN110545456A CN201810571720.1A CN201810571720A CN110545456A CN 110545456 A CN110545456 A CN 110545456A CN 201810571720 A CN201810571720 A CN 201810571720A CN 110545456 A CN110545456 A CN 110545456A
Authority
CN
China
Prior art keywords
media
file
playing
source
container
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.)
Granted
Application number
CN201810571720.1A
Other languages
English (en)
Other versions
CN110545456B (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 CN201810571720.1A priority Critical patent/CN110545456B/zh
Priority to JP2020548643A priority patent/JP6969013B2/ja
Priority to PCT/CN2018/103474 priority patent/WO2019227740A1/zh
Publication of CN110545456A publication Critical patent/CN110545456A/zh
Priority to US17/002,067 priority patent/US10978109B2/en
Application granted granted Critical
Publication of CN110545456B publication Critical patent/CN110545456B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/87Regeneration of colour television signals
    • H04N9/8715Regeneration of colour television signals involving the mixing of the reproduced video signal with a non-recorded signal, e.g. a text signal
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • 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/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • 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
    • 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
    • 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, rendering scenes according to MPEG-4 scene graphs
    • 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, rendering scenes according to MPEG-4 scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • 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, rendering scenes according to MPEG-4 scene graphs
    • H04N21/44008Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in 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/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, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • 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, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 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, rendering scenes according to MPEG-4 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/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • 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
    • 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
    • H04N5/00Details of television systems
    • H04N5/04Synchronising
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/93Regeneration of the television signal or of selected parts thereof
    • H04N5/9305Regeneration of the television signal or of selected parts thereof involving the mixing of the reproduced video signal with a non-recorded signal, e.g. a text signal

Abstract

本公开提供了一种媒体文件的同步播放方法,包括:通过内嵌于网页的播放器,创建对应网页中播放窗口的媒体源对象;将分段媒体文件中的不同轨道,添加到媒体源对象中相同的源缓存对象;将以所述媒体源对象为数据源的虚拟地址传递到所述网页的媒体元素;调用媒体元素解析虚拟地址关联的媒体源对象,以及,读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放。本公开还提供了一种媒体文件的同步播放装置和存储介质。

Description

媒体文件的同步播放方法、装置及存储介质
技术领域
本公开涉及多媒体技术,尤其涉及一种媒体文件的同步播放方法、装置及存储介质。
背景技术
动态图像专家组(MPEG,Moving Picture Experts Group)-4格式是目前广泛使用的容器格式,可以存储多种编码方式的视频数据和音频数据。
浏览器内嵌的播放器通过使用浏览器的超文本标记语言(HTML,Hyper TextMarkup Language)5媒体元素播放,在播放器通过浏览器的网页、或内嵌浏览器内核的应用程序(APP,Application)的网页播放媒体文件,然而相关技术对于媒体文件的播放支持不够完善,在播放过程中出现了影音不同步的问题。
发明内容
有鉴于此,本公开实施例提供一种媒体文件的同步播放方法、装置及存储介质,能够在网页中播放媒体文件时确保影音同步。
本公开实施例提供了一种媒体文件的同步播放方法,包括:通过内嵌于网页的播放器,创建对应所述网页中播放窗口的媒体源对象;将分段媒体文件中的不同轨道,添加到所述媒体源对象中相同的源缓存对象;传递以所述媒体源对象为数据源的虚拟地址到所述网页的媒体元素;调用所述媒体元素解析所述虚拟地址关联的媒体源对象,以及,读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放。
本公开实施例还提供了一种媒体文件的同步播放装置,包括:媒体资源创建模块,用于通过内嵌于网页的播放器,创建对应所述网页中播放窗口的媒体源对象;所述媒体资源创建模块,用于将分段媒体文件中的不同轨道,添加到所述媒体源对象中相同的源缓存对象;媒体资源传递模块,用于传递以所述媒体源对象为数据源的虚拟地址到所述网页的媒体元素;媒体资源播放模块,用于调用所述媒体元素解析所述虚拟地址关联的媒体源对象;所述媒体资源播放模块,用于读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放。
本公开实施例还提供了一种媒体文件的同步播放装置,包括:处理器和用于存储能够在处理器上运行的可执行指令的存储器,其中,所述处理器用于运行所述可执行指令时,执行以下操作:
通过内嵌于网页的播放器,创建对应所述网页中播放窗口的媒体源对象;将分段媒体文件中的不同轨道,添加到所述媒体源对象中相同的源缓存对象;传递以所述媒体源对象为数据源的虚拟地址到所述网页的媒体元素;调用所述媒体元素解析所述虚拟地址关联的媒体源对象,以及,读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放。
又一方面,本公开实施例还提供了一种媒体文件的同步播放装置,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令实现本公开实施例提供的媒体文件的同步播放方法。
又一方面,本公开实施例还提供了一种存储介质,存储有可执行指令,所述可执行指令被执行时,用于实现本公开实施例提供的媒体文件的同步播放方法。
本公开实施例具有如下技术效果:
1)将非流媒体格式的媒体文件中的媒体数据所转换成的分段媒体文件,通过网页的媒体源扩展接口,发送给网页的媒体元素进行解码播放,实现了通过网页播放非流媒体格式的媒体文件,克服了非流媒体封装格式文件需要完整下载后才可以独立播放的限制。
2)媒体数据在前端网页的播放器完成向分段媒体文件的转换,对于后台服务器而言需要存储不同分辨率的媒体文件,而分段媒体文件不需要在服务器侧预先存储,实现了媒体文件以低存储空间占用方式的播放。
3)通过将分段媒体文件中的不同轨道,添加到所述媒体源对象中相同的源缓存对象,使得不同轨道同步播放,克服了现有技术利用媒体源口扩展接口播放的媒体文件的声音和画面不同步的缺陷。
附图说明
图1是本公开实施例提供的用于多媒体文件封装的容器的一个可选结构示意图;
图2是本公开实施例中MP4文件的一个可选的封装结构示意图;
图3是本公开实施例中媒体文件中的媒体数据容器存储媒体数据的一个可选的结构示意图;
图4是本公开实施例中FMP4文件的一个可选的封装结构示意图;
图5为本公开实施例媒体文件的同步播放装置一个可选的组成示意图;
图6为本公开实施例媒体文件的同步播放装置一个可选的组成示意图;
图7为本公开实施例提供的媒体文件的同步播放方法的一个可选的流程示意图;
图8是本公开实施例提供的播放器通过网页的媒体源扩展接口播放分段媒体文件的一个可选的示意图;
图9为本公开实施例提供的MP4文件转换为FMP4文件并通过媒体源扩展接口播放的一个示意图;
图10为本公开实施例提供的媒体文件的同步播放方法的一个可选的流程示意图。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本公开。
对本公开进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释。
1)媒体文件,以容器(Box,也称为盒子)的方式存储进行编码的媒体数据(例如音频数据和视频数据中的至少一种)的文件,其中还包括用以表达媒体信息以保证媒体数据被正确解码的元数据。
例如,采用动态图像专家组(MPEG,Moving Picture Experts Group)-4封装格式封装媒体数据的形成的媒体文件被称为MP4文件。典型地,MP4文件中存储高级视频编码(AVC,Advanced Video Coding,即H.264)或MPEG-4(Part 2)规范编码的视频数据和高级音频编码(AAC,Advanced Audio Co ding)规范编码的音频数据,当然不排除视频和音频的其他编码方式。
2)容器(Box),也称为盒子,由唯一的类型标识符和长度定义的面向对象的构件,参见图1,是本公开实施例提供的容器的一个可选的结构示意图,包括容器头部(BoxHeader)和容器数据(Box Data),其中填充有用于表达各种信息的二进制数据。
容器头部包括容量(size)和类型(type),容量指明了容器在媒体文件中所占用的长度,类型指明了容器的类型,参见图2,是本公开实施例提供的MP4文件的一个可选的封装结构示意图,MP4文件中涉及的基本容器类型包括文件类型容器(ftyp box)、元数据容器(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=0to i-1of delta(j)) (2)
所有偏移量的和是轨道中媒体数据的时长。
stss box记录了媒体文件中的关键帧的序号。
sts box记录了采样与存储采样的块的映射关系,通过表来映射采样的序号和块的序号之间的关系,通过查表可以找到包含指定采样的块。
stco box定义了每个块在轨道中的位置,位置采用在媒体数据容器的起始字节的偏移量、以及相对于所述起始字节的长度(即容量)表示。
stsz 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,HT TP Live Streaming)技术的TS媒体文件分片,FLV(Flash Video)文件等。
10)非流媒体格式,把媒体数据封装为媒体文件、且媒体文件完整下载后才可以被解码播放的封装技术,典型的非流媒体格式的文件包括:MP4文件,视窗媒体视频(WMV,Windows Media Video)文件,高级串流格式(ASF,Advanced Streaming 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 SpecificIntegrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件实现,用于执行实现本公开实施例提供的媒体文件的同步播放方法。
下面说明媒体文件的同步播放装置的纯软件实施,实现本公开实施例媒体文件的同步播放装置可以被应用程序或插件,或者采用二者结合的方式实现。
作为示例,应用程序可以是专用于进行媒体文件的同步播放的客户端,也可以是将媒体文件的同步播放功能作为可选功能的客户端,通过安装相应的插件实现。
作为示例,插件可以实现为应用程序的功能升级安装包,在用于非媒体播放的应用程序中扩展媒体文件的同步播放的功能。
作为媒体文件的同步播放装置的硬件实施或软件实施的示例,媒体文件的同步播放装置可以提供为一系列在信号/信息/数据层面存在耦合关系的模块,下面将结合图6进行说明,参见图6,图6为本公开实施例媒体文件的同步播放装置一个可选的组成示意图,示出了实现媒体文件的同步播放装置包括的一系列模块,但是媒体文件的同步播放装置的模块结构不仅限于图6所示,例如,可以对其中的模块根据所实现的不同功能而进一步拆分或者合并。下面对图6所示的模块实现的功能进行说明。
媒体资源创建模块601,用于通过内嵌于网页的播放器,创建对应所述网页中播放窗口的媒体源对象;将分段媒体文件中的不同轨道,添加到所述媒体源对象中相同的源缓存对象;
媒体资源传递模块602,用于传递以所述媒体源对象为数据源的虚拟地址到所述网页的媒体元素;
媒体资源播放模块603,用于调用所述媒体元素解析所述虚拟地址关联的媒体源对象;读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放。
在一些实施例中,所述媒体资源创建模块601,用于从所述分段媒体文件中提取视频轨、以及与所述视频轨同步的音频轨;将所提取的视频轨、以及音频轨添加到所述媒体源对象中相同的源缓存对象;其中,且所述源缓存对象为对应所述网页中接收到播放事件的播放窗口而创建。
在一些实施例中,所述媒体资源创建模块601,还用于将与所提取的视频轨同步的字幕轨添加到所述相同的源缓存对象。
在一些实施例中,所述媒体资源播放模块603,还用于调用所述网页的视频元素解码播放添加到所述源缓存对象中的视频轨和字幕轨;同步调用所述网页的音频元素解码播放添加到所述源缓存对象中的音频轨。
在一些实施例中,所述媒体资源创建模块601,还用于响应于在所述网页中的对应媒体文件的播放事件,获取所述媒体文件中对应给定时段的媒体数据;基于所获取的媒体数据构造用于独立解码的所述分段媒体文件。
在一些实施例中,所述媒体资源创建模块601,还用于获取目标分辨率的分段媒体文件;清除添加到所述源缓存对象中的原分辨率的、且未解码播放的分段媒体文件;将所述目标分辨率的分段媒体文件添加到所述媒体源对象中相同的源缓存对象,以在当前已经播放的原分辨率的分段媒体文件结束时,接续播放点播放目标分辨率的分段媒体文件。
在一些实施例中,所述媒体资源创建模块601,还用于根据所述播放器的网络参数的更新,获取目标分辨率的分段媒体文件以适配所述网络参数的更新;响应于在所述播放窗口中接收到的分辨率切换事件,根据所述分辨率切换事件所指示的目标分辨率获取相应目标分辨率的分段媒体文件。
在一些实施例中,播放器通过内嵌于网页的播放器,创建、调用对应所述网页中播放窗口的媒体源对象,并读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放。参见图7,图7为本公开实施例提供的媒体文件的同步播放方法的一个可选的流程示意图,将结合图7示出的步骤进行说明。
在下文记载的一些示例中,以媒体文件为MPEG-4为例说明,根据MPEG-4的实施,可以轻易预见在其他非流媒体格式的实施。
步骤701,通过内嵌于网页的播放器,创建对应所述网页中播放窗口的媒体源对象。
例如,当播放器在网页中播放窗口(播放器对应播放窗口)接收到媒体文件的播放事件时,播放器通过MSE执行MediaSource方法创建媒体源(Media Source)对象;执行媒体源扩展接口中封装的addSourceBuffer方法创建MediaSource对象的缓存,即源缓存(SourceBuffer)对象,一个MediaSource对象拥有一个或多个SourceBuffer对象,每个SourceBuffer对象可以用于对应网页中的一个播放窗口,用于接收窗口中待播放的分段媒体文件。
步骤702,将分段媒体文件中的不同轨道,添加到所述媒体源对象中相同的源缓存对象。
申请人是实施本申请的过程发现,当播放分段媒体文件时,如果由于分段媒体文件的视频轨和音频轨处于不同的源缓存对象中,因此播放过程中,处于不同源缓存对象中的音频轨和视频轨不能够相互同步,但是,通过实施如步骤702记载的将视频轨和音频轨添加到媒体源对象中相同的源缓存对象的方案,发现可以有效克服这一缺陷。
在一些实施例中,从所述分段媒体文件中提取视频轨、以及与所述视频轨同步的音频轨;将所提取的视频轨、以及音频轨添加到所述媒体源对象中相同的源缓存对象;其中,且所述源缓存对象为对应所述网页中接收到播放事件的播放窗口而创建。通过将所提取的视频轨、以及音频轨添加到所述媒体源对象中相同的源缓存对象,实现了影音同步,避免了通过源缓存所播放的媒体文件仅存在视频帧或是音频帧的缺陷。
例如,根据分段媒体文件是否包括字幕轨,将分段媒体文件中的如下轨道添加到媒体源对象中相同的源缓存对象:(a)视频轨与音频轨;(b)视频轨、音频轨和字幕轨。从而,当所述媒体文件包括字幕轨时,将字幕轨与所提取的视频轨同步的字幕轨添加到所述相同的源缓存对象,使得字幕能够与视频和音频同步输出。
如图8所示,在媒体文件的播放过程中,播放器中的解析器(Parser)通过解析新获取的媒体数据,不断构造新的分段媒体文件,通过执行SourceBuffer对象的appendBuffer方法,添加分段媒体文件的轨道到同一个MediaSource对象的SourceBuffer对象。
在一些实施例中,针对分段媒体文件是流媒体文件的情况,播放请求用于向服务器请求给定时段(用于接续播放器的实时的播放点)内的分段媒体文件,通过网页的媒体资源扩展接口发送到网页的媒体元素进行解码,从而实现对媒体文件的连续播放。
作为示例,给定时段可以是在播放点之后的预加载时长,用于在播放点之后预加载部分的媒体文件,用以实现流畅的观看体验。所给定时段的长度可以由播放器与网络参数或宿主设备的特征参数相适配,以实现终端资源和/或网络资源的优化利用。
作为示例,给定时段也可以是播放点之后的至少一个内容单元的长度,其中内容单元用于依据媒体文件中的人物、场景和情节等划分形成,用以表示媒体文件中内容的变化,以最大程度避免给定时段被用户跳跃从而消耗不必要流量。
在一些实施例中,针对分段媒体文件是非流媒体格式的情况,可以响应于在所述网页中的对应媒体文件的播放事件,获取所述媒体文件中对应给定时段的媒体数据;基于所获取的媒体数据构造用于独立解码的所述分段媒体文件。
在一些实施例中,针对分段媒体文件是非流媒体格式的情况,播放器获取分段媒体文件时,可以基于媒体文件的播放过程中实时的播放点,确定待播放的媒体文件中的两个关键帧;发送网络请求给服务器,所述网络请求用于请求获取媒体文件中所述两个关键帧之间的媒体数据,通过所获取的媒体数据可以构造能够独立解码播放的分段媒体文件,通过网页的媒体资源扩展接口发送到网页的媒体元素进行解码,从而实现对所构造的分段媒体文件的连续播放。
继续对基于播放点确定两个关键帧进行说明。播放器在播放媒体文件的过程中,通过加载关键帧之间的数据实现媒体文件的播放,即播放器以两个关键帧之间的媒体数据为播放加载单元。就播放点而言,可以是通过连续播放媒体文件(也即在用户未加以干预的情况下自然播放)的方式到达的播放时刻,例如从第30分钟开始播放到第40分钟的播放点;也可以是通过跳转的方式(也即用户通过光标点击进度条实现页面跳转)到达媒体文件到达的播放时刻,例如原播放点为播放进度的20%,跳转后的播放点为播放进度的30%。
在实际应用中,基于播放点所确定的两个关键帧可以为媒体文件中相邻的两个关键帧,或者两个关键帧之间存在其它的一个或多个关键帧,而两个关键帧之间的关键帧的数量,可以根据浏览器的缓存性能(如可用缓存的容量)、网络性能(网络带宽)等确定,还可以依据实际需要进行设定。
在一些实施例中,针对播放点是通过连续播放媒体文件的方式到达的播放时刻的情况,根据播放点对应的视频帧是普通帧或关键帧的情况,说明确定两个关键帧(设为第一关键帧、以及解码时间第一关键帧之后的第二关键帧)的方式。
情况1)播放点所对应的视频帧为普通帧,由于播放器以两个关键帧之间的媒体数据为基本播放加载单位,因此,播放点之后、播放点之后的首个关键帧(解码时间晚于播放点的关键帧中距离播放点最近的关键帧)之前的媒体数据为已加载的媒体数据,而为了避免重复获取该部分已加载的媒体数据,给定时段的两个关键帧中的第一关键帧为:媒体文件中解码时间在播放点之后的首个关键帧;两个关键帧中的第二关键帧为:媒体文件中解码时间晚于第一关键帧的关键帧。
情况2)播放点所对应的视频帧为关键帧,两个关键帧中的第一关键帧为:播放点对应的关键帧,即与播放点时间对齐的关键帧;两个关键帧中的第二关键帧为:媒体文件中解码时间晚于第一关键帧的关键帧。
在上述情况1)中,将跨越播放点的关键帧作为媒体数据的端点,能够保证在播放点所对应的视频帧有足够的信息用于正确解码,不会出现因为缺少解码数据(即关键帧)而跳帧的情况。
在另一个实施例中,针对播放点是通过跳转的方式到达的播放时刻的情况,根据播放点对应的视频帧是普通帧或关键帧的情况,说明确定两个关键帧(设为第一关键帧、以及解码时间第一关键帧之后的第二关键帧)的方式。
情况1)播放点所对应的视频帧为普通帧,由于播放点是跳转到达的,因此播放点之前的首个关键帧、与播放点之间的媒体数据没有被加载,第一关键帧为:媒体文件中解码时间在播放点之前的首个关键帧,也即是媒体数据的时间(也即是,媒体信息所表示的序号与帧的解码时间的对应关系)中查找解码时间早于给定时段的起始时间、且距离起始时间最近的关键帧;两个关键帧中的第二关键帧为:媒体文件中解码时间晚于第一关键帧的关键帧。额外请求播放点至播放点之前的关键帧之间的媒体数据,可以保证跳转到任何播放点都能够正常解码,避免出现播放点对应普通帧时因为无法解码而跳帧的情况。
情况2)播放点所对应的视频帧为关键帧,第一关键帧为:播放点所对应的关键帧,也即是从媒体数据的时间(也即是,媒体信息所表示的序号与帧的解码时间的对应关系)中查找的解码时间对齐播放点时间的关键帧;两个关键帧中的第二关键帧为:媒体文件中解码时间晚于第一关键帧的关键帧。
上述情况1)中,将跨越播放点的关键帧作为媒体数据的端点,能够保证在播放点所对应的视频帧有足够的信息用于正确解码,不会出现因为缺少解码数据(即关键帧)而跳帧的情况。
在情况2)中,以对齐播放点的关键帧来界定待获取的媒体数据,在播放点能够被正确解码的前提下,最大程度减少了获取不必要的媒体数据的情况,减少了对连接和流量的占用,进而保证网页中非媒体播放业务的实时性。
在一些实施例中,播放器发送给服务器的网络请求携带所请求的两个关键帧之间的媒体数据的偏移量和容量,以使服务器从媒体文件中提取从所述偏移量开始,且符合所述容量的媒体数据,返回给播放器。因此,播放器在发送网络请求之前,需要根据从媒体文件的元数据中识别出的媒体信息(即视频/音频帧的位置、偏移量、解码时间等信息),确定媒体数据在媒体文件中的偏移量及容量。而确定偏移量及容量之前首先要从媒体文件的元数据中识别出媒体信息。
接下来对基于识别出的媒体信息确定媒体数据在媒体文件中的偏移量及容量进行说明,在一些实施例中,播放器可通过如下方式确定媒体数据在媒体文件中的偏移量及容量:基于识别出的媒体信息,确定媒体数据的视频帧(即第一关键帧及第二关键帧之间的视频帧)在媒体文件中的偏移量及容量、以及与视频帧对齐的音频帧在媒体文件中的偏移量及容量;根据所确定的偏移量及容量,确定包括上述视频帧和音频帧的目标区间(由最小偏移量和最大容量构成的区间)的偏移量及容量;其中,目标区间包括上述视频帧和音频帧。
这里,对查找前述的与视频帧的对齐的音频帧的方式进行说明:以视频帧为基准,根据媒体数据的起始时间和时长,在视频帧定位时间同步的音频帧,保证媒体数据中第一个音频帧的解码起始时间不晚于第一个视频帧的解码起始时间,最后一个音频帧的解码时间不早于最后一个视频帧的解码结束时间,如此,能够克服媒体文件中视频、音频时长不一致的问题,保证每帧视频播放时会有同步的音频播放,不会出现有画面没声音的现象。
播放器向服务器请求媒体数据时,在播放请求中携带给定时段的媒体数据在媒体文件中的位置(使用目标区间的偏移量和容量表示),下面说明确定目标区间的方式,播放器通过两个关键帧中第一关键帧及第二关键帧之间的视频帧在媒体文件中的偏移量和容量,定位视频帧在元数据容器中的位置,通过与视频帧对齐的音频帧在媒体文件中的偏移量和容量,定位音频帧在元数据容器中的位置,取位置的上限和下限构成的区间为目标区间,即由最小偏移量和最大容量构成的区间;其中,位置的上限对应的偏移量和容量为目标区间的上限对应的偏移量和容量,位置的下限对应的偏移量和容量为目标区间的下限对应的偏移量和容量。在实际应用中,目标区间是目标分辨率媒体文件的媒体数据容器中存储视频帧和音频帧的最小区间,例如:第一关键帧和第二关键帧之间的视频帧在目标分辨率媒体文件的位置的偏移量,对应区间为[a,b](地址为升序),音频帧在目标分辨率媒体文件的位置的偏移量,对应区间为[c,d](地址为升序),那么,取位置的上限和下限构成的区间即为[min(a,c),max(b,d)]。如此,播放器发送携带目标区间的偏移量和容量的网络请求给服务器,以请求目标区间的媒体数据,服务器基于目标区间的偏移量和容量提取媒体文件中的媒体数据后一次性的返回目标区间的媒体数据,无须二次获取,减少了播放器的请求次数,提高了处理效率。
在一些实施例中,针对在播放过程中播放器切换所播放的媒体文件的分辨率的处理方式进行说明,播放器获取目标分辨率的分段媒体文件,清除添加到所述源缓存对象中的原分辨率的、且未解码播放的分段媒体文件,以及,将所述目标分辨率的分段媒体文件添加到所述媒体源对象中相同的源缓存对象,用于在当前已经播放的原分辨率的分段媒体文件结束时接续播放。通过清除添加到所述源缓存对象中的原分辨率的、且未解码播放的分段媒体文件,当用户进行分辨率切换时,可以及时将符合目标分辨率要求的媒体文件展示给用户。
例如,播放器可以在播放原分辨率的媒体文件的过程中,检测网络参数,并根据所述播放器的网络参数的更新确定需要切换播放目标分辨率的分段媒体文件以适配所述网络参数的更新;或者,播放器可以响应于在所述播放窗口中接收到的由用户触发的分辨率切换事件,根据所述分辨率切换事件所指示的目标分辨率获取相应目标分辨率的分段媒体文件。
作为示例,网络参数可以包括:空闲下行带宽参数、连接终端的数量等,播放器可以根据所述网络参数的变化,计算能够使播放器相对于实时的播放点预加载固定时段,能够实现的最大分辨率,进一步的续获取最大分辨率的分段媒体文件,可以在流畅播放的前提下以实现最优的播放效果,提升用户的使用体验。
下面,以播放器将MP4文件转换FMP4文件并通过媒体源扩展接口在网页播放的过程进行说明。
参见图9,图9为本公开实施例提供的MP4文件转换为FMP4文件并通过媒体源扩展接口播放的一个示意图,播放器基于媒体文件的真实地址(http://w ww.toutiao.com/a/b.mp4),从服务器请求获取MP4文件中部分的媒体数据,例如解码时间处于用于接续播放点的给定时段的数据。
播放器基于获取的媒体数据构造FMP4文件,然后添加到MediaSource对象对应的SourceBuffer对象,由于虚拟URL被绑定到MediaSource对象,因此播放器调用audio/video元素的代码被执行时,audio/video元素从MediaSource对象的SourceBuffer对象读取被不断添加的新的FMP4文件,并解码,实现媒体文件的连续播放。网页的媒体元素基于虚拟URL进行媒体源对象的获取,进而实现媒体文件的播放,而非基于媒体文件的真实地址进行媒体数据获取,如此,实现了对媒体文件真实地址的保护。
针对分段媒体文件是基于关键帧之间的媒体数据进行封装得到的情况,播放器需要根据媒体文件的媒体信息,确定给定时段的媒体数据在媒体文件中的偏移量和容量,进而根据偏移量和容量向服务器请求媒体数据以封装分段媒体文件,接下来对播放器解析出媒体信息的方式进行说明。
在一些实施例中,播放器可通过如下方式从媒体文件中解析出媒体信息:根据设定的偏移量和容量,向服务器请求对应设定的偏移量和容量的媒体文件中的数据(即请求固定容量的数据),从服务器返回的数据中识别出元数据容器中的元数据,解析识别出的元数据,得到用于描述媒体文件的媒体数据容器中封装的媒体数据的媒体信息。
其中,设定的容量可以是根据已有的媒体文件的文件类型容器和元数据容器的容量统计得到,使得设定的容量能够覆盖设定比例(如全部)媒体文件的文件类型容器和元数据容器的容量的加和,确保当媒体文件的封装结构为顺序封装的文件类型容器、元数据容器和媒体数据容器时,能够通过一次请求得到完整的元数据容器中所封装的元数据,节约了网络传输时对连接的占用情况,进而避免了因为连接占用导致网页中非媒体播放业务因为无法使用连接而延迟响应的情况。
以媒体文件为MP4文件为例,播放器获取的元数据容器中封装的元数据即为MP4文件中的moov box中封装的二进制数据,当MP4文件的封装结构为顺序封装的fytp box、moovbox和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中的元数据。
继续说明播放器根据所获取的元数据容器的二进制数据解析出媒体信息的方式,当播放器从服务器处获取元数据容器中封装的元数据后,在一些实施例中,播放器可通过如下方式对获取的元数据进行解析,得到媒体信息:顺序解析元数据容器二进制数据中对应容器头部的规范长度的二进制数据,得到所述元数据容器中子容器的容器类型、以及所述子容器的容器数据的长度;调用与所述子容器的容器类型相应类型的解析器,顺序解析未解析的数据中与所述容器数据的长度相应的二进制数据,得到所述容器数据所表示的媒体信息。
以媒体文件为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的子容器。
在一些实施例中,通过比对确定所述子容器的容器类型没被预标记、或者被预标记为直接封装二进制数据但是没有调用到相应类型的解析器时,忽略解析子容器对应的二进制数据,根据所述子容器的长度,跳转到所述二进制数据中对应下一子容器的部分继续解析。
在实际应用中,媒体文件中会出现自定义的容器类型,通过跳转的方式不会影响元数据容器的整体解析的进度,同时通过设置解析器的方式,当元数据容器的容器类型发生变动时,通过对相应类型的解析器的增加、删除和修改,可以快速实现对最新的元数据容器的兼容解析,具有升级灵活快速的特点。
步骤703,将以所述媒体源对象为数据源的虚拟地址传递到所述网页的媒体元素。
在一些实施例中,播放器传递虚拟地址之前,调用媒体资源扩展接口创建对应媒体源对象的虚拟地址。例如,播放器执行媒体源扩展接口中封装的createObjectURL方法,创建对应媒体源对象的虚拟地址,即虚拟URL,其中封装有Blob类型的分段媒体文件。
播放器将所构造的分段媒体文件添加到媒体资源扩展接口中的媒体源对象之后,调用媒体资源扩展接口创建对应媒体源对象的虚拟地址。例如,播放器执行媒体源扩展接口中封装的createObjectURL方法,创建对应媒体源对象的虚拟地址,即虚拟统一资源定位符(URL,Uniform Resource Locator),其中封装有Blob类型的分段媒体文件。
此外,播放器将MediaSource对象设置为虚拟URL的源(src)属性,也就是将虚拟URL与网页中的媒体元素如video/audio元素绑定,这个过程也称为将媒体源对象关联到网页中的媒体元素。
步骤704,播放器调用所述媒体元素解析所述虚拟地址关联的媒体源对象,以及读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放。
在一些实施例中,播放器调用所述网页的视频元素解码播放添加到所述源缓存对象中的视频轨和字幕轨,以及同步调用所述网页的音频元素解码播放添加到所述源缓存对象中的音频轨。
例如,对于播放器向网页的媒体元素传递虚拟地址来说,播放器中包括有调用媒体元素播放虚拟URL的语句,例如:<audio>虚拟URL。播放器中调用网页的video元素和/或audio元素的代码被浏览器解释执行时,网页的video元素将读取虚拟地址的源缓存对象中的视频轨进行解码播放,并同步显示字幕轨,同时,audio元素将读取虚拟地址的源缓存对象中的音频轨进行解码播放。由于所读取的音频轨、视频轨和字幕轨位于同一个源缓存对象中,因此可以实现影音同步。
接下来以播放器使用网页的video元素和audio元素播放MP4文件为例,对本公开实施例的媒体文件的同步播放方法进行说明,根据MP4的实施,可以轻易应用于其它非流媒体格式。图10示出了本公开实施例提供的媒体文件的同步播放方法的一个可选的流程示意图,参见图10,本公开实施例提供的媒体文件的同步播放方法包括:
步骤1001:播放器根据设定的偏移量和容量,向服务器请求固定容量的M P4文件中的数据。
播放器通过发送携带设定的偏移量和容量的数据请求给服务器,以获取M P4文件中从零字节开始、且符合设定容量的二进制数据。以MP4文件的封装结构包括顺序封装的fytp box、moov box和mdat box为例,设定容量可以是根据已有MP4文件的ftyp box和moovbox容量统计得到,使设定容量能够覆盖设定比例(如全部)MP4文件的ftyp box和moov box的加和,确保一次即可从服务器请求完整的moov box二进制数据。若通过一次请求未获取到完整的moov数据,则重新计算偏移量及容量,进而二次请求。
步骤1002:播放器接收服务器返回的数据,并从服务器返回的数据中识别出MP4文件的媒体信息。
MP4文件的媒体信息包括MP4文件中视频/音频帧的偏移量、容量、解码时间等信息。
在一些实施例中,播放器可通过如下方式实现MP4文件的媒体信息的识别:从服务器返回的数据中识别出fytp box的二进制数据,并从剩余的二进制数据中读取容器的类型和容量;当读取的容器的类型为moov box,且剩余的二进制数据的容量不小于moov box的容量时,从剩余的二进制数据中解析出媒体信息。这里,对于服务器返回的二进制数据,开始的一段二进制数据必然是对应ftyp box的,根据ftyp box的封装规范,可以读取ftypbox的容量(即长度)以及完整的MP4文件的容量;例如ftyp box的容量a(单位为字节),则从a+1开始读取后续容器的头部信息,获取容器的类型和容量,如果是moov box,且(设定容量-ftyp box的容量)大于moov box的容量,说明已经取回了moov box的完整二进制数据,可以根据封装结构进行解析二进制数据,还原出媒体信息。
在一些实施例中,当服务器返回的二进制数据未包括完整的moov数据时,从所获取的二进制数据中读取容器的容量,确定moov box在MP4文件中的偏移量和容量;根据所确定的偏移量和容量,当从剩余的二进制数据读取的容器的类型为moov box,且剩余的二进制数据的容量不小于moov box的容量时,从服务器获取MP4文件中以moov box在MP4文件中的偏移量开始、且符合moov box在MP4文件中的容量的moov数据;当从剩余的二进制数据读取的容器的类型为moov box,且剩余的二进制数据的容量小于moov box的容量时,计算moov box的容量与剩余二进制数据容量的差值作为二次请求的新的容量,以首次请求的偏移量和容量的加和作为新的偏移量,向服务器第二次请求二进制数据。
在实际应用中,存在MP4文件的封装结构为顺序封装的fytp box、mdat box、moovbox的情况,当从剩余的二进制数据读取的容器的类型为mdat box时,计算mdat box的容量与计算moov box容量的加和为二次请求的新偏移量,以设定的容量向服务器第二次请求二进制数据。
步骤1003:在播放器通过网页播放MP4文件的过程中,根据识别出的媒体信息及当前的播放点定位MP4文件中的两个关键帧。
在本公开实施例中,播放器以两个关键帧之间的媒体数据(至少包括视频数据,还可进一步包括音频数据)为加载单元进行播放,也即播放器通过加载两个关键帧之间的媒体数据进行MP4文件播放,两个关键帧之间可以仅存在普通帧,即两个关键帧为相邻关键帧,两个关键帧之间亦可以存在其它关键帧。
以通过跳转的方式到达MP4文件的播放点为例进行说明,播放器定位第一关键帧为:MP4文件中解码时间在播放点之前的首个关键帧,定位第二关键帧为:MP4文件中解码时间晚于第一关键帧的关键帧。这里,播放点所对应的媒体文件的视频帧包括普通帧或关键帧两种情况,而当播放点所对应的视频帧刚好为关键帧时,MP4文件中解码时间在播放点之前的首个关键帧即为播放点所对应的关键帧,也即,此时播放器所请求的媒体数据中的第一个关键帧即为播放点所对应的关键帧。
播放器定位MP4文件中的两个关键帧包括:基于识别出的媒体信息及当前的播放点确定上述第一关键帧及第二关键帧的偏移量及容量,进而基于偏移量及容量向服务器请求第一关键帧及第二关键帧之间的媒体数据。
步骤1004:向服务器请求定位的两个关键帧之间的媒体数据。
在实际实施时,播放器向服务器发送网络请求,以请求MP4文件中定位的两个关键帧之间的媒体数据,网络请求中携带两个关键帧所对应的目标区间的偏移量及容量。
这里,播放器通过第一关键帧及第二关键帧之间的视频帧在MP4文件中的偏移量和容量,定位视频帧在mdat中的位置,通过与视频帧对齐的音频帧在MP4文件中的偏移量和容量,定位音频帧在mdat中的位置,取位置的上限和下限构成的区间为目标区间,位置的上限对应的偏移量和容量为目标区间的上限对应的偏移量和容量,位置的下限对应的偏移量和容量为目标区间的下限对应的偏移量和容量。
步骤1005:播放器向服务器请求MP4文件中所述两个关键帧之间的媒体数据。
步骤1006:播放器接收由服务器返回的相应媒体数据。
步骤1007:播放器基于提取的媒体数据构造FMP4格式的分段媒体文件。
在实际实施时,由播放器根据媒体数据的媒体信息计算分段媒体文件级别的元数据,然后根据FMP4格式的分段媒体文件的封装格式,填充分段媒体文件级别的元数据以及媒体数据后得到FMP4格式的分段媒体文件。
步骤1008:播放器将分段媒体文件中的不同轨道,添加到所述媒体源对象中相同的源缓存对象。
其中,所述分段媒体文件中的不同轨道包括:(a)视频轨与音频轨;(b)视频轨、音频轨和字幕轨。
步骤1009:播放器调用所述媒体元素解析所述虚拟地址关联的媒体源对象,并读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放。
虚拟地址用于供媒体元素(video元素+audio元素)以媒体源对象为数据源进行视频播放。
综上所述,本公开实施例具有以下有益效果:
1)将非流媒体格式的媒体文件中的媒体数据所转换成的分段媒体文件,通过网页的媒体源扩展接口,发送给网页的媒体元素进行解码播放,实现了通过网页播放非流媒体格式的媒体文件,克服了非流媒体封装格式文件需要完整下载后才可以独立播放的限制。
2)媒体数据在前端网页播放器完成向分段媒体文件的转换,对于后台服务器而言需要存储不同分辨率的媒体文件,而分段媒体文件不需要在服务器侧预先存储,实现了媒体文件以低存储空间占用方式的播放。
3)通过将分段媒体文件中的不同轨道,添加到所述媒体源对象中相同的源缓存对象,使得不同轨道同步播放,克服了现有技术利用媒体源口扩展接口播放的媒体文件的声音和画面不同步的缺陷。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (16)

1.一种媒体文件的同步播放方法,其特征在于,包括:
通过内嵌于网页的播放器,创建对应所述网页中播放窗口的媒体源对象;
将分段媒体文件中的不同轨道,添加到所述媒体源对象中相同的源缓存对象;
将以所述媒体源对象为数据源的虚拟地址传递到所述网页的媒体元素;
调用所述媒体元素解析所述虚拟地址关联的媒体源对象,以及,
读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放。
2.根据权利要求1所述的方法,其特征在于,所述将分段媒体文件中的不同轨道,添加到所述媒体源对象中相同的源缓存对象,包括:
从所述分段媒体文件中提取视频轨、以及与所述视频轨同步的音频轨;
将所提取的视频轨、以及音频轨添加到所述媒体源对象中相同的源缓存对象;
其中,且所述源缓存对象为对应所述网页中接收到播放事件的播放窗口而创建。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述媒体文件包括字幕轨时,
将与所提取的视频轨同步的字幕轨添加到所述相同的源缓存对象。
4.根据权利要求3所述的方法,其特征在于,所述读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放,包括:
调用所述网页的视频元素,以解码播放添加到所述源缓存对象中的视频轨和字幕轨,以及,
同步调用所述网页的音频元素,以解码播放添加到所述源缓存对象中的音频轨。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述媒体文件采用非流媒体封装格式时,
响应于在所述网页中的对应媒体文件的播放事件,获取所述媒体文件中对应给定时段的媒体数据;
基于所获取的媒体数据构造用于独立解码的所述分段媒体文件。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
获取目标分辨率的分段媒体文件;
清除添加到所述源缓存对象中的原分辨率的、且未解码播放的分段媒体文件,以及,
将所述目标分辨率的分段媒体文件添加到所述媒体源对象中相同的源缓存对象,以在当前已经播放的原分辨率的分段媒体文件结束时,接续播放点播放目标分辨率的分段媒体文件。
7.根据权利要求6所述的方法,其特征在于,所述获取目标分辨率的分段媒体文件,包括:
根据所述播放器的网络参数的更新,获取目标分辨率的分段媒体文件以适配所述网络参数的更新;或者,
响应于在所述播放窗口中接收到的分辨率切换事件,根据所述分辨率切换事件所指示的目标分辨率,获取相应目标分辨率的分段媒体文件。
8.一种媒体文件的同步播放装置,其特征在于,所述装置包括:
媒体资源创建模块,用于通过内嵌于网页的播放器,创建对应所述网页中播放窗口的媒体源对象;
所述媒体资源创建模块,用于将以所述媒体源对象为数据源的虚拟地址传递到所述网页的媒体元素;
媒体资源传递模块,用于传递以所述媒体源对象为数据源的虚拟地址到所述网页的媒体元素;
媒体资源播放模块,用于调用所述媒体元素解析所述虚拟地址关联的媒体源对象;
所述媒体资源播放模块,用于读取所关联的媒体源对象的源缓存对象中的轨道、并进行解码播放。
9.根据权利要求8所述的装置,其特征在于,
所述媒体资源创建模块,用于从所述分段媒体文件中提取视频轨、以及与所述视频轨同步的音频轨;
将所提取的视频轨、以及音频轨添加到所述媒体源对象中相同的源缓存对象;
其中,且所述源缓存对象为对应所述网页中接收到播放事件的播放窗口而创建。
10.根据权利要求9所述的装置,其特征在于,
所述媒体资源创建模块,还用于将与所提取的视频轨同步的字幕轨添加到所述相同的源缓存对象。
11.根据权利要求9所述的装置,其特征在于,
所述媒体资源播放模块,还用于调用所述网页的视频元素,以解码播放添加到所述源缓存对象中的视频轨和字幕轨;
同步调用所述网页的音频元素,以解码播放添加到所述源缓存对象中的音频轨。
12.根据权利要求8所述的装置,其特征在于,
所述媒体资源创建模块,还用于响应于在所述网页中的对应媒体文件的播放事件,获取所述媒体文件中对应给定时段的媒体数据;
基于所获取的媒体数据构造用于独立解码的所述分段媒体文件。
13.根据权利要求8至12任一项所述的装置,其特征在于,
所述媒体资源创建模块,还用于获取目标分辨率的分段媒体文件;
清除添加到所述源缓存对象中的原分辨率的、且未解码播放的分段媒体文件;
将所述目标分辨率的分段媒体文件添加到所述媒体源对象中相同的源缓存对象,以在当前已经播放的原分辨率的分段媒体文件结束时,接续播放点播放目标分辨率的分段媒体文件。
14.根据权利要求13所述的装置,其特征在于,
所述媒体资源创建模块,还用于根据所述播放器的网络参数的更新,获取目标分辨率的分段媒体文件以适配所述网络参数的更新;
响应于在所述播放窗口中接收到的分辨率切换事件,根据所述分辨率切换事件所指示的目标分辨率获取相应目标分辨率的分段媒体文件。
15.一种媒体文件的同步播放装置,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述可执行指令时,实现如权利要求1至7任一项所述的媒体文件的同步播放方法。
16.一种存储介质,其特征在于,存储有可执行指令,所述可执行指令被执行时,用于实现如权利要求1至7任一项所述的媒体文件的同步播放方法。
CN201810571720.1A 2018-05-29 2018-05-29 媒体文件的同步播放方法、装置及存储介质 Active CN110545456B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201810571720.1A CN110545456B (zh) 2018-05-29 2018-05-29 媒体文件的同步播放方法、装置及存储介质
JP2020548643A JP6969013B2 (ja) 2018-05-29 2018-08-31 メディアファイルの同期再生方法、装置及び記憶媒体
PCT/CN2018/103474 WO2019227740A1 (zh) 2018-05-29 2018-08-31 媒体文件的同步播放方法、装置及存储介质
US17/002,067 US10978109B2 (en) 2018-05-29 2020-08-25 Synchronously playing method and device of media file, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810571720.1A CN110545456B (zh) 2018-05-29 2018-05-29 媒体文件的同步播放方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN110545456A true CN110545456A (zh) 2019-12-06
CN110545456B CN110545456B (zh) 2022-04-01

Family

ID=68696593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810571720.1A Active CN110545456B (zh) 2018-05-29 2018-05-29 媒体文件的同步播放方法、装置及存储介质

Country Status (4)

Country Link
US (1) US10978109B2 (zh)
JP (1) JP6969013B2 (zh)
CN (1) CN110545456B (zh)
WO (1) WO2019227740A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111885415A (zh) * 2020-07-24 2020-11-03 海信视像科技股份有限公司 一种音频数据快速输出方法及显示设备
CN112069356A (zh) * 2020-07-30 2020-12-11 中国建设银行股份有限公司 视频档案的存储方法、装置、电子设备及可读存储介质
CN112995760A (zh) * 2019-12-18 2021-06-18 腾讯科技(深圳)有限公司 视频处理方法、装置、设备及计算机存储介质
WO2022121436A1 (zh) * 2020-12-11 2022-06-16 海信视像科技股份有限公司 一种字幕调整方法及显示设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11647248B2 (en) * 2020-11-02 2023-05-09 Arcus Holding A/S Synchronized playback within a client interface utilising web technologies
CN113825016B (zh) * 2021-09-18 2024-05-07 北京百度网讯科技有限公司 视频渲染方法、装置、设备、存储介质及计算机程序产品

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7362702B2 (en) * 2001-10-18 2008-04-22 Qlogic, Corporation Router with routing processors and methods for virtualization
US20110320777A1 (en) * 2010-06-28 2011-12-29 Daniel Nemiroff Direct memory access engine physical memory descriptors for multi-media demultiplexing operations
KR20120058015A (ko) * 2010-11-29 2012-06-07 주식회사 씨제이헬로비전 멀티태스킹을 지원하는 웹 기반 방송 서비스 시스템 및 그 방법
CN102497423A (zh) * 2011-11-10 2012-06-13 贵阳朗玛信息技术股份有限公司 网页聊天室的放歌方法、装置及系统
CN104133898A (zh) * 2014-07-31 2014-11-05 上海二三四五网络科技股份有限公司 一种浏览器内视频小窗播放的方法和装置
CN105393544A (zh) * 2013-04-01 2016-03-09 微软技术许可有限责任公司 媒体流传送中的动态轨道切换
CN106063282A (zh) * 2014-02-25 2016-10-26 谷歌公司 合并内容频道
US20160342384A1 (en) * 2012-09-28 2016-11-24 Pantech Co., Ltd. Mobile terminal and method for controlling sound output
CN107197387A (zh) * 2017-05-31 2017-09-22 聚好看科技股份有限公司 在网页上分时显示视频信息的方法及装置
CN107888932A (zh) * 2017-10-20 2018-04-06 深圳思麦杰科技有限公司 一种基于浏览器的跨平台视频直播的系统及方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10224749A (ja) * 1997-02-10 1998-08-21 Hitachi Ltd 音声映像多重化信号の入力制御装置
JP2004215126A (ja) * 2003-01-08 2004-07-29 Cyber Business Corp 多言語対応型動画配信システム
CN102055717B (zh) * 2009-11-09 2014-08-13 华为技术有限公司 快速播放的方法、终端及服务器
JP5809099B2 (ja) * 2012-04-20 2015-11-10 日本電信電話株式会社 Web閲覧画面サムネイル生成システム
JP2014057162A (ja) * 2012-09-11 2014-03-27 Konica Minolta Inc 画像形成装置、画像形成装置の制御方法、及び画像形成装置の制御プログラム
US20170024097A1 (en) * 2012-09-13 2017-01-26 Bravo Ideas Digital Co., Ltd. Method and Host Server for Creating a Composite Media File
CN103051953B (zh) * 2012-12-30 2016-01-20 乐视网信息技术(北京)股份有限公司 一种利用视频播放器对视频文件进行解码方法
US20140337120A1 (en) * 2013-05-08 2014-11-13 Radiate Media Holding Company Integrating media analytics to configure an advertising engine
CN104575547B (zh) * 2013-10-17 2017-12-22 深圳市云帆世纪科技有限公司 多媒体文件制作方法、播放方法及系统
US10291561B2 (en) * 2015-02-09 2019-05-14 Nokia Technologies Oy Apparatus, a method and a computer program for image coding and decoding

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7362702B2 (en) * 2001-10-18 2008-04-22 Qlogic, Corporation Router with routing processors and methods for virtualization
US20110320777A1 (en) * 2010-06-28 2011-12-29 Daniel Nemiroff Direct memory access engine physical memory descriptors for multi-media demultiplexing operations
KR20120058015A (ko) * 2010-11-29 2012-06-07 주식회사 씨제이헬로비전 멀티태스킹을 지원하는 웹 기반 방송 서비스 시스템 및 그 방법
CN102497423A (zh) * 2011-11-10 2012-06-13 贵阳朗玛信息技术股份有限公司 网页聊天室的放歌方法、装置及系统
US20160342384A1 (en) * 2012-09-28 2016-11-24 Pantech Co., Ltd. Mobile terminal and method for controlling sound output
CN105393544A (zh) * 2013-04-01 2016-03-09 微软技术许可有限责任公司 媒体流传送中的动态轨道切换
CN106063282A (zh) * 2014-02-25 2016-10-26 谷歌公司 合并内容频道
CN104133898A (zh) * 2014-07-31 2014-11-05 上海二三四五网络科技股份有限公司 一种浏览器内视频小窗播放的方法和装置
CN107197387A (zh) * 2017-05-31 2017-09-22 聚好看科技股份有限公司 在网页上分时显示视频信息的方法及装置
CN107888932A (zh) * 2017-10-20 2018-04-06 深圳思麦杰科技有限公司 一种基于浏览器的跨平台视频直播的系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MICROSOFT: ""Building a simple MPEG-DASH streaming player (Windows)"", 《MICROSOFT DOCS》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112995760A (zh) * 2019-12-18 2021-06-18 腾讯科技(深圳)有限公司 视频处理方法、装置、设备及计算机存储介质
CN111885415A (zh) * 2020-07-24 2020-11-03 海信视像科技股份有限公司 一种音频数据快速输出方法及显示设备
CN111885415B (zh) * 2020-07-24 2023-04-07 海信视像科技股份有限公司 一种音频数据快速输出方法及显示设备
CN112069356A (zh) * 2020-07-30 2020-12-11 中国建设银行股份有限公司 视频档案的存储方法、装置、电子设备及可读存储介质
CN112069356B (zh) * 2020-07-30 2024-03-22 中国建设银行股份有限公司 视频档案的存储方法、装置、电子设备及可读存储介质
WO2022121436A1 (zh) * 2020-12-11 2022-06-16 海信视像科技股份有限公司 一种字幕调整方法及显示设备

Also Published As

Publication number Publication date
JP2021510047A (ja) 2021-04-08
US10978109B2 (en) 2021-04-13
WO2019227740A1 (zh) 2019-12-05
JP6969013B2 (ja) 2021-11-24
CN110545456B (zh) 2022-04-01
US20200388304A1 (en) 2020-12-10

Similar Documents

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