CN104575547B - 多媒体文件制作方法、播放方法及*** - Google Patents
多媒体文件制作方法、播放方法及*** Download PDFInfo
- Publication number
- CN104575547B CN104575547B CN201310487869.9A CN201310487869A CN104575547B CN 104575547 B CN104575547 B CN 104575547B CN 201310487869 A CN201310487869 A CN 201310487869A CN 104575547 B CN104575547 B CN 104575547B
- Authority
- CN
- China
- Prior art keywords
- data
- container
- multimedia file
- video
- index
- 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.)
- Expired - Fee Related
Links
Landscapes
- Television Signal Processing For Recording (AREA)
Abstract
本发明公开了一种多媒体文件制作方法、播放方法及***,所述制作方法包括:设置头容器、索引容器、轨道容器和集群容器;获取多媒体数据、索引数据和头文件数据;分别建立一路或多路视频流数据、音频流数据、字幕流数据与一条或多条视频轨、音频轨、字幕轨的一一映射表;将所述头文件数据、索引数据、映射表和多媒体数据分别存储到所述多媒体文件的头容器、索引容器、轨道容器和集群容器,以生成所述多媒体文件。实施本发明的有益效果是,可容纳任意数量和任意编码格式的视频数据、音频数据、字幕流数据等,适应多路视频、音频和字幕的需要;在播放时,可实现灵活控制多媒体文件的播放,实现更多的特色功能;可节省存储空间。
Description
技术领域
本发明涉及多媒体数据处理领域,更具体地说,涉及一种多媒体文件制作方法、播放方法及***。
背景技术
为了适应存储多媒体的需要,人们设定了不同的多媒体文件格式。基于这些多媒体文件格式,可制作包括视频、音频、字幕等数据的多媒体文件,以实现播放时能够同时播放视频、音频、字幕等。
目前,常见的多媒体文件大多是采用avi、wmv、asf、asx、rm、rmvb等格式制作的。虽然,利用这些多媒体文件格式都可以实现将视频、音频、字幕等数据存储在一个文件中,实现多媒体文件的制作,但制作出的多媒体文件不能适应不同的应用环境。例如,asf是微软为windows98所开发的串流多媒体文件格式,只有在windows***上能够得到支持。且采用现有技术制作的多媒体文件大多仅有一个视频轨道、一个音频轨道,不能适应多路视频、音频的需要。
另一方面,现有技术的多媒体文件,在播放时不能提供控制功能(例如,提前预览等),不能满足用户的多种需求。
因此,采用现有的多媒体文件格式制作多媒体文件,局限性大,不能满足用户的需求。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述采用现有的多媒体文件制作方式不能适应多路视频、音频的需要,局限性大,不能满足用户附加需求的缺陷,提供一种多媒体文件制作方法、播放方法及***。
本发明解决其技术问题所采用的技术方案是:构造一种多媒体文件制作方法,所述方法包括:
设置头容器、索引容器、轨道容器和集群容器;所述头容器、索引容器、轨道容器和集群容器均包括ID字段、尺寸字段和数据字段;
获取多媒体数据、索引数据和头文件数据;其中,所述多媒体数据包括:一路或多路视频流数据、音频流数据和字幕流数据;所述头文件数据包括文件类型和文件版本号识别信息;
分别建立所述一路或多路视频流数据、音频流数据、字幕流数据与一条或多条视频轨、音频轨、字幕轨的一一映射表;
将所述头文件数据、索引数据、映射表和多媒体数据分别存储到所述多媒体文件的头容器、索引容器、轨道容器和集群容器,以生成所述多媒体文件。
优选的,所述方法还包括:设置预览视频帧容器,所述预览视频帧容器包括ID字段、尺寸字段和数据字段;获取预览图片帧,并将所述预览图片帧存储到预览视频帧容器,以生成所述多媒体文件。
优选的,所述方法还包括:设置视频标签容器,所述视频标签容器包括ID字段、尺寸字段和数据字段;获取视频标签数据,并将所述视频标签数据存储到视频标签容器,以生成所述多媒体文件。
优选的,所述方法还包括:设置位置索引容器,所述位置索引容器包括ID字段、尺寸字段和数据字段;分别建立头容器、索引容器、集群容器、轨道容器、预览视频帧容器和视频标签容器与其存储位置的索引,并将所述索引存储到位置索引容器,以生成所述多媒体文件。
优选的,所述方法还包括:设置媒体元信息容器,所述媒体元信息容器包括ID字段、尺寸字段和数据字段;获取多媒体文件的媒体元信息,包括名称、大小、时长及制作时间,并将其存储到媒体元信息容器,以生成多媒体文件。
优选的,所述索引数据包括第一索引数据和第二索引数据;
所述第一索引数据包括第一预设时间内的每帧图像与其播放时刻的一一对应关系;
所述第二索引数据包括第二预设时间内的每帧图像与其播放时刻的一一对应关系。
优选的,所述方法还包括:
将所述集群容器中存储的视频流数据、音频流数据和字幕流数据按照时间长度划分为多个子块,每个子块以数秒为单位;
所述每个子块对应一个播放时码,所述播放时码包括基准时码和偏移时码。
优选的,所述方法还包括:当与视频流数据、音频流数据、字幕流数据分别对应的视频轨、音频轨、字幕轨有多条时,设定多条视频轨、音频轨和字幕轨的优先级信息,并将所述优先级信息存储在所述轨道容器中。
一种多媒体文件播放方法,用于播放采用上述方法制作的多媒体文件,所述方法包括:
加载并解析多媒体文件;
根据所解析出的信息,选择相应的解码器对所述多媒体文件进行解码;
播放解码后的多媒体文件。
优选的,所述播放方法还包括:根据多媒体文件的轨道容器中的优先级信息,选择相应的视频轨、音频轨和字幕轨以播放解码后的多媒体文件。
一种多媒体文件播放***,用于播放采用上述方法制作的多媒体文件,所述***包括:解析模块、解码模块和播放模块;
所述解析模块用于解析所述多媒体文件;
所述解码模块,用于根据所述解析模块解析出的信息,选择相应的解码器对所述多媒体文件进行解码;
所述播放模块,用于播放解码后的多媒体文件。
优选的,所述播放模块还用于根据多媒体文件的轨道容器中的优先级信息,选择相应的视频轨、音频轨和字幕轨以播放解码后的多媒体文件。
实施本发明的多媒体文件制作方法、播放方法及***,具有以下有益效果:可容纳任意数量和任意编码格式的视频数据、音频数据、字幕流数据、索引数据、预览帧数据、视频标签数据及控制信息、自定义数据包等,适应多路视频、音频和字幕的需要;在播放时,可实现灵活控制多媒体文件的播放,实现更多的特色功能(例如预览还未下载的视频、展示视频标签等);能够实现快速定位及可变粒度索引;采用模块化的层次结构(头容器和数据容器结构),可任意扩展某个结构;由于有预览图片帧,能为网络状况不佳时提供更好的播放体验,在缓冲时,可通过预览视频帧容器获得未下载数据段的视频图像预览;视频标签可向用户展示更多的内容;由于在制作多媒体文件时通过轨道容器记录了各个数据流的编码信息,因此,本发明实施例的多媒体文件可以容纳几乎所有编码类型的视频、音频及字幕流;且可节省存储空间。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的多媒体文件的结构示意图;
图2是本发明实施例的多媒体文件制作方法的流程图;
图3是本发明实施例的多媒体文件播放方法的流程图;
图4是本发明实施例的多媒体文件播放方法的详细流程图;
图5是本发明实施例的多媒体文件播放***的结构图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
按照本发明实施例的多媒体文件制作方法制作的多媒体文件可容纳任意数量和任意编码格式的视频数据、音频数据、字幕流数据、索引数据、预览帧数据和视频标签数据等。在播放本发明实施例的多媒体文件制作方法制作的多媒体文件时,可灵活控制多媒体文件的播放,实现更多的特色功能(例如预览还未下载的视频、展示视频标签等)。
参见图1,为本发明实施例的多媒体文件的结构示意图。本发明实施例的多媒体文件由若干个存储有数据的容器(box)组成。每个box的结构都是以扩展二进制多媒体语言(EBML,Extensible Binary Meta Language)的形式进行存储。采用EBML形式的好处是可以节省存储空间。例如,对64位整数变量表示的数据进行编码存入时,如果变量数据为5,则编码结果为0x85,存储时只占一个字节。若以普通方式,编码结果将会是0x0000000000000005,存储时占用8个字节。
在本发明的实施例中一个多媒体文件包括:“Header”类型的box,用于存储文件类型和文件版本号识别信息;“Data”类型的box,用于存储数据信息。其中,“Data”类型的box即数据容器20(Data box),包括七个子box。
“Header”类型的box即头容器10(Header box)以及每个子box均包括ID字段、尺寸(size)字段和数据(data)字段。其中,ID和size使用不定长整数表示法。data所占的字节数和size相关,例如,size为0x08,则data所占的字节数即为8字节。在本发明的实施例中,ID字段和size字段总是被编码成最短的表示方式以节约存储空间,例如,1被编码成0x81,而不会用0x4001。此外,由于本发明实施例中采用EBML形式,易于实现扩展,因为,EBML本身是box结构的,data(数据)字段中可以扩展data box的结构。
头容器10(Header box)中的ID字段固定不变,例如,其值可设定为0x1B514D56。当播放端播放多媒体文件,解析多媒体文件时,根据头容器10中的ID字段即可加载相应的解析器组件进行播放解析。由此,ID字段的信息即可标识本发明实施例的多媒体文件的文件类型。
头容器10(Header box)中的data字段用于标识本发明实施例的多媒体文件的文件版本号识别信息。例如,data字段可为0x0001,以标识文件版本号识别信息。文件版本号识别信息是随着多媒体文件制作方法的改变而改变的,例如,若制作方法改变,则版本号会递增。当播放端播放多媒体文件,解析多媒体文件时,根据版本号可加载相应的解析器组件进行播放解析。
本发明实施例的多媒体文件的数据容器20(Data box)包括的七个子box分别是位置索引容器201、媒体元信息容器202、轨道容器203、集群容器204、索引容器205、预览视频帧容器206、视频标签容器207。本发明实施例的ID字段用于标识不同的容器,例如,可设置ID字段为0x4287,则代表位置索引容器201。应理解,在本发明的实施例中数据容器20包括的七个子容器并不是全部都是必须的,可根据实际需要进行设置。
在本发明的实施例中,可依次设置头容器10、位置索引容器201、媒体元信息容器202、轨道容器203、集群容器204、索引容器205、预览视频帧容器206、视频标签容器207。也可将头容器10设置于最前,而数据容器20则按照其他的规则进行设置,不必按照前述顺序依次设置。
其中,位置索引容器201用于存储数据容器20(Data box)的各个子容器的索引。该索引包括各个子容器及其存储位置的一一对应关系。由此,可使得不需要逐个解析即可获知数据容器20(Data box)包含的所有子容器及其存储位置。另外,通过位置索引容器201存储索引信息,可实现灵活增加新的容器,例如,根据索引信息中存储的位置,可方便的在最后一个子容器(例如,预览视频帧容器206)的存储位置之后新增容器。
媒体元信息容器202用于存储至少包括多媒体文件的名称、大小和时长的媒体元信息。具体的,多媒体文件的名称是根据命名产生的;多媒体文件的大小是通过统计各个容器存储的数据的大小获得的;多媒体文件的时长是根据视频流、音频流或字幕流的长度获得的。例如,若多媒体文件具体指的是电影,则媒体元信息容器可存储电影的名称、大小和时长。此外,存储的媒体元信息还包括多媒体文件的制作时间。例如,多媒体文件是“2012-10-0115:10:25”被制作成功的。
轨道容器203用于存储视频的视频轨、音频轨和字幕轨信息。具体的,视频轨、音频轨和字幕轨是与视频数据流、音频数据流和字幕数据流一一对应的。此外,在轨道容器203中还存储有优先级信息,该优先级信息是指:当与视频数据、音频数据、字幕数据分别对应的视频轨、音频轨、字幕轨有多条时,设定的多条视频轨、音频轨和字幕轨的优先级。该优先级信息可以根据地理位置信息设定。例如:设定多媒体文件在中国区域内播放时,普通话的音频轨、简体中文的字幕轨的优先级为最高。此外,该优先级信息也可由用户根据需求自行设定。
集群容器204用于存储视频流数据、音频流数据和字幕流数据。在本发明的实施例中,集群容器204存储的视频流数据、音频流数据和字幕流数据均被按照时间长度划分为多个子块。每个子块以数秒为单位,即每个子块包括数秒的视频流、音频流和字幕流数据。
每个子块对应一个播放时码。播放时码包括基准时码和偏移时码。基准时码,用于设置时间位置的基准。偏移时码用于设置时码补偿。具体的,将每个子块的第1秒的第一帧对应的时间作为每个子块的基准时码,将每个子块中除第1秒的第一帧图像以外的每帧图像的对应时间作为偏移时码。
例如,对于一个多媒体文件,其每个子块的时长为200秒,每秒放映的帧数为25帧,则需要记录每帧图像(包括视频流数据、音频流数据和字幕流流数据等)对应的播放时刻数据(单位为毫秒)。按照现有技术:存储每帧图像的对应播放时刻数据时,采用的字节数固定为8。
参见表1,展示了按照现有技术的存储方式,实际存储时每秒的每帧图像的对应播放时刻。
表1
第一帧 | 第二帧 | 第三帧 | …… | |
第1秒 | 0毫秒 | 40毫秒 | 80毫秒 | …… |
第2秒 | 1000毫秒 | 1040毫秒 | 1080毫秒 | …… |
第3秒 | 2000毫秒 | 2040毫秒 | 2080毫秒 | …… |
…… | …… | …… | …… | …… |
第201秒 | 200000毫秒 | 200040毫秒 | 200080毫秒 | …… |
第401秒 | 400000毫秒 | 400040毫秒 | 400080毫秒 | …… |
…… | …… | …… | …… | …… |
由于按照现有技术,播放时刻数据的字节数固定为8字节,将前200秒作为第一个子块,则存储该子块播放时刻数据的字节数总共为200*25*8=40000字节,存储下一个子块的播放时刻数据同样占40000字节。
而按照本发明的方式:将每个子块的第1秒的第一帧的对应播放时刻作为每个子块的基准时码,将每个子块中除第1秒的第一帧图像以外的每帧图像的对应播放时刻作为偏移时码。则参见表2,展示了按照本发明实施例进行存储时每秒的每帧图像的对应播放时刻。
表2
第一帧 | 第二帧 | 第三帧 | …… | |
第1秒 | 0毫秒 | 40毫秒 | 80毫秒 | …… |
第2秒 | 1000毫秒 | 1040毫秒 | 1080毫秒 | …… |
…… | …… | …… | …… | …… |
第201秒 | 0毫秒 | 40毫秒 | 80毫秒 | …… |
第202秒 | 1000毫秒 | 1040毫秒 | 1080毫秒 | …… |
…… | …… | …… | …… | …… |
第401秒 | 0毫秒 | 40毫秒 | 80毫秒 | …… |
第402秒 | 1000毫秒 | 1040毫秒 | 1080毫秒 | …… |
…… | …… | …… | …… | …… |
按照本发明实施例的方式,第一个子块的第200秒的第25帧的对应时间为:199960毫秒。则存储播放时刻数据时,最多只需三个字节的存储空间即可。若将前200秒作为第一个子块,则存储该子块播放时刻数据的字节数最多为200*25*3=15000字节。存储下一个子块的播放时刻数据同样最多占15000字节。因此,相比于现有技术,本发明实施例中将播放时码分为基准时码和偏移时码,对其分别进行存储,大大节省了存储空间。当播放多媒体文件,解析多媒体文件时,将每个子块的基准时码和偏移时码相加即可得到每秒的每帧图像的对应播放时刻。
索引容器205用于存储多媒体文件的索引数据。该索引数据包括多媒体文件的每帧图像与其播放时刻的一一对应关系。
优选的,在本发明的实施例中,索引容器205可分为第一索引容器和第二索引容器。其中,第一索引容器用于存储多媒体文件的第一索引数据。该第一索引数据包括预设时间内的每帧图像与其播放时刻的一一对应关系。该第一索引数据用于为多媒体文件提供预设时间(例如,多媒体文件的前10分钟)的索引定位。
第二索引容器用于存储除了第一索引数据以外的第二索引数据。第二索引数据包括多媒体文件中除预设时间外的每帧图像与其播放时刻的一一对应关系。该第二索引数据用于为多媒体文件提供除预设时间外的索引定位。
在本发明的实施例中,多媒体文件的索引数据的索引粒度可调。索引粒度可调是指可将每帧图像与其播放时刻的对应关系进行调整。例如,可调整使得索引数据中包括第1帧、第5帧、第10帧等图像与其播放时刻的对应关系;或使得索引数据中包括第1帧、第10帧、第20帧等图像与其播放时刻的对应关系。
通过将多媒体文件的索引数据分为第一索引数据和第二索引数据分别由第一索引容器和第二索引容器存储,可实现快速索引定位。例如,全部索引数据的大小为2M,第一索引数据为前10分钟的索引数据,其大小为100K。则第一索引数据可快速被下载,从而实现在播放多媒体文件时,第一索引数据会很快的被下载并解析。由此,将实现前10分钟的多媒体文件快速正常的播放,减少用户的等待时间,提升用户的体验。
预览视频帧容器206用于存储多媒体文件中的预览图片帧。当网络不佳,播放正在缓冲时,这些图片可提供未下载区域的视频画面预览,提高用户体验。
视频标签容器207用于存储多媒体文件的视频标签数据。视频标签数据是通过编辑合并到多媒体文件中的。具体的,视频标签数据包括与当前视频画面相关的提示信息、广告信息等。例如,当前视频画面展示一个人物,则视频标签数据可包括人物衣服相对应的广告信息。播放多媒体文件时,视频标签数据将被显示于视频画面上。
参见图2,为本发明实施例的多媒体文件制作方法的流程图。该方法包括以下步骤:
步骤S101、设置头容器、索引容器、轨道容器和集群容器。
具体的,头容器、索引容器、轨道容器和集群容器均包括ID字段、尺寸(size)字段和数据(data)字段。ID字段用于标识不同的容器。size字段用于标识data字段的长度。data字段用于存储数据。
步骤S102、获取多媒体数据、索引数据和头文件数据。
其中,多媒体数据包括:一路或多路视频流数据、音频流数据和字幕流数据。头文件数据包括文件类型和文件版本号识别信息。字幕流数据包括外部字幕数据。
索引数据包括第一索引数据和第二索引数据;第一索引数据包括第一预设时间内(例如,多媒体文件的前10分钟)的每帧图像与其播放时刻的一一对应关系;第二索引数据包括第二预设时间内(例如,多媒体文件的第11分钟至第120分钟)的每帧图像与其播放时刻的一一对应关系。此外,索引数据也可仅由整个多媒体文件的索引数据构成,例如,多媒体文件的时长为120分钟,则索引数据包括120分钟的每帧图像与其播放时刻的一一对应关系。采用将索引数据分为第一索引数据和第二索引数据的方式,可实现播放多媒体文件时的快速索引定位及播放,提升用户的体验。
步骤S103、分别建立一路或多路视频流数据、音频流数据、字幕流数据与一条或多条视频轨、音频轨、字幕轨的一一映射表。
该映射表即包括了视频轨、音频轨和字幕轨信息。各路视频流数据、音频流数据和字幕流数据对应一条视频轨、音频轨和字幕轨。视频轨、音频轨和字幕轨信息包括各路视频流数据、音频流数据和字幕流数据的流类型、码率、音频采样率、编码信息等。
步骤S104、将头文件数据、索引数据、映射表和多媒体数据分别存储到多媒体文件的头容器、索引容器、轨道容器和集群容器,以生成多媒体文件。
将多媒体数据存储到集群容器时,各路视频流数据、音频流数据和字幕流数据的时间戳保持同步。
本发明实施例的多媒体文件制作方法还包括:设置预览视频帧容器,预览视频帧容器包括ID字段、尺寸字段和数据字段;获取预览图片帧,并将预览图片帧存储到预览视频帧容器,以生成多媒体文件。
本发明实施例的多媒体文件制作方法还包括:设置视频标签容器,视频标签容器包括ID字段、尺寸字段和数据字段;获取视频标签数据,并将视频标签数据存储到视频标签容器,以生成多媒体文件。
本发明实施例的多媒体文件制作方法还包括:设置位置索引容器,位置索引容器包括ID字段、尺寸字段和数据字段;分别建立头容器、索引容器、集群容器、轨道容器、预览视频帧容器和视频标签容器与其存储位置的索引,并将索引存储到位置索引容器,以生成多媒体文件。
本发明实施例的多媒体文件制作方法还包括:设置媒体元信息容器,媒体元信息容器包括ID字段、尺寸字段和数据字段;获取多媒体文件的名称、大小、时长及制作时间等媒体元信息,并将其存储到媒体元信息容器,以生成多媒体文件。
本发明实施例的多媒体文件制作方法还包括:将集群容器中存储的视频数据、音频数据和字幕数据按照时间长度划分为多个子块,每个子块以数秒为单位;每个子块对应一个播放时码,播放时码包括基准时码和偏移时码。
本发明实施例的多媒体文件制作方法还包括:当与视频流数据、音频流数据、字幕流数据分别对应的视频轨、音频轨、字幕轨有多条时,设定多条视频轨、音频轨和字幕轨的优先级信息,并将优先级信息存储在轨道容器中。
在本发明实施例的多媒体文件制作方法中,多媒体数据中的一路或多路视频流数据和音频流数据是经过解码、缩放、裁剪和编码处理的。由此,本发明实施例的多媒体文件制作方法可实现多媒体文件的有损制作。应理解,也可不对多媒体数据进行解码、缩放、裁剪和编码处理,以实现多媒体文件的无损制作。本发明的实施例对此不作限制。
应理解,本发明实施例的上述步骤S101-S104的顺序可变换。
参见图3,为本发明实施例的多媒体播放方法的流程图。该播放方法包括:
步骤S201、加载并解析多媒体文件;
步骤S202、根据所解析出的信息,选择相应的解码器对所述多媒体文件进行解码;
步骤S203、播放解码后的多媒体文件。
该播放方法还包括:根据多媒体文件的轨道容器中的优先级信息,选择相应的视频轨、音频轨和字幕轨以播放解码后的多媒体文件。
具体的,参见图4,为本发明实施例的多媒体文件播放方法的详细流程图。在步骤S301,加载多媒体文件。该多媒体文件是采用本发明实施例的多媒体文件制作方法制作的多媒体文件。在步骤S302,解析多媒体文件,获取多媒体文件的基本信息、视频流数据、音频流数据、字幕流数据及编码信息。具体的,多媒体文件的基本信息是指存储在头容器中的文件类型及文件版本号识别信息、存储在媒体元信息容器中的媒体元信息。视频流数据、音频流数据和字幕流数据是从集群容器获取的。编码信息是从轨道容器中获取的。在步骤S303,判断解析出的信息中是否有视频流数据,若没有则执行步骤S305;若有则在步骤S304中根据编码信息中的视频编码信息加载对应解码器,对视频流数据进行解码并执行步骤S305。在步骤S305中,判断是否有音频流数据,若没有则执行步骤S307;若有则在步骤S306中根据编码信息中的音频编码信息加载对应解码器,对音频流数据进行解码并执行步骤S307。在步骤S307中,判断是否有字幕数据流,若没有则执行步骤S309;若有则在步骤S308中加载字幕工具(例如,VSFilter),以在播放时显示字幕。在步骤S309中,播放多媒体文件。
在播放多媒体文件的过程中,可根据用户的操作来预览和展示预览帧,例如,可将鼠标移至视频播放进度条上预览视频帧,也可在出现缓冲或暂停时,通过图片墙的形式展示预览图片帧。
此外,在播放的过程中,可将视频标签显示在相关视频画面上。
参见图5,为本发明实施例的多媒体文件播放***的结构图。该***包括:解析模块301、解码模块302和播放模块303。
解析模块301用于加载并解析多媒体文件,获取多媒体文件的头容器中的头文件数据及轨道容器中的映射表信息。
具体的,由于本发明实施例的多媒体文件包括Header box和Data box。且每个box的结构都是以扩展二进制多媒体语言(EBML,Extensible Binary Meta Language)的形式进行存储。若一个多媒体文件为:
1B514D568F428284716D766242……
则在解析的时候,首先解析第一个EBML元素(即第一个容器:头容器):读取一字节0x1B,根据EBML规则解析后此项数据占四个字节,取出剩下的三个字节,即0x1B514D56是头容器的ID,值为0x0B514D56。接下来再读取一字节0x8F,根据EBML规则解析后此项数据占一个字节,值为0x08,即头容器的数据字段的size为0x08,占八个字节,剩下的八个字节即是数据字段。解析完成第一个EBML元素后,依次解析后面的元素,以获得多媒体文件中存储的索引、索引数据、视频流数据、音频流数据、字幕流数据等。
解码模块302,用于根据解析模块301解析出的信息,选择相应的解码器对多媒体文件进行解码。
具体的,由于本发明实施例的多媒体文件中的轨道容器中的视频轨、音频轨和字幕轨信息包括各路视频流数据、音频流数据和字幕流数据的编码信息,因此,可根据解析出的编码信息,采用相应的解码器对多媒体文件进行解码。由此,本发明实施例的多媒体文件可存储不同编码格式(例如MPEG-1、MPEG-2、MPEG-4、MPEG-4Part10(AVC/H.264)、Media Video、RealVideo、AC-3、AAC等)编码的视频流数据、音频流数据和字幕流数据等。
播放模块303,用于播放解码后的多媒体文件。播放模块303还用于根据多媒体文件的轨道容器中的优先级信息,选择相应的视频轨、音频轨和字幕轨以播放解码后的多媒体文件。播放模块303播放解码后的多媒体文件包括:播放图像帧(包括视频、音频和字幕)、预览图片帧、视频标签等。
本发明实施例的多媒体文件制作方法将一路或多路视频流数据、音频流数据、字幕流数据、索引数据、预览帧数据和视频标签数据进行合并,生成多媒体文件。其中,一路或多路视频流数据、音频流数据和字幕流数据是从本地存储器或网络获取的;索引数据和预览帧数据根据获取的视频流数据、音频流数据和字幕流数据生成,具体的生成方法为现有技术,在此不再赘述;视频标签数据可从本地存储器或网络获取,也可在制作时编辑产生。
多媒体文件播放***获取多媒体文件,并进行解析、解码等操作后,将多媒体文件进行播放。采用本发明实施例的多媒体文件制作方法制作的多媒体文件可包含多路视频数据,音频数据与字幕数据;字幕流数据与音视频数据流混流存在在同一块区域,用户可任意切换字幕流;能够实现快速定位及可变粒度索引;采用模块化的层次结构(头容器和数据容器结构),可任意扩展某个结构;由于有预览图片帧,能为网络状况不佳时提供更好的播放体验,在缓冲时,可通过预览视频帧容器获得未下载数据段的视频图像预览;视频标签可向用户展示更多的内容。且由于本发明实施例的多媒体文件中的各个容器均包括ID字段、size字段和数据字段,因此,通过每个容器的ID字段即可标识容器的开始,由此,解析的时候可采用CRC-32校验以保证每部分数据的完整性,使得本发明实施例的多媒体文件在无索引、未下载完成、数据损坏的情况下仍可以播放。
由于在制作多媒体文件时通过轨道容器记录了各个数据流的编码信息,因此,本发明实施例的多媒体文件可以容纳几乎所有编码类型的视频、音频及字幕流。播放解析时,采用相应的解码器进行解析即可实现正常播放。
此外,由于本发明实施例的多媒体文件采用EBML,而EBML的size字段可为64位,因此,可突破文件大小最大4GB的限制。且由于本发明实施例的多媒体文件的播放时码采用了基准时码和偏移时码的方式,进一步节省了存储空间,使得存储同等码率、同等质量的多媒体数据时,本发明实施例的多媒体文件能够比现有技术节省10M-30M的空间。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (12)
1.一种多媒体文件制作方法,其特征在于,所述方法包括:
设置头容器、索引容器、轨道容器和集群容器;所述头容器、索引容器、轨道容器和集群容器均包括ID字段、尺寸字段和数据字段;
获取多媒体数据、索引数据和头文件数据;其中,所述多媒体数据包括:一路或多路视频流数据、音频流数据和字幕流数据;所述头文件数据包括文件类型和文件版本号识别信息;
分别建立所述一路或多路视频流数据、音频流数据、字幕流数据与一条或多条视频轨、音频轨、字幕轨的一一映射表,所述映射表内的视频轨、音频轨和字幕轨信息包括各路视频流数据、音频流数据和字幕流数据的编码信息;
将所述头文件数据、索引数据、映射表和多媒体数据分别存储到所述多媒体文件的头容器、索引容器、轨道容器和集群容器,以生成所述多媒体文件。
2.根据权利要求1所述的多媒体文件制作方法,其特征在于,所述方法还包括:设置预览视频帧容器,所述预览视频帧容器包括ID字段、尺寸字段和数据字段;获取预览图片帧,并将所述预览图片帧存储到预览视频帧容器,以生成所述多媒体文件。
3.根据权利要求2所述的多媒体文件制作方法,其特征在于,所述方法还包括:设置视频标签容器,所述视频标签容器包括ID字段、尺寸字段和数据字段;获取视频标签数据,并将所述视频标签数据存储到视频标签容器,以生成所述多媒体文件。
4.根据权利要求3所述的多媒体文件制作方法,其特征在于,所述方法还包括:设置位置索引容器,所述位置索引容器包括ID字段、尺寸字段和数据字段;分别建立头容器、索引容器、集群容器、轨道容器、预览视频帧容器和视频标签容器与其存储位置的索引,并将所述索引存储到位置索引容器,以生成所述多媒体文件。
5.根据权利要求1-4任一项所述的多媒体文件制作方法,其特征在于,所述方法还包括:设置媒体元信息容器,所述媒体元信息容器包括ID字段、尺寸字段和数据字段;获取多媒体文件的媒体元信息,包括名称、大小、时长及制作时间,并将其存储到媒体元信息容器,以生成多媒体文件。
6.根据权利要求1所述的多媒体文件制作方法,其特征在于,所述索引数据包括第一索引数据和第二索引数据;
所述第一索引数据包括第一预设时间内的每帧图像与其播放时刻的一一对应关系;
所述第二索引数据包括第二预设时间内的每帧图像与其播放时刻的一一对应关系。
7.根据权利要求1所述的多媒体文件制作方法,其特征在于,所述方法还包括:
将所述集群容器中存储的视频流数据、音频流数据和字幕流数据按照时间长度划分为多个子块,每个子块以数秒为单位;
所述每个子块对应一个播放时码,所述播放时码包括基准时码和偏移时码。
8.根据权利要求1所述的多媒体文件制作方法,其特征在于,所述方法还包括:当与视频流数据、音频流数据、字幕流数据分别对应的视频轨、音频轨、字幕轨有多条时,设定多条视频轨、音频轨和字幕轨的优先级信息,并将所述优先级信息存储在所述轨道容器中。
9.一种多媒体文件播放方法,用于播放采用权利要求1-8任一项所述的方法所制作的多媒体文件,其特征在于,所述方法包括:
加载并解析多媒体文件,获取多媒体文件的基本信息、视频流数据、音频流数据、字幕流数据及编码信息;
根据所解析出的信息,选择相应的解码器对所述多媒体文件进行解码;
播放解码后的多媒体文件。
10.根据权利要求9所述的多媒体文件播放方法,其特征在于,所述播放方法还包括:根据多媒体文件的轨道容器中的优先级信息,选择相应的视频轨、音频轨和字幕轨以播放解码后的多媒体文件。
11.一种多媒体文件播放***,用于播放采用权利要求1-8任一项所述的方法所制作的多媒体文件,其特征在于,所述***包括:解析模块、解码模块和播放模块;
所述解析模块用于解析所述多媒体文件,获取多媒体文件的基本信息、视频流数据、音频流数据、字幕流数据及编码信息;
所述解码模块,用于根据所述解析模块解析出的信息,选择相应的解码器对所述多媒体文件进行解码;
所述播放模块,用于播放解码后的多媒体文件。
12.根据权利要求11所述的多媒体文件播放***,其特征在于,所述播放模块还用于根据多媒体文件的轨道容器中的优先级信息,选择相应的视频轨、音频轨和字幕轨以播放解码后的多媒体文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310487869.9A CN104575547B (zh) | 2013-10-17 | 2013-10-17 | 多媒体文件制作方法、播放方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310487869.9A CN104575547B (zh) | 2013-10-17 | 2013-10-17 | 多媒体文件制作方法、播放方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104575547A CN104575547A (zh) | 2015-04-29 |
CN104575547B true CN104575547B (zh) | 2017-12-22 |
Family
ID=53091438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310487869.9A Expired - Fee Related CN104575547B (zh) | 2013-10-17 | 2013-10-17 | 多媒体文件制作方法、播放方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104575547B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3092796B1 (en) * | 2014-01-07 | 2020-06-17 | Canon Kabushiki Kaisha | Method, device, and computer program for encoding inter-layer dependencies |
CN106792069A (zh) * | 2015-11-19 | 2017-05-31 | 北京国双科技有限公司 | 多媒体文件播放方法及装置 |
CN107426600B (zh) * | 2017-06-30 | 2019-11-08 | 北京威动科技有限公司 | 切换音轨和字幕轨的播放方法及装置 |
CN107302715A (zh) * | 2017-08-10 | 2017-10-27 | 北京元心科技有限公司 | 多媒体文件的播放方法、封装方法以及相应的装置、终端 |
CN108259965B (zh) * | 2018-03-31 | 2020-05-12 | 湖南广播电视台广播传媒中心 | 一种视频剪辑方法和剪辑*** |
CN110545456B (zh) | 2018-05-29 | 2022-04-01 | 北京字节跳动网络技术有限公司 | 媒体文件的同步播放方法、装置及存储介质 |
CN110944225B (zh) * | 2019-11-20 | 2022-10-04 | 武汉长江通信产业集团股份有限公司 | 一种基于html5的不同帧率音视频的同步方法及装置 |
CN111901538B (zh) * | 2020-07-23 | 2023-02-17 | 北京字节跳动网络技术有限公司 | 一种字幕生成方法、装置、设备及存储介质 |
CN112969043B (zh) * | 2021-04-28 | 2021-08-24 | 北京优幕科技有限责任公司 | 媒体文件生成、播放方法及设备 |
CN115243108B (zh) * | 2022-07-25 | 2023-04-11 | 深圳市腾客科技有限公司 | 一种解码播放方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159817A (zh) * | 2007-11-22 | 2008-04-09 | 无敌科技(西安)有限公司 | 一种音乐影像的编辑***及其方法 |
CN101227602A (zh) * | 2007-01-18 | 2008-07-23 | 中兴通讯股份有限公司 | 文件存储方法和文件播放方法 |
CN101261865A (zh) * | 2007-04-20 | 2008-09-10 | 炬力集成电路设计有限公司 | 媒体电子文件的制作方法、装置及其播放设备及方法 |
CN101369440A (zh) * | 2007-08-15 | 2009-02-18 | 凌阳科技股份有限公司 | 多媒体文件的产生与播放方法及储存此文件的记录媒体 |
CN101540847A (zh) * | 2008-03-21 | 2009-09-23 | 株式会社康巴思 | 字幕制作***及字幕制作方法 |
CN102598676A (zh) * | 2009-11-06 | 2012-07-18 | 索尼美国公司 | 立体叠加层偏移创建和编辑 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090260028A1 (en) * | 2008-04-10 | 2009-10-15 | Manufacturing Resources International, Inc. | Video buffer for use in advertisement displays |
US8707381B2 (en) * | 2009-09-22 | 2014-04-22 | Caption Colorado L.L.C. | Caption and/or metadata synchronization for replay of previously or simultaneously recorded live programs |
-
2013
- 2013-10-17 CN CN201310487869.9A patent/CN104575547B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227602A (zh) * | 2007-01-18 | 2008-07-23 | 中兴通讯股份有限公司 | 文件存储方法和文件播放方法 |
CN101261865A (zh) * | 2007-04-20 | 2008-09-10 | 炬力集成电路设计有限公司 | 媒体电子文件的制作方法、装置及其播放设备及方法 |
CN101369440A (zh) * | 2007-08-15 | 2009-02-18 | 凌阳科技股份有限公司 | 多媒体文件的产生与播放方法及储存此文件的记录媒体 |
CN101159817A (zh) * | 2007-11-22 | 2008-04-09 | 无敌科技(西安)有限公司 | 一种音乐影像的编辑***及其方法 |
CN101540847A (zh) * | 2008-03-21 | 2009-09-23 | 株式会社康巴思 | 字幕制作***及字幕制作方法 |
CN102598676A (zh) * | 2009-11-06 | 2012-07-18 | 索尼美国公司 | 立体叠加层偏移创建和编辑 |
Also Published As
Publication number | Publication date |
---|---|
CN104575547A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104575547B (zh) | 多媒体文件制作方法、播放方法及*** | |
CN102404624B (zh) | 一种数字机顶盒用支持硬件解码的全格式媒体播放器 | |
US7221801B2 (en) | Method and system for generating input file using meta language regarding graphic data compression | |
EP1980958A2 (en) | Apparatus and method for generating a data file or for reading a data file | |
CN103929657B (zh) | 视频复用设备和方法、复用视频解码设备和方法 | |
KR20130133266A (ko) | 자막들을 포함한 미디어의 적응적 비트레이트 스트리밍을 위한 시스템들 및 방법들 | |
CN101656099B (zh) | 一种用于mp3播放器的音视频制作和播放方法 | |
CN101778282B (zh) | 一种不同媒体文件并发播放方法 | |
CN102264004B (zh) | 一种防止关键帧缺失而不能seek的方法及装置 | |
EP2092739A1 (en) | Encoding method and apparatus and decoding method and apparatus | |
CN101604545A (zh) | 生成设备、生成方法以及程序 | |
CN101292532A (zh) | 用于在移动广播***中接收多个流的设备和方法 | |
US20020198905A1 (en) | Transport hint table for synchronizing delivery time between multimedia content and multimedia content descriptions | |
KR20110101104A (ko) | 복수 개의 스트림으로 구성된 컨텐츠 파일 송수신 장치 및 방법 | |
CN100369481C (zh) | 代码变换方法及其装置 | |
CN104853132A (zh) | 一种延时视频录制方法及*** | |
CN101604544B (zh) | 再生设备、再生方法、程序以及数据结构 | |
CN106034252B (zh) | 一种流媒体处理方法及装置 | |
CN112019880A (zh) | 一种任意帧率视频文件拼接方法 | |
KR101681835B1 (ko) | 실감 효과 미디어 데이터 파일 구성 방법 및 장치, 실감 효과 미디어 데이터 파일 재생 방법 및 장치 및 실감 효과 미디어 데이터 파일 구조 | |
CN103430558A (zh) | 用于优化视频流的方法 | |
CN102333242A (zh) | 一种流媒体语言信息匹配装置及方法 | |
CN105100820B (zh) | 数字媒体文件的编码方法、解码方法、编码装置及解码装置 | |
CN102438180A (zh) | 电视游戏的实现方法及***、数字电视终端 | |
CN113315931B (zh) | 基于hls流的数据处理方法及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171222 Termination date: 20201017 |
|
CF01 | Termination of patent right due to non-payment of annual fee |