CN110858919A - 媒体文件播放过程中的数据处理方法、装置及存储介质 - Google Patents

媒体文件播放过程中的数据处理方法、装置及存储介质 Download PDF

Info

Publication number
CN110858919A
CN110858919A CN201810975873.2A CN201810975873A CN110858919A CN 110858919 A CN110858919 A CN 110858919A CN 201810975873 A CN201810975873 A CN 201810975873A CN 110858919 A CN110858919 A CN 110858919A
Authority
CN
China
Prior art keywords
file
media
flv
data
target
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.)
Pending
Application number
CN201810975873.2A
Other languages
English (en)
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 CN201810975873.2A priority Critical patent/CN110858919A/zh
Publication of CN110858919A publication Critical patent/CN110858919A/zh
Pending legal-status Critical Current

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
    • 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/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • 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/85406Content authoring involving a specific file format, e.g. MP4 format

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开提供了一种媒体文件播放过程中的数据处理方法、装置及存储介质,方法包括:在直播流媒体(FLV)文件的过程中,播放器通过长连接请求满足预设条件的目标FLV文件;在获取到所述目标FLV文件时,利用文件解析器对所述目标FLV文件进行解析,得到解析后的媒体数据;基于所述解析后的媒体数据进行媒体文件的播放。

Description

媒体文件播放过程中的数据处理方法、装置及存储介质
技术领域
本公开涉及媒体播放技术,尤其涉及一种媒体文件播放过程中的数据处理方法、装置及存储介质。
背景技术
相关技术中,对于源文件为流媒体格式(FLV,Flash Video)FLV文件的直播场景,浏览器需要从服务器不断地获取FLV文件对应的二进制数据;将获取的二进制数据进行解析,并编码为分段MP4(FMP4,Fragmented MP4)文件,再利用浏览器Video元素进行播放。
相关技术中,可以采用短连接的方式从服务器获取FLV文件的二进制数据,这种方式虽然避免了对连接的长时间占用,但是,获取二进制数据的效率和实时性不高。
发明内容
有鉴于此,本公开实施例提供一种媒体文件播放过程中的数据处理方法、装置及存储介质,在通过网页直播FLV文件的过程中,能够提高获取FLV文件对应的二进制数据的效率和实时性,以及FLV文件播放的流畅度。
本公开实施例的技术方案是这样实现的:
第一方面,本公开实施例提供一种媒体文件播放过程中的数据处理方法,包括:
在直播FLV文件的过程中,播放器通过长连接请求满足预设条件的目标FLV文件;
在获取到所述目标FLV文件时,利用文件解析器对所述目标FLV文件进行解析,得到解析后的媒体数据;
基于所述解析后的媒体数据进行媒体文件的播放。
本公开实施例中,在未获取到满足预设条件的目标FLV文件时,播放器维持用于获取目标FLV文件的连接状态。
本公开实施例中,所述在获取到所述目标FLV文件之后,利用文件解析器对所述目标FLV文件进行解析,得到媒体数据之前,所述方法还包括:
获取所述目标FLV文件中的部分媒体数据;
基于所述部分媒体数据中所包含的媒体数据类型,将所述部分媒体数据转换为相应类型的标签文件。
本公开实施例中,所述利用文件解析器对所述目标FLV文件进行解析,得到媒体数据,包括:
所述文件解析器包括至少两个不同类型的子解析器,分别控制每个子解析器对相应类型的标签文件进行解析,得到媒体数据。
本公开实施例中,所述基于所述解析后的媒体数据进行媒体文件的播放,包括:
基于所述解析后的媒体数据,构造分段媒体文件;
将所得到的分段媒体文件添加到媒体资源扩展接口中的媒体源对象;
向所述网页的媒体元素传递虚拟地址,所述虚拟地址用于供所述媒体元素以所述媒体源对象为数据源进行播放。
本公开实施例中,所述方法还包括:
存储所述文件解析器解析得到的所述媒体数据,使得所述媒体数据在进行媒体文件播放时被调用。
第二方面,本公开实施例提供一种媒体文件播放过程中的数据处理装置,包括:
请求单元,用于在直播FLV文件的过程中,通过长连接请求满足预设条件的目标FLV文件;
获取单元,用于在获取到所述目标FLV文件时,利用文件解析器对所述目标FLV文件进行解析,得到解析后的媒体数据;
播放单元,用于基于所述解析后的媒体数据进行媒体文件的播放。
本公开实施例中,所述装置还包括:连接单元,用于在未获取到满足预设条件的目标FLV文件时,维持用于获取目标FLV文件的连接状态。
本公开实施例中,所述装置还包括:
转换单元,用于获取所述目标FLV文件中的部分媒体数据;
基于所述部分媒体数据中所包含的媒体数据类型,将所述部分媒体数据转换为相应类型的标签文件。
本公开实施例中,所述文件解析器包括至少两个不同类型的子解析器;
所述获取单元,用于分别控制每个子解析器对相应类型的标签文件进行解析,得到解析后的媒体数据。
本公开实施例中,所述播放单元,用于基于所述解析后的媒体数据,构造分段媒体文件;
将所得到的分段媒体文件添加到媒体资源扩展接口中的媒体源对象;
向所述网页的媒体元素传递虚拟地址,所述虚拟地址用于供所述媒体元素以所述媒体源对象为数据源进行播放。
本公开实施例中,所述装置还包括:
缓存单元,用于存储所述文件解析器解析得到的所述媒体数据,使得所述媒体数据在进行媒体文件播放时被调用。
第三方面,本公开实施例提供一种媒体文件播放过程中的数据处理装置,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述可执行指令时,实现本公开实施例的媒体文件播放过程中的数据处理方法。其中,可执行指令可以为安装包、程序、代码、插件、库(动态库/静态库)。
第四方面,本公开实施例提供一种存储介质,存储有可执行指令,所述可执行指令被执行时,实现本公开实施例的媒体文件播放过程中的数据处理方法。
应用本公开上述实施例具有以下有益效果:
通过播放器与服务器之间建立的长连接获取目标FLV文件对应的二进制数据,不仅提高了获取FLV文件对应的二进制数据的效率和实时性,而且提高了FLV文件播放的流畅度。
附图说明
图1为本公开实施例提供的容器的一个可选的结构示意图;
图2为本公开实施例提供的FLV文件的一个可选的封装结构示意图;
图3为本公开实施例提供的音频标签文件的结构示意图;
图4为本公开实施例提供的视频标签文件的结构示意图;
图5为本公开实施例提供的脚本标签文件的结构示意图;
图6为本公开实施例提供的FMP4文件的一个可选的封装结构示意图;
图7为本公开实施例提供的媒体文件播放过程中的数据处理装置的硬件组成结构示意图;
图8为本公开实施例提供的媒体文件播放过程中的数据处理方法的流程示意图一;
图9为本公开实施例提供的进行FLV文件播放的一个可选的流程示意图;
图10为本公开实施例提供的媒体文件播放过程中的数据处理方法的流程示意图二;
图11为本公开实施例提供的媒体文件播放过程中的数据处理方法的流程示意图三;
图12为本公开实施例提供的媒体文件播放过程中的数据处理方法的流程示意图四;
图13为本公开实施例媒体文件播放过程中的数据处理装置的组成示意图。
具体实施方式
以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本公开,并不用于限定本公开。另外,以下所提供的实施例是用于实施本公开的部分实施例,而非提供实施本公开的全部实施例,在不冲突的情况下,本公开实施例记载的技术方案可以任意组合的方式实施。
需要说明的是,在本公开实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
例如,本公开实施例提供的媒体文件播放过程中的数据处理方法包含了一系列的步骤,但是本公开实施例提供的媒体文件播放过程中的数据处理方法不限于所记载的步骤,同样地,本公开实施例提供的媒体文件播放过程中的数据处理装置包括了一系列单元,但是本公开实施例提供的装置不限于包括所明确记载的单元,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的单元。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本公开。
对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释。
1)媒体文件,以容器(Box,也称为盒子)的方式存储进行编码的媒体数据(例如音频数据和视频数据中的至少一种)的文件,其中还包括元数据,即描述媒体数据的数据,元数据中承载有确保媒体数据被正确解码的媒体信息。
例如,采用流媒体封装格式封装多媒体数据形成的媒体文件被称为FLV文件,典型地,FLV文件中存储高级视频编码(AVC,Advanced Video Coding,即H.264)或MPEG-4(Part2)规范编码的视频数据和高级音频编码(AAC,Advanced Audio Coding)规范编码的音频数据,当然不排除视频和音频的其他编码方式。
2)容器(Box),也称为盒子,由唯一的类型标识符和长度定义的面向对象的构件,参见图1,是本公开实施例提供的容器的一个可选的结构示意图,包括容器头部(BoxHeader)和容器数据(Box Data),其中填充有用以表达各种信息的二进制数据。
容器头部包括容量(size)和类型(type),容量指明了容器所占用的存储空间的大小(本文中也称为容量或长度),类型指明了容器的类型。
3)元数据容器,媒体文件中用于存储元数据(即描述媒体数据容器中存储的多媒体数据的数据)的容器,在FLV文件中的元数据容器为Script Tag,Script Tag中存储的二进制数据表达的信息称为媒体信息,媒体信息中包含关于视频和/或音频的播放信息,如时长、创建时间和修改时间等。
4)媒体数据容器,媒体文件中用于存储多媒体数据的容器,例如,FLV文件中的媒体数据容器为标签(Tag),参见图2,是本公开实施例提供的FLV文件的一个可选的封装结构示意图,FLV文件由一个FLV Header文件头和文件体(File Body)构成,其中,文件体由一个一个的Tag及Tag Size对组成的,Tag可以分成三类:Audio Tag、Video Tag、Script Tag,分别代表音频流,视频流,脚本流(关键字或者文件信息之类),每个Tag只能包含以上三种类型的数据中的一种,以下分别进行说明。
音频标签文件(Audio Tag)开始的第1个字节包含了音频数据的参数信息,从第2个字节开始为音频流数据,参见图3,为本公开实施例提供的音频标签文件的结构示意图,第1个字节的前4位的数值表示了音频编码类型,第5-6位的数值表示音频采样率,第7位表示音频采样精度,第8位表示音频类型。
视频标签文件(Video Tag)开始的第1个字节包含视频数据的参数信息,从第2个字节为视频流数据,参见图4,为本公开实施例提供的视频标签文件的结构示意图,第1个字节的前4位的数值表示帧类型,第1个字节的后4位的数值表示视频编码类型。
脚本标签文件(Script Tag),该类型Tag又通常被称为Metadata Tag,会放一些关于FLV视频和音频的元数据信息,如:duration、width、height等。通常该类型Tag会跟在File Header后面作为第一个Tag出现,而且只有一个,参见图5,为本公开实施例提供的脚本标签文件的结构示意图。
5)分段媒体文件,媒体文件经过分割形成的子文件,每个分段媒体文件能够被独立解码。
以FLV文件为例,FLV文件中的媒体数据根据关键帧分割,分割后的媒体数据与对应的元数据封装形成分段MP4(FMP4,Fragmented MP4)文件,每个FMP4文件中的元数据能够保证媒体数据被正确解码。
例如,在将如图2所示的FLV文件转换为多个FMP4文件时,参见图6,是本公开实施例提供的FMP4文件的一个可选的封装结构示意图,一个FLV文件可以转换为多个FMP4文件,每个FMP4文件包括三个基本的容器:moov容器、moof容器和mdat容器。
moov容器包括了MP4文件级别的元数据,用来描述FMP4文件所来源的MP4文件中的全部媒体数据,例如MP4文件的时长、创建时间和修改时间等。
moof容器存储了分段级别的元数据,用于描述所在的FMP4文件中封装的媒体数据,保证FMP4中的媒体数据能够被解码。
1个moof容器和1个mdat容器组成分段MP4文件的1个分段,1个分段MP4文件中可以包括1个或多个这样的分段,每个分段中封装的元数据保证分段中封装的媒体数据能够被独立解码。
6)媒体资源扩展(MSE,Media Source Extensions)接口,在网页中实现的面向播放器的接口,在网页中的加载期间通过浏览器的解释器解释、执行前端编程语言(例如JavaScript)而实现,向播放器提供调用超文本标记语言(HTML)媒体元素(Media Element)的播放媒体流的功能,例如使用视频元素<video>、以及音频元素<audio>来实现视频/音频的播放功能。
7)流媒体格式,把媒体数据封装为流媒体的媒体文件,媒体文件不必完整下载、不需要额外转码,即可被解码播放,即,原生地支持一边下载,一边播放的封装技术。典型的流媒体格式的文件包括:基于HTTP直播流(HLS,HTTP Live Streaming)技术的TS媒体文件分片,FLV(Flash Video)文件等。
首先说明实现本公开实施例的媒体文件播放过程中的数据处理装置,媒体文件播放过程中的数据处理装置可以提供为硬件、软件或者软硬件结合的方式。
下面说明媒体文件播放过程中的数据处理装置的软件硬件结合的实施,参见图7,图7为本公开实施例提供的媒体文件播放过程中的数据处理装置的一个可选的硬件组成结构示意图,本公开实施例的媒体文件播放过程中的数据处理装置可以以各种形式来实施,如:由智能手机、平板电脑和台式机等终端单独实施,或者由终端、服务器协同实施。下面对本公开实施例的媒体文件播放过程中的数据处理装置的硬件结构做详细说明,可以理解,图7仅仅示出了媒体文件播放过程中的数据处理装置的示例性结构而非全部结构,根据需要可以实施图7示出的部分结构或全部结构。
本公开实施例提供的媒体文件播放过程中的数据处理装置100包括:至少一个处理器101、存储器102、用户接口103和至少一个网络接口104。媒体文件播放过程中的数据处理装置100中的各个组件通过总线***105耦合在一起。可以理解,总线***105用于实现这些组件之间的连接通信。总线***105除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线***105。
其中,用户接口103可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
可以理解,存储器102可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。
本公开实施例中的存储器102用于存储各种类型的数据以支持媒体文件播放过程中的数据处理装置100的操作。这些数据的示例包括:用于在媒体文件播放过程中的数据处理装置100上操作的任何可执行指令,如可执行指令1021,实现本公开实施例的媒体文件播放过程中的数据处理方法的程序可以包含在可执行指令1021中。
本公开实施例揭示的媒体文件播放过程中的数据处理方法可以应用于处理器101中,或者由处理器101实现。处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,媒体文件播放过程中的数据处理方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器101可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本公开实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器102,处理器101读取存储器102中的信息,结合其硬件完成本公开实施例提供的媒体文件播放过程中的数据处理方法的步骤。
下面说明媒体文件播放过程中的数据处理装置的纯硬件实施,实现本公开实施例媒体文件播放过程中的数据处理换装置可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、数字信号处理(DSP,Digital SignalProcessing)、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件实现,用于执行实现本公开实施例提供的媒体文件播放过程中的数据处理方法。
下面说明媒体文件播放过程中的数据处理装置的纯软件实施,实现本公开实施例媒体文件播放过程中的数据处理装置可以为应用程序或插件,或者采用二者结合的方式实现。
作为示例,应用程序可以是专用于进行媒体文件播放的客户端,也可以是将媒体文件播放功能作为可选功能的客户端,通过安装相应的插件实现。
作为示例,插件可以实现为应用程序的功能升级安装包,在用特定应用程序中叠加媒体文件播放的功能;也可以是媒体播放的网页中的元素,采用前端语言实现,通过被网页直接解释执行而在网页中实现媒体文件播放的功能。
接下来以网页内嵌播放器,播放器使用网页的超文本标记语言(HTML,HyperTextMarkup Language)5媒体元素播放媒体文件为例,对本公开实施例提供的媒体文件播放过程中的数据处理方法进行说明,本公开实施例中的网页既可以是浏览器的网页,也可以是内嵌浏览器内核的应用(APP,Application)的网页,网页通过解析、执行播放器的JS(JavaScript)代码实现播放器实例。
图8示出了本公开实施例提供的媒体文件播放过程中的数据处理方法的一个可选的流程示意图,参见图8,本公开实施例提供的媒体文件播放过程中的数据处理方法涉及步骤S201至步骤S203,以下分别进行说明。
步骤S201,在直播FLV文件的过程中,播放器通过长连接请求满足预设条件的目标FLV文件。
在一些实施例中,可以通过网页直播FLV文件,也可以通过应用直播FLV文件。
首先以通过网页直播FLV文件为例,对本公开实施例中FLV文件的播放进行说明。
播放器在通过网页直播FLV文件的过程中,会通过长连接向服务器请求满足预设条件的目标FLV文件。这里,预设条件可以为FLV文件的大小、或FLV文件的时长。举例来说,目标FLV文件是大小为5M的FLV文件,或者FLV文件是时长为5S的FLV文件。当服务器具有满足预设条件的目标FLV文件时,播放器获取满足预设条件的目标FLV文件,并播放目标FLV文件。
参见图9,为本公开实施提供的进行目标FLV文件播放的一个可选的流程示意图,播放器从服务器处获取目标FLV文件的媒体数据,依据数据类型将其封装为不同类型的标签文件(脚本标签、视频标签、音频标签),将封装得到的标签文件缓存至缓存器,调用对应类型的子解析器,即图9中所示的Meta信息解码器、音频解码器及视频解码器,对缓存的标签文件进行解析,并将解析结果缓存至缓存器,同时,调用编码器从缓存器获取子解析器解析得到的数据,进行编码得到FMP4文件,将编码得到的FMP4文件添加到媒体资源扩展接口中的媒体源对象,并调用媒体资源扩展接口创建对应媒体源对象的虚拟地址,并向网页的媒体元素(Video标签)传递虚拟地址以进行视频播放。例如,播放器执行媒体源扩展接口中封装的createObjectURL方法,创建对应媒体源对象的虚拟地址,即虚拟统一资源定位符(URL,Uniform Resource Locator),其中封装有Blob类型的分段媒体文件。
这里,播放器通过长连接获取目标FLV文件对应的二进制数据,不仅提高了获取FLV文件对应的二进制数据的效率和实时性,而且提高了FLV文件播放的流畅度。
步骤S202,在获取到目标FLV文件时,利用文件解析器对所述目标FLV文件进行解析,得到媒体数据。
在实际实施时,针对目标FLV文件,利用对播放点之前的FLV文件的片段进行解析的文件解析器对目标FLV文件进行解析。
在一实施例中,针对播放器对FLV文件进行直播的播放场景,播放器发送长连接建立请求给服务器,以与直播服务器建立长连接;在主播端推流到直播服务器的过程中,播放器通过长连接从服务器处获取目标FLV文件中的部分媒体数据,并将所述部分媒体数据转换(封装)为相应类型的标签文件。
在获取目标分辨率的FLV文件中的部分媒体数据后,播放器控制文件解析器进行解析,具体地,文件解析器包括至少两个不同类型的子解析器,在一实施例中,可以包括用于解析视频标签文件的视频子解析器、用于解析音频标签文件的音频子解析器、用于解析脚本标签文件的脚本子解析器;播放器分别控制每个子解析器对相应类型的标签文件进行解析,得到解析后的媒体数据。
步骤S203,基于解析后的媒体数据进行媒体文件播放。
在一实施例中,在得到解析后的媒体数据后,播放器可通过如下方式实现对媒体文件的播放:
基于文件解析器解析得到的媒体数据,构造分段媒体文件;将所得到的分段媒体文件添加到媒体资源扩展接口中的媒体源对象;向网页的媒体元素传递虚拟地址,虚拟地址用于供媒体元素以媒体源对象为数据源进行播放。
具体地,播放器调用编码器获取文件解析器解析得到的媒体数据,进行数据编码,得到分段媒体文件。
在一实施例中,播放器基于数据类型,将所获取的目标分辨率的FLV文件中的部分媒体数据封装为不同类型的标签文件之后,将封装得到的不同类型的标签文件缓存至缓存器,以供在进行数据解析及数据编码时,文件解析器及编码器调用。
接下来以播放器内嵌于浏览器的网页,网页通过解析、执行播放器的JS代码实现播放器实例,对本公开实施例的媒体文件播放过程中的数据处理方法进行说明。图10、图11分别为本公开实施例提供的媒体文件播放过程中的数据处理方法的流程示意图,结合图10、图11,本公开实施例提供的媒体文件播放过程中的数据处理方法包括:
步骤S301,在通过网页直播流媒体FLV文件的过程中,播放器与服务器建立长连接。
步骤S302,播放器通过长连接向服务器发送请求。
这里,由于播放器对FLV文件进行直播时,需要持续地从服务器获取FLV文件;因此,播放器通过已经建立的长连接向服务器发送请求,以请求满足预设条件的目标FLV文件。
这里,播放器通过长连接获取目标FLV文件对应的二进制数据,不仅提高了获取FLV文件对应的二进制数据的效率和实时性,而且提高了FLV文件播放的流畅度。
步骤S303,播放器在预设的时间内判断自身是否获取到目标FLV文件;在判断为是时,执行步骤S304;在判断为否时,执行步骤S305。其中,预设的时间可以根据播放器和服务器的参数进行灵活设置。
在一些可选实施例中,满足预设条件的目标FLV文件可以是满足预设时长的FLV文件、或满足预设大小的FLV文件。
步骤S304,当播放器未获取到目标FLV文件时,播放器进入等待状态。
这里,所述等待状态是指播放器不再向服务器发送获取目标FLV文件的请求;当播放器进入等待状态时,播放器与服务器之间仍维持连接状态。当服务器接收到主播端推送的目标FLV文件时,服务器基于与播放器的连接状态向播放器发送目标FLV文件,也就是说,在服务器从主播端获取到目标FLV文件之后,播放器结束等待状态,播放器与服务器进行数据传输。播放器在获取到目标FLV文件之后,继续执行步骤S305。
步骤S305,当播放器获取到目标FLV文件时,利用文件解析器对目标FLV文件进行解析,得到解析后的媒体数据。
这里,文件解析器为,对直播的FLV文件的播放点之前的FLV文件片段进行解析时的播放器。
在一实施例中,播放器的JS代码所实现的功能,包括图11所示的控制器及FLV编解码器的JS代码所实现的功能。
步骤S306,播放器调用文件解析器获取目标FLV文件中的媒体数据。
这里,在一实施例中,参见图11,FLV编解码器(文件解析器)基于控制器的指令尝试请求目标FLV文件中的媒体数据。在实际实施时,对目标FLV文件中的媒体数据的获取,可以为基于当前的播放点,对目标FLV文件中的两个关键帧之间的媒体数据的获取。
步骤S307,基于媒体数据类型,将所获取的媒体数据封装为相应类型的标签文件。
在一实施例中,播放器依据数据类型将获取的媒体数据封装为脚本标签、视频标签及音频标签。
在一实施例中,播放器进行所述的标签文件的封装之后,可以将封装得到的标签文件进行缓存,以对编解码器进行数据共享。
步骤S308,对封装得到的标签文件进行解析,得到解析结果。
步骤S309,基于所述解析结果,编码得到分段媒体文件。
在实际实施时,参见图11,控制器调用FLV编解码器对解析得到的数据进行编码,得到分段媒体文件,以发送给MSE进行播放,同时,播放器释放对应原分辨率的FLV文件的编解码器。
步骤S310,发送所述分段媒体文件给媒体资源扩展接口。
在实际实施时,播放器将所构造的分段媒体文件添加到媒体资源扩展接口中的媒体源对象之后,调用媒体资源扩展接口创建对应媒体源对象的虚拟地址。例如,播放器执行媒体源扩展接口中封装的createObjectURL方法,创建对应媒体源对象的虚拟地址,即URL,其中封装有Blob类型的分段媒体文件。
此外,播放器将MediaSource对象设置为虚拟URL的源(src)属性,也就是将虚拟URL与网页中的媒体元素如video/audio元素绑定,这个过程也称为将媒体源对象关联到网页中的媒体元素。
在本公开实施例中,添加到媒体源对象的分段媒体文件,也即是:当前播放的分段媒体文件。例如当前在播放分段媒体文件1,已经构造了后续的分段媒体文件2、3,则构造的分段媒体文件2、3将被添加到MSE的Source Buffer中进行预加载,相应的,播放器所获取的媒体数据对应的两个关键帧中的第一关键帧则是分段媒体文件1之后出现的第一个关键帧。
步骤S311,向网页的媒体元素传递虚拟地址,虚拟地址用于供媒体元素以媒体源对象为数据源进行解码播放。
例如,播放器中包括有调用媒体元素播放虚拟URL的语句,例如:<audio>虚拟URL。当浏览器解释网页中嵌入的播放器中对应的语句时,使得浏览器的媒体元素到虚拟URL绑定的SourceBuffer对象中读取分段媒体文件,并解码播放。
图12为本公开实施例提供的媒体文件播放过程中的数据处理方法的流程示意图,参见图12,本公开实施例提供的媒体文件播放过程中的数据方法包括:
主播端进行视频直播,进行数据采集后推流至直播服务器,直播服务器与播放器的请求模块之间建立有长连接,直播服务器与播放器之间没有数据传输时,直播服务器与播放器之间维持连接状态,直至直播服务器与播放器之间有数据传输时,播放器通过长连接获取服务器发送的FLV格式封装的媒体数据,将所获取的媒体数据封装为不同类型的标签文件(音频标签文件、视频标签文件、脚本标签文件),控制器(控制中枢)调用相应类型的解码器(音频解码器、视频解码器、脚本解码器)对获取的标签文件进行解析,并将解析结果缓存至缓存器,控制器调用编码器对缓存器中的媒体数据进行编码,得到分段媒体文件(FMP4文件),将构造得到的分段媒体文件添加到媒体资源扩展接口中的媒体源对象,通过MSE创建对应媒体源对象的虚拟地址,将虚拟地址发送给浏览器的Video元素进行播放。
接下来继续对媒体文件播放过程中的数据处理装置进行说明,作为媒体文件播放过程中的数据处理装置的硬件实施或软件实施的示例,媒体文件播放过程中的数据处理装置可以提供为一系列在信号/信息/数据层面存在耦合关系的模块,下面将结合图13进行说明,参见图13,图13为本公开实施例媒体文件播放过程中的数据处理装置一个可选的组成示意图,示出了实现媒体文件播放过程中的数据处理装置包括的一系列单元,但是媒体文件播放过程中的数据处理装置的单元结构不仅限于图13所示,例如,可以对其中的单元根据所实现的不同功能而进一步拆分或者合并。参见图13,媒体文件播放过程中的数据处理装置900包括:
请求单元91,用于在直播FLV文件的过程中,通过长连接请求满足预设条件的目标FLV文件;
获取单元92,用于在获取到所述目标FLV文件时,利用文件解析器对所述目标FLV文件进行解析,得到解析后的媒体数据;
播放单元93,用于基于所述解析后的媒体数据进行媒体文件的播放。
在一实施例中,所述装置还包括:
连接单元94,用于在未获取到满足预设条件的目标FLV文件时,维持用于获取目标FLV的连接状态。
在一实施例中,在所述服务器具有满足预设条件的目标FLV文件时,所述获取单元92,用于从所述服务器获取所述目标FLV文件。
在一实施例中,所述装置还包括:转换单元95,用于获取所述目标FLV文件中的部分媒体数据;
基于所述部分媒体数据中所包含的媒体数据类型,将所述部分媒体数据转换为相应类型的标签文件。
在一实施例中,所述文件解析器包括至少两个不同类型的子解析器;
所述获取单元92,用于分别控制每个子解析器对相应类型的标签文件进行解析,得到解析后的媒体数据。
在一实施例中,所述播放单元93,用于基于所述媒体数据,构造分段媒体文件;
将所得到的分段媒体文件添加到媒体资源扩展接口中的媒体源对象;
向所述网页的媒体元素传递虚拟地址,所述虚拟地址用于供所述媒体元素以所述媒体源对象为数据源进行播放。
在一实施例中,所述装置还包括:缓存单元96,用于存储所述文件解析器解析得到的所述媒体数据,使得所述媒体数据在进行媒体文件播放时被调用。
应用本公开上述实施例,具备以下有益效果:
1)、将FLV格式的媒体文件中的媒体数据转换成分段媒体文件,并通过网页的媒体源扩展接口,发送给网页的媒体元素进行解码播放,克服了相关技术中不支持FLV格式的媒体文件播放的问题。
2)、播放器与服务器之间建立的长连接获取目标FLV文件对应的二进制数据,不仅提高了获取FLV文件对应的二进制数据的效率和实时性,而且提高了FLV文件播放的流畅度。
3)、对获取的源FLV文件或目标分辨率的FLV文件中的媒体数据封装形成的标签文件进行缓存,使得文件解析器及编码器能够共享,最大程度降低了在FLV文件的解析阶段对FLV转换为FMP4播放所造成的延迟。
本公开实施例还提供了一种可读存储介质,存储介质可以包括:移动存储设备、随机存取存储器(RAM,Random Access Memory)、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。所述可读存储介质存储有可执行指令;
所述可执行指令,用于被处理器执行时实现上述媒体文件播放过程中的数据处理方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (14)

1.一种媒体文件播放过程中的数据处理方法,其特征在于,包括:
在直播流媒体FLV文件的过程中,播放器通过长连接请求满足预设条件的目标FLV文件;
在获取到所述目标FLV文件时,利用文件解析器对所述目标FLV文件进行解析,得到解析后的媒体数据;
基于所述解析后的媒体数据进行媒体文件的播放。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在未获取到满足预设条件的目标FLV文件时,播放器维持用于获取目标FLV文件的连接状态。
3.根据权利要求1所述的方法,其特征在于,所述在获取到所述目标FLV文件时,利用文件解析器对所述目标FLV文件进行解析,得到媒体数据之前,所述方法还包括:
获取所述目标FLV文件中的部分媒体数据;
基于所述部分媒体数据中所包含的媒体数据类型,将所述部分媒体数据转换为相应类型的标签文件。
4.根据权利要求3所述的方法,其特征在于,所述利用文件解析器对所述目标FLV文件进行解析,得到媒体数据,包括:
所述文件解析器包括至少两个不同类型的子解析器,分别控制每个子解析器对相应类型的标签文件进行解析,得到媒体数据。
5.根据权利要求1所述的方法,其特征在于,所述基于所述解析后的媒体数据进行媒体文件的播放,包括:
基于所述解析后的媒体数据,构造分段媒体文件;
将所得到的分段媒体文件添加到媒体资源扩展接口中的媒体源对象;
向所述网页的媒体元素传递虚拟地址,所述虚拟地址用于供所述媒体元素以所述媒体源对象为数据源进行播放。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
存储所述文件解析器解析得到的所述媒体数据,使得所述媒体数据在进行媒体文件播放时被调用。
7.一种媒体文件播放过程中的数据处理装置,其特征在于,包括:
请求单元,用于在直播流媒体FLV文件的过程中,通过长连接请求满足预设条件的目标FLV文件;
获取单元,用于在获取到所述目标FLV文件时,利用文件解析器对所述目标FLV文件进行解析,得到解析后的媒体数据;
播放单元,用于基于所述解析后的媒体数据进行媒体文件的播放。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
连接单元,用于在未获取到满足预设条件的目标FLV文件时,维持用于获取目标FLV文件的连接状态。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
转换单元,用于获取所述目标FLV文件中的部分媒体数据;
基于所述部分媒体数据中所包含的媒体数据类型,将所述部分媒体数据转换为相应类型的标签文件。
10.根据权利要求9所述的装置,其特征在于,所述文件解析器包括至少两个不同类型的子解析器;
所述获取单元,用于分别控制每个子解析器对相应类型的标签文件进行解析,得到解析后的媒体数据。
11.根据权利要求7所述的装置,其特征在于,
所述播放单元,用于基于所述解析后的媒体数据,构造分段媒体文件;
将所得到的分段媒体文件添加到媒体资源扩展接口中的媒体源对象;
向所述网页的媒体元素传递虚拟地址,所述虚拟地址用于供所述媒体元素以所述媒体源对象为数据源进行播放。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括:
缓存单元,用于存储所述文件解析器解析得到的所述媒体数据,使得所述媒体数据在进行媒体文件播放时被调用。
13.一种媒体文件播放过程中的数据处理装置,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现如权利要求1至6任一项所述的媒体文件播放过程中的数据处理方法。
14.一种存储介质,其特征在于,存储有可执行指令,所述可执行指令被执行时,用于实现权利要求1至6任一项所述的媒体文件播放过程中的数据处理方法。
CN201810975873.2A 2018-08-24 2018-08-24 媒体文件播放过程中的数据处理方法、装置及存储介质 Pending CN110858919A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810975873.2A CN110858919A (zh) 2018-08-24 2018-08-24 媒体文件播放过程中的数据处理方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810975873.2A CN110858919A (zh) 2018-08-24 2018-08-24 媒体文件播放过程中的数据处理方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN110858919A true CN110858919A (zh) 2020-03-03

Family

ID=69636298

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810975873.2A Pending CN110858919A (zh) 2018-08-24 2018-08-24 媒体文件播放过程中的数据处理方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN110858919A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111757136A (zh) * 2020-06-29 2020-10-09 北京百度网讯科技有限公司 网页音频直播方法、装置、设备和存储介质
CN113766345A (zh) * 2021-09-26 2021-12-07 青岛海信宽带多媒体技术有限公司 一种播放随机推送视频的方法和机顶盒
CN113765886A (zh) * 2021-08-04 2021-12-07 深圳Tcl新技术有限公司 多媒体播放方法、装置、存储介质及电子设备
CN114116044A (zh) * 2021-11-02 2022-03-01 杭州网易云音乐科技有限公司 多媒体资源处理方法、装置、电子设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101673290A (zh) * 2009-10-23 2010-03-17 中国电信股份有限公司 一种媒体应用实现方法和媒体应用终端
CN102630059A (zh) * 2012-03-23 2012-08-08 深圳创维数字技术股份有限公司 一种实现flv视频播放的方法及装置
US20140147100A1 (en) * 2011-06-30 2014-05-29 Human Monitoring Ltd. Methods and systems of editing and decoding a video file
CN104883618A (zh) * 2015-05-11 2015-09-02 腾讯科技(北京)有限公司 直播节目试看方法、装置及***
CN105812845A (zh) * 2014-12-30 2016-07-27 Tcl集团股份有限公司 一种媒体资源推送方法、***和基于Android***的媒体播放器
CN107302715A (zh) * 2017-08-10 2017-10-27 北京元心科技有限公司 多媒体文件的播放方法、封装方法以及相应的装置、终端

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101673290A (zh) * 2009-10-23 2010-03-17 中国电信股份有限公司 一种媒体应用实现方法和媒体应用终端
US20140147100A1 (en) * 2011-06-30 2014-05-29 Human Monitoring Ltd. Methods and systems of editing and decoding a video file
CN102630059A (zh) * 2012-03-23 2012-08-08 深圳创维数字技术股份有限公司 一种实现flv视频播放的方法及装置
CN105812845A (zh) * 2014-12-30 2016-07-27 Tcl集团股份有限公司 一种媒体资源推送方法、***和基于Android***的媒体播放器
CN104883618A (zh) * 2015-05-11 2015-09-02 腾讯科技(北京)有限公司 直播节目试看方法、装置及***
CN107302715A (zh) * 2017-08-10 2017-10-27 北京元心科技有限公司 多媒体文件的播放方法、封装方法以及相应的装置、终端

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111757136A (zh) * 2020-06-29 2020-10-09 北京百度网讯科技有限公司 网页音频直播方法、装置、设备和存储介质
CN113765886A (zh) * 2021-08-04 2021-12-07 深圳Tcl新技术有限公司 多媒体播放方法、装置、存储介质及电子设备
CN113765886B (zh) * 2021-08-04 2023-07-25 深圳Tcl新技术有限公司 多媒体播放方法、装置、存储介质及电子设备
CN113766345A (zh) * 2021-09-26 2021-12-07 青岛海信宽带多媒体技术有限公司 一种播放随机推送视频的方法和机顶盒
CN114116044A (zh) * 2021-11-02 2022-03-01 杭州网易云音乐科技有限公司 多媒体资源处理方法、装置、电子设备和存储介质

Similar Documents

Publication Publication Date Title
CN110858919A (zh) 媒体文件播放过程中的数据处理方法、装置及存储介质
US10140105B2 (en) Converting source code
CN110545483B (zh) 网页中切换分辨率播放媒体文件的方法、装置及存储介质
CN110545466B (zh) 基于网页的媒体文件的播放方法、装置及存储介质
CN110545456B (zh) 媒体文件的同步播放方法、装置及存储介质
CN110858915A (zh) 媒体文件播放过程中的分辨率切换方法、装置及存储介质
CN110545491B (zh) 一种媒体文件的网络播放方法、装置及存储介质
JP7068489B2 (ja) メディアファイル変換方法、装置及び記憶媒体
CN107634930B (zh) 一种媒体数据的获取方法和装置
CN110545469B (zh) 非流媒体文件的网页播放方法、装置及存储介质
CN111683293A (zh) 一种基于http-flv协议的跨浏览器播放h.265视频的方法
CN110545479B (zh) 媒体播放的加载控制方法、装置及存储介质
CN111510756A (zh) 音视频的切换方法、装置、计算机设备及可读存储介质
JP2021510991A5 (zh)
KR100909669B1 (ko) 모바일 단말 및 임베디드 단말의 웹 브라우저 내에서 플래시 기반 비디오 콘텐츠의 재생 방법
CN110545460A (zh) 一种媒体文件的预加载方法、装置及存储介质
CN110545463B (zh) 基于媒体文件转换的播放控制方法、装置及存储介质
CN110545471B (zh) 基于离线转换的播放控制方法、装置及存储介质
CN110858923B (zh) 分段媒体文件生成方法、装置及存储介质
US10547878B2 (en) Hybrid transmission protocol
CN110858917A (zh) 媒体文件分辨率切换的控制方法、装置及存储介质
CN110545468B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200303

RJ01 Rejection of invention patent application after publication