CN112423117B - Web端视频播放方法、装置及计算机设备 - Google Patents

Web端视频播放方法、装置及计算机设备 Download PDF

Info

Publication number
CN112423117B
CN112423117B CN202010529065.0A CN202010529065A CN112423117B CN 112423117 B CN112423117 B CN 112423117B CN 202010529065 A CN202010529065 A CN 202010529065A CN 112423117 B CN112423117 B CN 112423117B
Authority
CN
China
Prior art keywords
video data
data
format
audio
web
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
CN202010529065.0A
Other languages
English (en)
Other versions
CN112423117A (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.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili 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 Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202010529065.0A priority Critical patent/CN112423117B/zh
Priority to PCT/CN2020/140995 priority patent/WO2021248888A1/zh
Publication of CN112423117A publication Critical patent/CN112423117A/zh
Priority to US18/078,811 priority patent/US20230106217A1/en
Application granted granted Critical
Publication of CN112423117B publication Critical patent/CN112423117B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/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/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/64322IP
    • 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
    • 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/858Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

本申请公开了一种Web端视频播放方法、装置及计算机设备,该方法包括:获取待播放的Flv格式视频数据;利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,并将所述有效视频数据存储到预设的双链表中;利用所述WebAssembly字节码对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据;通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放。本申请还提供一种计算机可读存储介质。本申请通过WebAssembly字节码执行不同视频数据的解封装和封装,然后再通过媒体源扩展方式将新格式视频数据进行加载,从而降低了Web端视频数据处理过程的处理资源占用,提高了处理效率。

Description

Web端视频播放方法、装置及计算机设备
技术领域
本申请涉及互联网技术领域,尤其涉及一种Web端视频播放方法、装置及计算机设备。
背景技术
随着计算机技术的发展,视频播放应用得到了快速的发展。其中,Flv(Flashvideo)格式的视频数据由于形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后体积庞大,从而不能在网络上很好的使用等问题。因此,当前的视频数据相关的网络资源,大多采用Flv格式进行存储。然而,对于Web端来说,普遍使用的还是更加轻量型的FMP4(Fragmented MP4)格式的播放器,因此,在Web端播放视频数据时,通常需要先将下载的Flv格式的视频数据转换成FMP4格式的视频数据。
现有技术中,由于JavaScript脚本语言能够完美地兼容到Web端,因此,Web端通常采用JavaScript功能插件实现:接收到的Flv格式的视频数据进行解封装;重新封装成FMP4格式的视频数据;以及加载到Web端播放器进行播放。然而,由于JavaScript脚本语言在编译执行过程中,耗时较长,因此,现有技术中通过JavaScript脚本语言实现Web端的视频数据的解封装、封装及播放的处理过程,会占用Web端较多的处理资源,处理效率低。
发明内容
本申请提出一种Web端视频播放方法、装置及计算机设备,能够解决现有技术中Web端在执行不同格式的视频数据的解封装、封装及播放时,处理资源占用高,处理效率低的问题。
首先,为实现上述目的,本申请提供一种Web端视频播放方法,所述方法包括:
获取待播放的Flv格式视频数据;利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,并将所述有效视频数据存储到预设的双链表中;利用所述WebAssembly字节码对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据;通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放。
在一个例子中,所述WebAssembly字节码是利用Emscripten工具将C语言代码编译而成的,所述C语言代码包含在Web端实现对所述Flv格式视频数据进行解封装以及将所述有效视频数据封装成FMP4格式视频数据的指令代码。
在一个例子中,所述利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,包括:根据Flv格式识别出所述Flv格式视频数据对应的数据封包中的FlvTag;从所述FlvTag提取出所述Flv格式视频数据对应的有效视频数据。
在一个例子中,所述利用所述WebAssembly字节码对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据,包括:通过所述双链表中的每个数据节点的头结点指针和尾结点指针查找出所述有效视频数据;根据FMP4格式将所述有效视频数据封装为所述FMP4格式视频数据对应的MP4Box。
在一个例子中,所述根据FMP4格式将所述有效视频数据封装为所述FMP4格式视频数据对应的MP4Box包括:根据所述FMP4格式中预设的Box大小将所述有效视频数据拆分并封装为多个Box;将所有的Box按顺序排列,并根据排列顺序对所述所有的Box进行拼接,以形成所述FMP4格式视频数据对应的MP4Box。
在一个例子中,在所述通过所述双链表中的每个数据节点的头结点指针和尾结点指针查找出所述有效视频数据之后,包括:获取所述有效视频数据中的音频数据的每一音频帧以及对应的时间戳,其中,所述时间戳为视频数据中音频数据和图像数据同步播放的参考时间戳;根据预设时间区段将所述音频数据划分为多个音频数据片段;统计所述多个音频数据片段中的第一音频数据片段中音频帧数量n以及最前音频帧和最后音频帧的时间戳差值L,其中,所述第一音频数据片段为所述多个音频数据片段中的任一音频数据片段;根据所述L、所述n以及预设的空白音频帧***规则对所述第一音频数据片段执行空白音频帧***,得到第二音频数据片段;将所述第二音频数据片段替换所述音频数据中的所述第一音频数据片段。
在一个例子中,所述空白音频帧***规则包括:当所述L小于预设阈值M时,则不对所述第一音频数据片段执行***空白音频帧;当所述L大于或等于M时,则***[(L-n*x)/x]个空白音频帧到所述第一音频数据片段,其中,x为音频帧间距,M>(n+1)*x。
此外,为实现上述目的,本申请还提供一种Web端视频播放装置,所述装置包括:
获取模块,用于获取待播放的Flv格式视频数据;解封装模块,用于利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,并将所述有效视频数据存储到预设的双链表中;封装模块,用于利用所述WebAssembly字节码对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据;播放模块,用于通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放。
进一步地,本申请还提出一种计算机设备,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述的Web端视频播放方法的步骤。
进一步地,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的Web端视频播放方法的步骤。
相较于现有技术,本申请所提出的Web端视频播放方法、装置、服务器及计算机可读存储介质,能够获取待播放的Flv格式视频数据,然后利用预设的WebAssembly字节码对所述Flv格式视频数据解封装,得到有效视频数据,,并将所述有效视频数据存储到预设的双链表中,接着,利用所述WebAssembly字节码对对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据;再通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放。通过WebAssembly字节码执行不同视频数据的解封装和封装,然后再通过媒体源扩展方式将新格式视频数据进行加载,从而降低了Web端视频数据处理过程的处理资源占用,提高了处理效率。
附图说明
图1是本申请一实施例的应用环境示意图;
图2是本申请Web端视频播放方法一具体实施例的流程示意图;
图3是图2步骤202中所述利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据的一具体实施例的流程示意图;
图4是图2步骤204的一具体实施例的流程示意图;
图5是图4步骤402的一具体实施例的流程示意图;
图6是基于图4的一具体实施例的流程示意图;
图7是本申请一具体实施例的流程效果图;
图8是本申请Web端视频播放装置一实施例的程序模块示意图;
图9是本申请计算机设备一可选的硬件架构的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
图1是本申请一实施例的应用环境示意图。参阅图1所示,所述计算机设备1与数据服务器2连接。所述计算机设备1在接收到视频播放请求时,则可以向所述数据服务器2发送视频数据获取请求,然后接收由所述数据服务器2发送过来的视频数据。接着,所述计算机设备1对接收到的视频数据进行格式转换并加载到播放器进行播放。其中,所述计算机设备1可以获取待播放的Flv格式视频数据,然后利用预设的WebAssembly字节码对所述Flv格式视频数据解封装,得到有效视频数据,,并将所述有效视频数据存储到预设的双链表中,然后利用所述WebAssembly字节码对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据,最后通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放。在本实施例中,所述计算机设备1可作为手机、平板、便携设备、PC机或者其他具有显示功能的电子设备等。
实施例一
图2是本申请Web端视频播放方法一实施例的流程示意图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以计算机设备1为执行主体进行示例性描述。
如图2所示,所述Web端视频播放方法可以包括步骤S200~S206。
步骤S200,获取待播放的Flv格式视频数据。
步骤S202,利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,并将所述有效视频数据存储到预设的双链表中。
步骤S204,利用所述WebAssembly字节码对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据。
具体地,当用户使用所述计算机设备1上的Web端观看视频时,所述计算机设备1则会根据用户的点击或触控等操作,触发对于待观看视频的视频数据请求,并将所述视频数据请求发送至对应的数据服务器。例如,用户通过浏览器点击查看“AAA动漫”,那么,所述计算机设备1则会获取“AAA动漫”的视频数据资源地址,例如,在BBB服务器上,那么,所述计算机设备1将“AAA动漫”的视频数据请求发送至BBB服务器。
接着,所述计算机设备1可以接收由数据服务器反馈的待播放视频数据。在本实施例中,由于视频数据相关的网络资源大多采用Flv格式进行存储,因此,所述计算机设备1则可以接收待播放的Flv格式视频数据。
所述计算机设备1获取到所述Flv格式视频数据之后,则会根据预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据。在本实施例中,所述WebAssembly字节码是利用Emscripten工具将C语言代码编译而成的,所述C语言代码包含在Web端实现对所述Flv格式视频数据进行解封装以及将所述有效视频数据封装成FMP4格式视频数据的指令代码。其中,WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行,而且WebAssembly是一种低级的类汇编语言,能够编写出具有紧凑的二进制格式程序,也就是所述WebAssembly字节码。在本实施例中,所述计算机设备1通过Emscripten工具预先建立基于C语言代码的WebAssembly字节码,由于C语言根据解决机器语言,因此,所述WebAssembly字节码可以接近原生的性能运行,同时能够在Web上运行,可以与Web上的JavaScript脚本程序共存,允许两者一起工作,具有很高的兼容性。而且,由于在Web端执行WebAssembly字节码比执行JavaScript脚本程序的效率更好,所以能够提升解封装过程的执行效率。
参阅图3所示,在一示例性例子中,步骤S202中的所述利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,包括以下步骤:
步骤S300,根据Flv格式识别出所述Flv格式视频数据对应的数据封包中的FlvTag。
步骤S302,从所述FlvTag提取出所述Flv格式视频数据对应的有效视频数据。
具体地,所述Flv格式视频数据一般都是包含有很多Flv数据封包,每个所述Flv数据封包包括Flv数据头和Flv数据体,所述Flv数据体中则包括多个FlvTag,每个FlvTag可用于存储音频数据或者图像数据。因此,所述计算机设备1可以根据所述Flv格式对所述Flv格式视频数据进行解封装,从而提取出所述Flv格式视频数据中每个FlvTag中的音频数据或者图像数据,也就是所述有效视频数据,然后存储到预设的双链表中。所述有效视频数据,实际上就是所述Flv格式视频数据对应的数据封装包中除去封装包的包头以及其他实现封装功能的格式数据之外的音频数据和图像数据。
所述计算机设备1通过所述WebAssembly字节码对所述Flv格式视频数据执行完解封装,得到所述Flv格式视频数据对应的有效视频数据,所述有效视频数据是剔除数据格式之后的视频数据。接着,所述计算机设备1通过所述WebAssembly字节码对所述有效视频数据进行封装。
参阅图4所示,在一示例性例子中,所述利用所述WebAssembly字节码对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据,包括以下步骤:
步骤S400,通过所述双链表中的每个数据节点的头结点指针和尾结点指针查找出所述有效视频数据。
步骤S402,根据FMP4格式将所述有效视频数据封装为所述FMP4格式视频数据对应的MP4Box。
在本实施例中,所述计算机设备1通过所述WebAssembly字节码对所述Flv格式视频数据进行解封装之后,将得到的所述有效视频数据存储到预设的双链表中。因此,所述计算机设备1可以通过双链表中的头结点指针和尾结点指针查找出所述有效视频数据,以执行将所述有效视频数据封装为FMP4格式数据的操作,包括:将所述有效视频数据封装为所述FMP4格式数据对应的MP4Box,空白音频帧的***操作和冗余数据的删除操作;最后,得到所述有效视频数据对应的FMP4格式数据。其中,所述计算机设备1执行对所述Flv格式的视频数据进行解封装,以及对所述有效视频数据封装成FMP4格式数据时,需要动态增加或者减小视频帧数据以适应FMP4格式,而现有技术中,基本都是采用数组的形式存储视频数据格式转换过程中的中间数据。因此,所述计算机设备1采用双链表来代替数组,避免了数组存储时,动态增大或减小视频数据时对视频数据的多重复制,从而能够减小对Web端的处理性能的消耗,提升了Web端处理视频帧数据的性能。
并且,所述计算机设备1通过双链表存储所述有效视频数据,而双链表的每个数据节点的头节点指针和尾节点指针均具有定位作用,因此,在双链表中进行查找、***、删除目标数据节点等操作时,可以判断目标数据节点距离头结点指针还是尾结点指针近,然后就近原则开始遍历到目标数据节点以快速执行对应的查找、***或删除的操作,这样提升了对所述Flv格式的视频数据进行解封装的解封装效率,以及对所述有效视频数据进行封装的封装效率。
参阅图5所示,在一示例性例子中,步骤S402的所述根据FMP4格式将所述有效视频数据封装为所述FMP4格式视频数据对应的MP4Box,可以包括步骤:
步骤S500,根据所述FMP4格式中预设的Box大小将所述有效视频数据拆分并封装为多个Box。
步骤S402,将所有的Box按顺序排列,并根据排列顺序对所述所有的Box进行拼接,以形成所述FMP4格式视频数据对应的MP4Box。
在本实施例中,所述计算机设备1在执行封装操作时,能够调整封装过程的执行步骤,具体地,所述计算机设备1在封装所述有效视频数据时,根据所述FMP4格式中预设的Box大小将所述有效视频数据分割并打包成多个Box,然后将所有的Box数据按顺序排列后统一进行拼接,从而得到所述FMP4格式数据对应的MP4Box。相对于现有技术在封装FMP4视频数据时,每生成一个Box,则将该Box数据与前一个Box数据进行拼装,虽然能够起到分布式操作的作用,然而,这样多次重复拼装,需要进行多余的Box字节复制,对于轻量型的Web端来说,将会消耗掉较多的处理资源。因此,这里改为集中最后统一进行处理生成和拼接MP4Box,提升了FMP4格式视频数据的封装效率。
参阅图6所示,在一示例性例子中,在所述通过所述双链表中的每个数据节点的头结点指针和尾结点指针查找出所述有效视频数据之后,在根据FMP4格式将所述有效视频数据封装为所述FMP4格式视频数据对应的MP4Box之前,所述计算机设备1还会执行以下步骤:
步骤600,根据预设时间区段将所述音频数据划分为多个音频数据片段。
步骤602,统计所述多个音频数据片段中的第一音频数据片段中音频帧数量n以及最前音频帧和最后音频帧的时间戳差值L,其中,所述第一音频数据片段为所述多个音频数据片段中的任一音频数据片段。
步骤604,根据所述L、所述n以及预设的空白音频帧***规则对所述第一音频数据片段执行空白音频帧***,得到第二音频数据片段。
步骤606,将所述第二音频数据片段替换所述音频数据中的所述第一音频数据片段。
在本实施例中,所述有效视频数据中的音频数据中的每个音频帧都包括一个时间戳,所述时间戳是视频数据中音频数据和图像数据同步播放的参考时间戳。也就是说,可以根据所述时间戳检查所述视频数据中的音频帧和所述图像数据中的视频帧是否同步播放。具体的,所述计算机设备1判断音频帧之间音频帧时间戳值是否比预期大时,从而判断在解封装或封装过程中,音频帧是否出现了丢失,或者音频数据量变小了的情况。如果出现这类似情况,在视频播放过程中,则很可能会出现音画不同步的情况,因此需要填补空白音频帧来避免音画不同步。传统的FlvJS只进行了两个音频帧之间的时间戳差值进行了判断从而决定是否***空白音频帧,这样会导致一些情况不能正确处理空白音频帧的***。在本实施例中,所述计算机设备1通过计算包含一预设时间区段的音频数据片段中的音频帧的时间戳的差值总和,也就是最前时间戳与最后时间戳之差再减去音频帧数量对应的音频帧间距,并与单个音频帧间距进行比对,从而来判断是否需要***空白音频帧。通过这种方式,所述计算机设备1能够在两个音频帧的时间戳差值过大而一段时间平均下来是正常的情况就不会错误***空白音频帧,而在一段时间累加导致时间戳差值过大的情况也可以正确***空白音频帧了,从而解决了大部分音画不同步的情况。
步骤S206,通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放。
所述计算机设备1将所述有效视频数据封装成所述FMP4格式视频数据之后,则可以通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放。其中,媒体源扩展(Media Source Extensions,缩写MSE)是一项W3C规范,它允许JavaScript将比特流发送至网页浏览器中支持HTML5视频的编解码器。因此,具有良好的兼容性。
请参阅图7,是本发明一示例性例的流程效果图。
在本实施例中,所述流程效果图包括流程有:浏览器(也就是Web端)请求Flv格式视频数据;解封装所述Flv格式视频数据,得到有效视频数据;将所述有效视频数据封装成FMP4格式视频数据;通过MSE(也就是媒体源扩展)将FMP4格式视频数据加载到浏览器;执行视频播放。
综上所述,本实施例所提出的Web端视频播放方法能够获取待播放的Flv格式视频数据,然后利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,并将所述有效视频数据存储到预设的双链表中;接着,利用所述WebAssembly字节码对所述双链表中的所述有效视频数据件封装,得到FMP4格式视频数据;再通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放。通过WebAssembly字节码执行不同视频数据的解封装和封装,然后再通过媒体源扩展方式将新格式视频数据进行加载,从而降低了Web端视频数据处理过程的处理资源占用,提高了处理效率。
实施例二
图8示意性示出了根据本申请实施例二的Web端视频播放装置的框图,该Web端视频播放装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
如图8所示,该Web端视频播放装置400可以包括获取模块410、解封装模块420,封装模块430和播放模块440,其中:
获取模块410,用于获取待播放的Flv格式视频数据。
解封装模块420,用于利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,并将所述有效视频数据存储到预设的双链表中。
封装模块430,用于利用所述WebAssembly字节码对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据。
播放模块440,用于通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放。
在示例性的实施例中,所述WebAssembly字节码是利用Emscripten工具将C语言代码编译而成的,所述C语言代码包含在Web端实现对所述Flv格式视频数据进行解封装以及将所述有效视频数据封装成FMP4格式视频数据的指令代码。
在示例性的实施例中,解封装模块420,还用于:根据Flv格式识别出所述Flv格式视频数据对应的数据封包中的FlvTag;从所述FlvTag提取出所述Flv格式视频数据对应的有效视频数据。
在示例性的实施例中,封装模块430,还用于:通过所述双链表中的每个数据节点的头结点指针和尾结点指针查找出所述有效视频数据;根据FMP4格式将所述有效视频数据封装为所述FMP4格式视频数据对应的MP4Box。
在示例性的实施例中,封装模块430,还用于:根据所述FMP4格式中预设的Box大小将所述有效视频数据拆分并封装为多个Box;将所有的Box按顺序排列,并根据排列顺序对所述所有的Box进行拼接,以形成所述FMP4格式视频数据对应的MP4Box。
在示例性的实施例中,封装模块430,还用于:获取所述有效视频数据中的音频数据的每一音频帧以及对应的时间戳,其中,所述时间戳为视频数据中音频数据和图像数据同步播放的参考时间戳;根据预设时间区段将所述音频数据划分为多个音频数据片段;统计所述多个音频数据片段中的第一音频数据片段中音频帧数量n以及最前音频帧和最后音频帧的时间戳差值L,其中,所述第一音频数据片段为所述多个音频数据片段中的任一音频数据片段;根据所述L、所述n以及预设的空白音频帧***规则对所述第一音频数据片段执行空白音频帧***,得到第二音频数据片段;将所述第二音频数据片段替换所述音频数据中的所述第一音频数据片段。其中,所述空白音频帧***规则包括:当所述L小于预设阈值M时,则不对所述第一音频数据片段执行***空白音频帧;当所述L大于或等于M时,则***[(L-n*x)/x]个空白音频帧到所述第一音频数据片段,其中,x为音频帧间距,M>(n+1)*x。
实施例三
图9示意性示出了根据本申请实施例三的适于实现Web端视频播放方法的计算机设备1的硬件架构示意图。本实施例中,计算机设备1是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是具有网关功能的机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图9所示,计算机设备1至少包括但不限于:可通过***总线相互通信链接存储器510、处理器520、网络接口530。其中:
存储器510至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器510可以是计算机设备1的内部存储模块,例如该计算机设备1的硬盘或内存。在另一些实施例中,存储器510也可以是计算机设备1的外部存储设备,例如该计算机设备1上配备的插接式硬盘,智能存储卡(SmartMedia Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器510还可以既包括计算机设备1的内部存储模块也包括其外部存储设备。本实施例中,存储器510通常用于存储安装于计算机设备1的操作***和各类应用软件,例如Web端视频播放方法的程序代码等。此外,存储器510还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器520在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器520通常用于控制计算机设备1的总体操作,例如执行与计算机设备1进行数据交互或者通信相关的控制和处理等。本实施例中,处理器520用于运行存储器510中存储的程序代码或者处理数据。
网络接口530可包括无线网络接口或有线网络接口,该网络接口530通常用于在计算机设备1与其他计算机设备之间建立通信链接。例如,网络接口530用于通过网络将计算机设备1与外部终端相连,在计算机设备1与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯***(GlobalSystem of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code DivisionMultiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图9仅示出了具有部件510-530的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器510中的Web端视频播放方法的程序代码还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器520)所执行,以完成本申请实施例。
实施例四
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
从线程池提取预设数量的服务请求;根据配置规则将每一条服务请求配置为组装任务,其中,组装任务包括任务属性;根据所述任务属性将不同的组装任务分配到不同的任务处理管道进行处理,得到对应的反馈结果;将反馈结果分别返回给对应的请求方。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作***和各类应用软件,例如实施例中服务平台的组件管理方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。

Claims (8)

1.一种Web端视频播放方法,其特征在于,所述方法包括:
获取待播放的Flv格式视频数据;
利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,并将所述有效视频数据存储到预设的双链表中;
利用所述WebAssembly字节码对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据,包括:通过所述双链表中的每个数据节点的头结点指针和尾结点指针查找出所述有效视频数据;根据FMP4格式将所述有效视频数据封装为所述FMP4格式视频数据对应的MP4Box;
通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放;
所述根据FMP4格式将所述有效视频数据封装为所述FMP4格式视频数据对应的MP4Box包括:
根据所述FMP4格式中预设的Box大小将所述有效视频数据拆分并封装为多个Box;
将所有的Box按顺序排列,并根据排列顺序对所述所有的Box进行拼接,以形成所述FMP4格式视频数据对应的MP4Box。
2.如权利要求1所述的Web端视频播放方法,其特征在于,所述WebAssembly字节码是利用Emscripten工具将C语言代码编译而成的,所述C语言代码包含在Web端实现对所述Flv格式视频数据进行解封装以及将所述有效视频数据封装成FMP4格式视频数据的指令代码。
3.如权利要求1所述的Web端视频播放方法,其特征在于,所述利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,包括:
根据Flv格式识别出所述Flv格式视频数据对应的数据封包中的FlvTag;
从所述FlvTag提取出所述Flv格式视频数据对应的有效视频数据。
4.如权利要求1所述的Web端视频播放方法,其特征在于,在所述通过所述双链表中的每个数据节点的头结点指针和尾结点指针查找出所述有效视频数据之后,包括:
获取所述有效视频数据中的音频数据的每一音频帧以及对应的时间戳,其中,所述时间戳为视频数据中音频数据和图像数据同步播放的参考时间戳;
根据预设时间区段将所述音频数据划分为多个音频数据片段;
统计所述多个音频数据片段中的第一音频数据片段中音频帧数量n以及最前音频帧和最后音频帧的时间戳差值L,其中,所述第一音频数据片段为所述多个音频数据片段中的任一音频数据片段;
根据所述L、所述n以及预设的空白音频帧***规则对所述第一音频数据片段执行空白音频帧***,得到第二音频数据片段;
将所述第二音频数据片段替换所述音频数据中的所述第一音频数据片段。
5.如权利要求4所述的Web端视频播放方法,其特征在于,所述空白音频帧***规则包括:
当所述L小于预设阈值M时,则不对所述第一音频数据片段执行***空白音频帧;
当所述L大于或等于M时,则***[(L-n*x)/x]个空白音频帧到所述第一音频数据片段,其中,x为音频帧间距,M>(n+1)*x。
6.一种Web端视频播放装置,其特征在于,所述装置包括:
获取模块,用于获取待播放的Flv格式视频数据;
解封装模块,用于利用预设的WebAssembly字节码对所述Flv格式视频数据进行解封装,得到有效视频数据,并将所述有效视频数据存储到预设的双链表中;
封装模块,用于利用所述WebAssembly字节码对所述双链表中的所述有效视频数据进行封装,得到FMP4格式视频数据,包括:通过所述双链表中的每个数据节点的头结点指针和尾结点指针查找出所述有效视频数据;根据FMP4格式将所述有效视频数据封装为所述FMP4格式视频数据对应的MP4Box;
播放模块,用于通过媒体源扩展方式将所述FMP4格式视频数据加载到Web端视频播放器进行播放;
所述封装模块还用于:根据所述FMP4格式中预设的Box大小将所述有效视频数据拆分并封装为多个Box;将所有的Box按顺序排列,并根据排列顺序对所述所有的Box进行拼接,以形成所述FMP4格式视频数据对应的MP4Box。
7.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-5任一项所述的Web端视频播放方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被至少一个处理器执行,以使所述至少一个处理器执行如权利要求1-5中任一项所述的Web端视频播放方法的步骤。
CN202010529065.0A 2020-06-11 2020-06-11 Web端视频播放方法、装置及计算机设备 Active CN112423117B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010529065.0A CN112423117B (zh) 2020-06-11 2020-06-11 Web端视频播放方法、装置及计算机设备
PCT/CN2020/140995 WO2021248888A1 (zh) 2020-06-11 2020-12-29 Web端视频播放方法、装置及计算机设备
US18/078,811 US20230106217A1 (en) 2020-06-11 2022-12-09 Web-end video playing method and apparatus, and computer device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010529065.0A CN112423117B (zh) 2020-06-11 2020-06-11 Web端视频播放方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN112423117A CN112423117A (zh) 2021-02-26
CN112423117B true CN112423117B (zh) 2022-12-16

Family

ID=74844215

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010529065.0A Active CN112423117B (zh) 2020-06-11 2020-06-11 Web端视频播放方法、装置及计算机设备

Country Status (3)

Country Link
US (1) US20230106217A1 (zh)
CN (1) CN112423117B (zh)
WO (1) WO2021248888A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114286193A (zh) * 2021-12-31 2022-04-05 厦门四信通信科技有限公司 嵌入式web的视频播放方法、装置、设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103517135A (zh) * 2012-06-28 2014-01-15 Tcl集团股份有限公司 一种连续播放mp4格式视频文件的方法、***及电视
CN109195012A (zh) * 2018-11-07 2019-01-11 成都索贝数码科技股份有限公司 一种基于对象存储分片转码/合成闪拼成mp4文件的方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8548048B2 (en) * 2005-10-27 2013-10-01 Qualcomm Incorporated Video source rate control for video telephony
WO2011022405A2 (en) * 2009-08-17 2011-02-24 Akamai Technologies, Inc. Method and system for http-based stream delivery
CN102215429B (zh) * 2010-04-01 2013-04-17 安凯(广州)微电子技术有限公司 一种用于移动电视的录制方法
CN103051941B (zh) * 2013-01-28 2015-10-28 北京暴风科技股份有限公司 一种在移动平台上播放本地视频的方法和***
CN105280205B (zh) * 2014-05-30 2018-03-16 深圳锐取信息技术股份有限公司 非线性编辑软件音视频同步处理方法及装置
US10404662B1 (en) * 2015-11-10 2019-09-03 Source Defense VICE system, method, and medium for protecting a computer browser from third-party computer code interference
KR102130429B1 (ko) * 2016-11-07 2020-07-07 한화테크윈 주식회사 멀티미디어 수신 장치에서 디코딩을 수행하는 방법 및 멀티미디어 장치
US10477333B1 (en) * 2016-11-29 2019-11-12 Amazon Technologies, Inc. Audio placement algorithm for determining playback delay
US20180324231A1 (en) * 2017-05-08 2018-11-08 Alcatel-Lucent Usa Inc. Multicast adaptive bitrate channel selection in access networks
US10356404B1 (en) * 2017-09-28 2019-07-16 Amazon Technologies, Inc. Image processing using just-noticeable-difference thresholds
US10412425B2 (en) * 2018-01-05 2019-09-10 Facebook, Inc. Processing gaps in audio and video streams
CN110545461A (zh) * 2018-05-29 2019-12-06 北京字节跳动网络技术有限公司 一种媒体文件的分辨率切换方法、装置及存储介质
CN108718416A (zh) * 2018-06-15 2018-10-30 深圳市安佳威视信息技术有限公司 Html5直播嵌入式摄像机音视频***及其方法
CN110620959B (zh) * 2018-06-20 2020-12-25 杭州海康威视数字技术股份有限公司 一种数据处理方法、装置、电子设备、***及存储介质
CN110858915A (zh) * 2018-08-24 2020-03-03 北京字节跳动网络技术有限公司 媒体文件播放过程中的分辨率切换方法、装置及存储介质
CN109088887A (zh) * 2018-09-29 2018-12-25 北京金山云网络技术有限公司 一种流媒体解码的方法及装置
CN111083569B (zh) * 2018-10-18 2021-11-05 杭州海康威视数字技术股份有限公司 一种视频播放方法及装置
CN109905763B (zh) * 2019-03-20 2021-09-10 四川长虹电器股份有限公司 优化播放器音频播放卡顿的方法
CN110662116A (zh) * 2019-09-29 2020-01-07 中电福富信息科技有限公司 一种基于WebAssembly技术的Web播放器及播放方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103517135A (zh) * 2012-06-28 2014-01-15 Tcl集团股份有限公司 一种连续播放mp4格式视频文件的方法、***及电视
CN109195012A (zh) * 2018-11-07 2019-01-11 成都索贝数码科技股份有限公司 一种基于对象存储分片转码/合成闪拼成mp4文件的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高性能CDN流媒体服务器***设计和实现;温璋;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20200215(第02期);全文 *

Also Published As

Publication number Publication date
CN112423117A (zh) 2021-02-26
WO2021248888A1 (zh) 2021-12-16
US20230106217A1 (en) 2023-04-06

Similar Documents

Publication Publication Date Title
EP2966566B1 (en) Driver program loading method and embedded device
US10599413B2 (en) Method and device for identifying file
CN106909361B (zh) 基于模版引擎的web开发方法和装置
CN110647511A (zh) 数据同步方法、计算设备及计算机存储介质
CN111400246B (zh) 异步导入文件方法、装置、计算机设备和存储介质
CN107798064B (zh) 页面处理方法、电子设备及计算机可读存储介质
US20130152069A1 (en) Method, apparatus and system for initiating terminal operation
CN111444455A (zh) 浏览器兼容方法、***、计算机设备及存储介质
CN110059278A (zh) Web页面配置方法、服务器及计算机可读存储介质
CN112612982A (zh) 网页预加载方法、装置及计算机设备
CN107577506B (zh) 一种数据预加载的方法和***
US20230106217A1 (en) Web-end video playing method and apparatus, and computer device
CN115390991A (zh) 虚拟机的导入导出方法、装置、设备及存储介质
CN111562929A (zh) 补丁文件的生成方法、装置、设备及存储介质
US20140215035A1 (en) Distribution of application components among devices
CN111309402B (zh) 数据监测及针对应用程序的处理方法、装置及设备
CN109842498B (zh) 一种客户端配置方法、服务器、客户端及电子设备
CN116781586A (zh) 一种gRPC流量解析方法、装置、设备及介质
CN114928562B (zh) 一种图计算平台的流量处理方法和***
CN113326056B (zh) 数据处理方法、装置、存储介质及处理器
CN113377376A (zh) 数据包生成方法、数据包生成装置、电子设备及存储介质
CN116450058B (zh) 数据转存方法、装置、异构平台、设备及介质
CN113129049B (zh) 用于模型训练和应用的文件配置方法和***
CN113342400B (zh) 离线包打包方法、装置及计算机设备
US9184979B2 (en) Communication between application components distributed among devices

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