CN116962815B - 一种浏览器原生播放mkv视频的方法 - Google Patents

一种浏览器原生播放mkv视频的方法 Download PDF

Info

Publication number
CN116962815B
CN116962815B CN202311211800.3A CN202311211800A CN116962815B CN 116962815 B CN116962815 B CN 116962815B CN 202311211800 A CN202311211800 A CN 202311211800A CN 116962815 B CN116962815 B CN 116962815B
Authority
CN
China
Prior art keywords
video
mkv
track data
data
audio
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
CN202311211800.3A
Other languages
English (en)
Other versions
CN116962815A (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.)
Chengdu Chinamcloud Technology Co ltd
Original Assignee
Chengdu Chinamcloud 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 Chengdu Chinamcloud Technology Co ltd filed Critical Chengdu Chinamcloud Technology Co ltd
Priority to CN202311211800.3A priority Critical patent/CN116962815B/zh
Publication of CN116962815A publication Critical patent/CN116962815A/zh
Application granted granted Critical
Publication of CN116962815B publication Critical patent/CN116962815B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/44008Processing 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 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 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/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4782Web browsing, e.g. WebTV

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明公开了一种浏览器原生播放MKV视频的方法,属于视频播放技术领域。所述方法包括:创建video播放器和MediaSource对象,并将MediaSource对象设置为Video播放器的播放地址;将MKV视频以二进制文件的形式加载到浏览器的内存中;解析所述MKV视频得到视频轨数据、音频轨数据和字幕轨数据;将视频轨数据和音频轨数据封装为fmp4格式;将封装为fmp4格式的视频轨数据和音频轨数据放入MediaSource对象;在video播放器上层创建字幕显示层,将字幕轨数据传入字幕显示层;播放MKV视频,并在字幕显示层上显示对应的字幕。本发明实现了无插件化播放MKV视频。

Description

一种浏览器原生播放MKV视频的方法
技术领域
本发明属于视频播放技术领域,特别是涉及一种浏览器原生播放MKV视频的方法。
背景技术
目前人们观看视频的主要方式已经从下载观看变为在线观看,在线观看的方式一般有通过视频软件观看和通过网页观看两种方式,然而现有浏览器不支持mkv格式视频的直接播放。
发明内容
本发明的目的在于克服现有技术的不足,提供一种浏览器原生播放MKV视频的方法。
本发明的目的是通过以下技术方案来实现的:一种浏览器原生播放MKV视频的方法,包括:
创建video播放器和MediaSource对象,并将MediaSource对象设置为Video播放器的播放地址;
将MKV视频以二进制文件的形式加载到浏览器的内存中;
解析所述MKV视频得到视频轨数据、音频轨数据和字幕轨数据;
将视频轨数据和音频轨数据封装为fmp4格式;
将封装为fmp4格式的视频轨数据和音频轨数据放入MediaSource对象;
在video播放器上层创建字幕显示层,将字幕轨数据传入字幕显示层;
点击video播放器的播放按钮进行MKV视频的播放,并在字幕显示层上显示对应的字幕。
进一步地,将MKV视频以二进制文件的形式加载到浏览器的内存中,包括:
创建XMLHttpRequest对象,将MKV视频以二进制文件的形式加载到浏览器的内存中。
进一步地,解析所述MKV视频得到视频轨数据、音频轨数据和字幕轨数据,包括:
解析MKV视频的Track部分,得到视频、音频、字幕的属性信息;
解析MKV视频的Clusters部分,得到视频、音频、字幕的原始数据信息;
根据视频的属性信息和原始数据信息生成视频轨数据;
根据音频的属性信息和原始数据信息生成音频轨数据;
根据字幕的属性信息和原始数据信息生成字幕轨数据。
进一步地,将视频轨数据封装为fmp4格式,包括:
将视频创建时间、视频修改时间、播放速率、视频时长、音量大小、视频高宽、声道、视频/音频位置封装成对应的box类型,组装并放入moov box;
创建moof,根据当前片断的视频数据,将视频时长、视频数据长度、数据类型写入moof;
创建mdat,将当前片断数据写为mdat box;
循环视频轨视频,连续生成moof+mdat,则完成视频轨数据封装。
进一步地,将音频轨数据封装为fmp4格式,包括:
在将视频轨数据封装为fmp4格式后,创建moof,根据当前片断的音频数据,将音频时长、音频数据长度、数据类型写入moof;
创建mdat,将当前片断的数据写入mdat;
循环音频轨视频,连续生成moof+mdat,则完成音频轨数据封装。
进一步地,在字幕显示层上显示对应的字幕,包括:
在播放MKV视频时侦听video播放器的时间头更新事件;
将时间头传入字幕显示层;
字幕显示层根据时间头搜索字幕轨数据,将时间头大于inPoint、且小于outPoint的字幕进行显示,将其余字幕隐藏。
本发明的有益效果是:
(1)本发明实现了无插件化播放MKV视频的功能;
(2)本发明兼容了部分历史媒体库视频,减轻了后端视频格式转换的工作;
(3)本发明中视频和字幕在一个文件里,减少了后端文件管理数量。
附图说明
图1为本发明中浏览器原生播放MKV视频的方法的一种实施例的流程图;
图2为EBML的一种结构示意图;
图3为Track部分解析结果的一种示意图;
图4为Clusters部分解析结果的一种示意图;
图5为box 结构的一种示意图。
具体实施方式
下面将结合实施例,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
参阅图1至图5,本发明提供一种浏览器原生播放MKV视频的方法:
如图1所示,一种浏览器原生播放MKV视频的方法,包括步骤S100至S700。
步骤S100.创建video播放器和MediaSource对象,并将MediaSource对象设置为Video播放器的播放地址。
步骤S200.将MKV视频以二进制文件的形式加载到浏览器的内存中。
具体的, 创建XMLHttpRequest对象,将MKV视频以二进制文件的形式加载到浏览器的内存中。
步骤S300.解析所述MKV视频得到视频轨数据、音频轨数据和字幕轨数据。
MKV视频文件结构总体包括Header、Meta Seek Information、SegmentInformation、Track、Chapters、Clusters、Cueing Data、Attachment和Tagging,如表1所示。
表1
Header部分包含EBML版本信息以及EBML的类型(表明是Matroska文件)。
Metaseek section Info部分包含用于定位文件其他部分(例如Track Info、Chapters、Tags、Cues、Attachments等)的索引信息。这一部分不是必须的,如果不存在的话可以通过扫描整个文件的其他字段获取。
Segment Info部分包含整个文件相关的基本信息,例如title信息,并包含唯一的ID,如果是连续多个相关文件,还会包含下一个文件的ID。
Track部分包含track相关的信息,比如音频、视频、字幕,视频分辨率、音频采样率、编码方式等信息。
Chapters部分给出所有Chapters。其中每个Chapters是臃肿预设音视频播放点的方式。
Clusters部分主要包含每个track的音频帧和视频帧。
Cueing Data部分包含所有的Cue信息。Cues是每个track的索引信息,跟MetaSeekInfo类似,但主要用于播放时seek到特定时间。
Attachment部分主要是用于支持在MKV文件中附加任何类型的文件,包括图片、网页、程序等。
Tagging部分包含跟文件和各个track相关的Tag。这些Tag跟MP3文件中的ID3 tag类似,包含主入writer、singer、ctor等信息。
MKV视频采用可扩展二进制元语言EBML(Extensible Binary Meta Language)来描述其文件结构,如图2所示,EBML用元素(Elements)来描述EBML文档。通过循环或递归,则可以定位到不同的数据部分。EBML是一种基于XML数据结构,由多个基础的 EBML_ELEMENT组成一个完整的EBML。
typedef struct {
vint ID;// EBML-ID
vint size;// size of element
char data[size];// data
} EBML_ELEMENT;
在一些实施例中,解析所述MKV视频得到视频轨数据、音频轨数据和字幕轨数据,包括:解析MKV视频的Track部分,得到视频、音频、字幕的属性信息,如图3所示;解析MKV视频的Clusters部分,得到视频、音频、字幕的原始数据信息,如图4所示;根据视频的属性信息和原始数据信息生成视频轨数据;根据音频的属性信息和原始数据信息生成音频轨数据;根据字幕的属性信息和原始数据信息生成字幕轨数据。
步骤S400.将视频轨数据和音频轨数据封装为fmp4格式。
具体的,mp4 封装格式采用称为 box 的结构来组织数据,如图5所示,header由size(4字节)+type(4字节)+large size(8字节)组成,body为下一个box或者数据。fmp4是由一个个box组成,第一层主要有四类box,分别为:ftyp(file type box),文件头,记录一些兼容性信息;moov(movie box),记录媒体信息;moof(movie box), 记录当前片断中的媒体信息;mdat(media data),媒体负载。和普通的Mp4不同,fmp4是为流式格式,除ftyp和moov外,fmp4由一个个连续的moof和mdat的box组成。将视频轨数据和音频轨数据封装为fmp4格式,包括:(1)根据解析完的MKV数据信息,将视频创建时间、视频修改时间、播放速率、视频时长、音量大小、视频高宽、声道、视频/音频位置等封装成对应的box类型,组装并放入moov box;(2)创建moof,根据当前片断的视频数据,将视频时长、视频数据长度、数据类型写入moof;(3)创建mdat,将当前片断数据写为mdat box;(4)循环视频轨视频,连续生成moof+mdat,则完成视频轨数据封装。
将音频轨数据封装为fmp4格式,包括:在将视频轨数据封装为fmp4格式后,创建moof,根据当前片断的音频数据,将音频时长、音频数据长度、数据类型写入moof;创建mdat,将当前片断的数据写入mdat;循环音频轨视频,连续生成moof+mdat,则完成音频轨数据封装。
步骤S500.将封装为fmp4格式的视频轨数据和音频轨数据放入MediaSource对象。
步骤S600.在video播放器上层创建字幕显示层,将字幕轨数据传入字幕显示层。
步骤S700.点击video播放器的播放按钮进行MKV视频的播放,并在字幕显示层上显示对应的字幕。
在一些实施例中,在字幕显示层上显示对应的字幕,包括:在播放MKV视频时侦听video播放器的时间头更新事件;将时间头传入字幕显示层;字幕显示层根据时间头搜索字幕轨数据,将时间头大于inPoint、且小于outPoint的字幕进行显示,将其余字幕隐藏。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (6)

1.一种浏览器原生播放MKV视频的方法,其特征在于,包括:
创建video播放器和MediaSource对象,并将MediaSource对象设置为Video播放器的播放地址;
将MKV视频以二进制文件的形式加载到浏览器的内存中;
解析所述MKV视频得到视频轨数据、音频轨数据和字幕轨数据;
将视频轨数据和音频轨数据封装为fmp4格式;
将封装为fmp4格式的视频轨数据和音频轨数据放入MediaSource对象;
在video播放器上层创建字幕显示层,将字幕轨数据传入字幕显示层;
点击video播放器的播放按钮进行MKV视频的播放,并在字幕显示层上显示对应的字幕。
2.根据权利要求1所述的一种浏览器原生播放MKV视频的方法,其特征在于,将MKV视频以二进制文件的形式加载到浏览器的内存中,包括:
创建XMLHttpRequest对象,将MKV视频以二进制文件的形式加载到浏览器的内存中。
3.根据权利要求1所述的一种浏览器原生播放MKV视频的方法,其特征在于,解析所述MKV视频得到视频轨数据、音频轨数据和字幕轨数据,包括:
解析MKV视频的Track部分,得到视频、音频、字幕的属性信息;
解析MKV视频的Clusters部分,得到视频、音频、字幕的原始数据信息;
根据视频的属性信息和原始数据信息生成视频轨数据;
根据音频的属性信息和原始数据信息生成音频轨数据;
根据字幕的属性信息和原始数据信息生成字幕轨数据。
4.根据权利要求1所述的一种浏览器原生播放MKV视频的方法,其特征在于,将视频轨数据封装为fmp4格式,包括:
将视频创建时间、视频修改时间、播放速率、视频时长、音量大小、视频高宽、声道、视频/音频位置封装成对应的box类型,组装并放入moov box;
创建moof,根据当前片断的视频数据,将视频时长、视频数据长度、数据类型写入moof;
创建mdat,将当前片断数据写为mdat box;
循环视频轨视频,连续生成moof+mdat,则完成视频轨数据封装。
5.根据权利要求4所述的一种浏览器原生播放MKV视频的方法,其特征在于,将音频轨数据封装为fmp4格式,包括:
在将视频轨数据封装为fmp4格式后,创建moof,根据当前片断的音频数据,将音频时长、音频数据长度、数据类型写入moof;
创建mdat,将当前片断的数据写入mdat;
循环音频轨视频,连续生成moof+mdat,则完成音频轨数据封装。
6.根据权利要求1所述的一种浏览器原生播放MKV视频的方法,其特征在于,在字幕显示层上显示对应的字幕,包括:
在播放MKV视频时侦听video播放器的时间头更新事件;
将时间头传入字幕显示层;
字幕显示层根据时间头搜索字幕轨数据,将时间头大于inPoint、且小于outPoint的字幕进行显示,将其余字幕隐藏。
CN202311211800.3A 2023-09-20 2023-09-20 一种浏览器原生播放mkv视频的方法 Active CN116962815B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311211800.3A CN116962815B (zh) 2023-09-20 2023-09-20 一种浏览器原生播放mkv视频的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311211800.3A CN116962815B (zh) 2023-09-20 2023-09-20 一种浏览器原生播放mkv视频的方法

Publications (2)

Publication Number Publication Date
CN116962815A CN116962815A (zh) 2023-10-27
CN116962815B true CN116962815B (zh) 2023-11-21

Family

ID=88454936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311211800.3A Active CN116962815B (zh) 2023-09-20 2023-09-20 一种浏览器原生播放mkv视频的方法

Country Status (1)

Country Link
CN (1) CN116962815B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103338401A (zh) * 2013-06-03 2013-10-02 贝壳网际(北京)安全技术有限公司 用于移动终端浏览器中的视频播放控制方法、装置和系统
WO2019227748A1 (zh) * 2018-05-29 2019-12-05 北京字节跳动网络技术有限公司 非流媒体文件的网页播放方法、装置及存储介质
CN112653700A (zh) * 2020-12-23 2021-04-13 武汉烽火众智数字技术有限责任公司 一种基于webrtc网页视频通信的方法
CN112929686A (zh) * 2021-02-04 2021-06-08 北京华宇信息技术有限公司 线上实时回放录制视频的方法及装置
CN112995760A (zh) * 2019-12-18 2021-06-18 腾讯科技(深圳)有限公司 视频处理方法、装置、设备及计算机存储介质
CN116261021A (zh) * 2023-05-16 2023-06-13 北京蓝色星际科技股份有限公司 一种视频流播放方法、装置、电子设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110545491B (zh) * 2018-05-29 2021-08-10 北京字节跳动网络技术有限公司 一种媒体文件的网络播放方法、装置及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103338401A (zh) * 2013-06-03 2013-10-02 贝壳网际(北京)安全技术有限公司 用于移动终端浏览器中的视频播放控制方法、装置和系统
WO2019227748A1 (zh) * 2018-05-29 2019-12-05 北京字节跳动网络技术有限公司 非流媒体文件的网页播放方法、装置及存储介质
CN110545469A (zh) * 2018-05-29 2019-12-06 北京字节跳动网络技术有限公司 非流媒体文件的网页播放方法、装置及存储介质
CN112995760A (zh) * 2019-12-18 2021-06-18 腾讯科技(深圳)有限公司 视频处理方法、装置、设备及计算机存储介质
CN112653700A (zh) * 2020-12-23 2021-04-13 武汉烽火众智数字技术有限责任公司 一种基于webrtc网页视频通信的方法
CN112929686A (zh) * 2021-02-04 2021-06-08 北京华宇信息技术有限公司 线上实时回放录制视频的方法及装置
CN116261021A (zh) * 2023-05-16 2023-06-13 北京蓝色星际科技股份有限公司 一种视频流播放方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN116962815A (zh) 2023-10-27

Similar Documents

Publication Publication Date Title
US10430212B1 (en) Method for recording, editing and reproduction of computer session
CN1777945B (zh) 对记录在交互记录介质上的主内容以及其附加内容进行同步再现的方法和设备
CN1327431C (zh) 含有预加载信息的信息存储媒体及其再现设备和方法
US8799757B2 (en) Synchronization aspects of interactive multimedia presentation management
US7234104B2 (en) System and method for authoring multimedia contents description metadata
US7313809B1 (en) Convergence-enabled DVD and web system
CN1993755B (zh) 包括元数据的存储介质及其再现设备和方法
US20070006079A1 (en) State-based timing for interactive multimedia presentations
US20070006065A1 (en) Conditional event timing for interactive multimedia presentations
US20070073747A1 (en) Information Storage medium on which interactive contents version information is recorded, and recording and/or reproducing method and apparatus
US8020084B2 (en) Synchronization aspects of interactive multimedia presentation management
KR20110056476A (ko) 향상된 메타데이터 구조들을 사용하는 멀티미디어 배포 및 재생 시스템들 및 방법들
CN1954384A (zh) 再现下载的数据与记录在存储介质上的数据的方法和设备
CN100479047C (zh) 记录基于文本的字幕流的存储介质及再现其的设备和方法
US20060257106A1 (en) Information storage medium, information recording apparatus, and information playback apparatus
US20090136218A1 (en) Multimedia presentation format
US20080056663A1 (en) File Recording Apparatus, File Recording Method, Program of File Recording Process, Storage Medium in Which a Program of File Recording Processing in Stored, File Playback Apparatus File Playback Method Program of File Playback Process
CN116962815B (zh) 一种浏览器原生播放mkv视频的方法
CN100555432C (zh) 以交互式模式再现av数据的方法和设备及其存储介质
KR101014665B1 (ko) 프리로드 정보가 기록된 정보저장매체, 그 재생장치 및재생방법
US20070006062A1 (en) Synchronization aspects of interactive multimedia presentation management
KR102422450B1 (ko) 미디어 데이터와 센싱 데이터의 관리 방법
US20230377606A1 (en) Video editing projects using single bundled video files
CN101689389A (zh) 信息存储介质、再现设备和再现方法
WO2002062061A1 (en) Method and system for controlling and enhancing the playback of recorded audiovisual programming

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