CN101753946A - 一种视频文件和音频文件的合并方法及*** - Google Patents

一种视频文件和音频文件的合并方法及*** Download PDF

Info

Publication number
CN101753946A
CN101753946A CN 200910243436 CN200910243436A CN101753946A CN 101753946 A CN101753946 A CN 101753946A CN 200910243436 CN200910243436 CN 200910243436 CN 200910243436 A CN200910243436 A CN 200910243436A CN 101753946 A CN101753946 A CN 101753946A
Authority
CN
China
Prior art keywords
file
video
audio
data
audio file
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
CN 200910243436
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.)
Wuxi Vimicro Corp
Original Assignee
Vimicro Corp
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 Vimicro Corp filed Critical Vimicro Corp
Priority to CN 200910243436 priority Critical patent/CN101753946A/zh
Publication of CN101753946A publication Critical patent/CN101753946A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

本发明公开了一种视频文件和音频文件的合并方法及***,属于文件合并技术领域。现有技术中的视频文件和音频文件常常分离存储,这增加了存储空间,并给传输带来不便。本发明首先将视频数据和音频数据分别压缩存储在视频文件和音频文件中;将视频数据的索引信息和时间戳,音频数据的索引信息和时间戳分别存储在视频索引文件和音频索引文件中。然后根据视频索引文件和音频索引文件按帧读取视频文件和音频文件中数据,合并存储在一个视音频文件的数据区中;并将视频数据和音频数据在视音频文件中的存储位置及视频索引文件和音频索引文件中的时间戳记录到视音频文件的索引表中。本发明特别适用于将分离的视频文件和音频文件合并后进行网络传输的场合。

Description

一种视频文件和音频文件的合并方法及***
技术领域
本发明属于文件合并技术领域,具体涉及一种视频文件和音频文件合并方法及***,特别适用于将分离的视频文件和音频文件合并后进行网络传输的场合。
背景技术
视频数据和音频数据常常分离存储,即将视频数据和音频数据存储成两个文件。这样,一方面增加了视频数据和音频数据的存储空间;另一方面在网络传输视音频文件时,视频文件和音频文件需要分别传输,操作不便。
此外,国际标准的数字电影格式多为MPEG4格式,而标准的MPEG4格式音频数据采用的是AAC数字音频,而AAC数字音频需要支付高昂的版权费,相比而言AC3数字音频的声音质量与AAC数字音频的声音质量相差不多,但AC3数字音频却没有高昂的版权费。因此,如果MPEG4视频文件能够与AC3音频文件合并,则无疑会降低数字电影的成本。
MPEG4是为在国际互联网络上或移动通信设备(例如移动电话)上实时传输音/视频讯号而制定的最新MPEG(Moving Picture Expert Group,运动图像专家组)标准,MPEG4采用Object Based方式解压缩,压缩比指标远远优于以上几种,压缩倍数为450倍(静态图像可达800倍),分辨率输入可从320×240到1280×1024,这是同质量的MPEG1和MJEPG的十倍多。
MPEG4使用“图层(layer)”方式,能够智能化选择影像的不同之处,是可根据图像内容,将其中的对象(人物、物体、背景)分离出来分别进行压缩,使图文件容量大幅缩减,而加速音/视频的传输,这不仅仅大大提高了压缩比,也使图像探测的功能和准确性更充分的体现出来。
在网络传输中可以设定MPEG4的码流速率,清晰度也可在一定的范围内作相应的变化,这样便于用户根据自己对录像时间、传输路数和清晰度的不同要求进行不同的设置,大大提高了***使用时的适应性和灵活性。也可采用动态帧测技术,动态时快录,静态时慢录,从而减少平均数据量,节省存储空间。而且当在传输有误码或丢包现象时,MPEG4受到的影响很小,并且能迅速恢复。
AC(Audio Coding)3提供的环绕声***由五个全频域声道加一个超低音声道组成,所以被称作5.1个声道。五个声道包括前置的″左声道″、″中置声道″、″右声道″、后置的″左环绕声道″和″右环绕声道″。这些声道的频率范围均为全频域响应3-20000Hz。第六个声道也就是超低音声道包含了一些额外的低音信息,使得一些场景如***、撞击声等的效果更好。由于这个声道的频率响应为3-120Hz,所以称″.1″声道。
AC-3是根据感觉来开发的编码***多声道环绕声,它将每一种声音的频率根据人耳的听觉特性区分为许多窄小频段,在编码过程中再根据音响心理学的原理进行分析,保留有效的音频,删除多作的信号和各种噪声频率,使重现的声音更加纯净,分离度极高。
发明内容
针对现有技术中存在的缺陷,本发明的目的是提供一种视频文件和音频文件合并方法及***。该方法及***能够有效地减少视频文件和音频文件的存储空间,便于文件的网络传输。
为了实现上述目的,本发明采用的技术方案如下:
一种视频文件和音频文件的合并方法,包括以下步骤:
(1)将视频数据和音频数据分别存储在视频文件和音频文件中;将视频数据的索引信息和时间戳,音频数据的索引信息和时间戳分别存储在视频索引文件和音频索引文件中;
(2)根据视频索引文件和音频索引文件按帧读取视频文件和音频文件中数据,合并存储在一个视音频文件的数据区中;并将视频数据和音频数据在视音频文件中的存储位置及视频索引文件和音频索引文件中的时间戳记录到视音频文件的索引表中。
如上所述的视频文件和音频文件的合并方法,步骤(2)中视频数据和音频数据按照每帧对应的时间戳顺序间隔存储在视音频文件的数据区中。
如上所述的视频文件和音频文件的合并方法,其中,视频数据和音频数据按照每帧对应的时间戳顺序间隔存储的过程包括以下步骤:
①根据视频索引文件读取视频文件中的一帧视频数据,写入视音频文件的数据区中,并获得该帧视频数据的时间戳;
②根据该帧视频数据的时间戳及音频索引文件读取音频文件中与该帧视频数据时间戳相对应的音频数据,写入视音频文件数据区中该帧视频数据后;
③将时间戳及该帧视频数据和音频数据在视音频文件中的存储位置记录到视音频文件的索引表中;
④重复步骤①至步骤③,直到将视频文件和音频文件合并完毕。
如上所述的视频文件和音频文件的合并方法,步骤③中,按照原视频文件和音频文件的格式规范将视频数据和音频数据在视音频文件中的存储位置记录到视音频文件的索引表中。
如上所述的视频文件和音频文件的合并方法,步骤(1)中,将视频数据压缩存储成只含视频数据的MPEG4文件,将音频数据压缩存储成AC3音频文件。
一种视频文件和音频文件的合并***,包括:
存储装置,用于将视频数据和音频数据分别压缩存储在视频文件和音频文件中;将视频数据的索引信息和时间戳,音频数据的索引信息和时间戳分别存储在视频索引文件和音频索引文件中;
读取装置,用于根据视频索引文件和音频索引文件按帧读取视频文件和音频文件中的数据;
合并装置,用于将读取装置读取的视频帧数据和音频帧数据合并存储在一个视音频文件的数据区中;并将视频数据和音频数据在视音频文件中的存储位置及视频索引文件和音频索引文件中的时间戳记录到视音频文件的索引表中。
如上所述的视频文件和音频文件的合并***,其中,存储装置存储的视频文件为MPEG4视频文件,音频文件为AC3音频文件。
如上所述的视频文件和音频文件的合并***,其中,合并装置将视频数据和音频数据按照每帧对应的时间戳顺序间隔存储在视音频文件的数据区中。
如上所述的视频文件和音频文件的合并***,其中,合并装置按照原视频文件和音频文件格式规范将视频数据和音频数据在视音频文件中的存储位置记录到视音频文件的索引表中。
本发明所述方法及***,能够将分离的视频文件和音频文件合并成一个视音频文件,不仅节省了视频文件和音频文件的存储空间,而且便于视频文件和音频文件的网络传输,提高了网络传输效率。将本发明应用于MPEG4视频文件和AC3音频文件的合并,在不降低声音质量的前提下,还能降低MPEG4影音的制作成本。
附图说明
图1是具体实施方式中视频文件和音频文件合并***的优选实施方式的结构框图;
图2是具体实施方式中采用图1所示***将视频文件和音频文件合并的流程图;
图3是具体实施方式中将视频数据和音频数据间隔存储的流程图;
图4是具体实施方式中合并后的视音频文件的结构示意图。
具体实施方式
下面结合具体实施方式和附图对本发明进行详细描述。
图1出示了本发明所述视频文件和音频文件合并***的优选实施方式结构。该***包括存储装置11、与存储装置11连接的读取装置12、与读取装置12连接的合并装置13。
存储装置11用于将待合并的视频数据和音频数据分别压缩存储在视频文件和音频文件中;将视频数据的索引信息和时间戳,音频数据的索引信息和时间戳分别存储在视频索引文件和音频索引文件中。所述时间戳是指标识帧数据在播放过程应播出的时间。
读取装置12用于根据视频索引文件和音频索引文件按帧读取视频文件和音频文件中的数据。
合并装置13用于将读取装置12读取的视频帧数据和音频帧数据合并存储在一个视音频文件的数据区中;并将视频数据和音频数据在视音频文件中的存储位置及视频索引文件和音频索引文件中的时间戳记录到视音频文件的索引表中。
图2出示了采用图1所示***合并视频文件和音频文件的方法流程。该方法主要包括以下步骤:
(1)将视频数据和音频数据分别存储在视频文件和音频文件中;将视频数据的索引信息和时间戳,音频数据的索引信息和时间戳分别存储在视频索引文件和音频索引文件中;
(2)根据视频索引文件和音频索引文件按帧读取视频文件和音频文件中数据,合并存储在一个视音频文件的数据区中;并将视频数据和音频数据在视音频文件中的存储位置及视频索引文件和音频索引文件中的时间戳记录到视音频文件的索引表中。
下面以视频文件为MPEG4视频文件,音频文件为AC3音频文件为例进一步说明视频文件和音频文件的合并过程。
首先将视频数据压缩成只含视频数据的MPEG4文件,将音频数据压缩成AC3音频文件;然后创建视频索引文件和音频索引文件,将视频数据和音频数据的索引信息分别存储其中;最后根据视频索引文件和音频索引文件将MPEG4视频文件和AC3音频文件合并。
为了保证合并后的视音频文件的播放效率,本实施例将视频数据和音频数据按照每帧对应的时间戳顺序间隔存储在视音频文件的数据区中,即将时间戳相同的视频数据和音频数据存储在相邻位置。图3出示了一种间隔存储视频数据和音频数据的方法流程,该方法包括以下步骤:
①根据视频索引文件读取视频文件中的一帧MPEG4视频数据,写入视音频文件的数据区中,并获得该帧视频数据的时间戳;
②根据步骤①中的时间戳及音频索引文件读取音频文件中与该帧视频数据时间戳相对应的AC3音频数据(可能存在多帧),写入视音频文件数据区中该帧视频数据后;
③将步骤②中的时间戳及该帧视频数据和音频数据在视音频文件中的存储位置记录到视音频文件的索引表中;
④重复步骤①至步骤③,直到将视频文件和音频文件合并完毕。
合并后的视音频文件的结构如图4所示。合并后的文件应该符合现有音频和视频文件规范,即在填写索引表时按照原音频和视频文件格式规范填写便可。这样,合并后的文件不仅适用于专用的播放***,而且适用于通用的播放***。
下面给出MPEG4视频文件和AC3音频文件合并时部分盒子定义的编码示例。
1.moov:trak
容器盒子。
aligned(8)class TrackBox extends Box(‘trak’){}
2.moov:trak:tkhd
track头在trak中有且只有一个。
aligned(8)class TrackHeaderBox extends FullBox(‘tkhd’,version,flags)
 {
  if(version==1){
     unsigned int(64)creation_time;
     unsigned int(64)modification_time;
     unsigned int(32)track_ID;
     const unsigned int(32)reserved=0;
     unsigned int(64)duration;
  }else{//version==0
     unsigned int(32)creation_time;
     unsigned int(32)modification_time;
     unsigned int(32)track_ID;
const unsigned int(32)reserved=0;
     unsigned int(32)duration;
  }
  const unsigned int(32)[2]reserved=0;
  template int(16)layer=0;
  template int(16)alternate_group=0;
  template int(16)volume={if track_is_audio 0x0100 else 0};
  const unsigned int(16)reserved=0;
  template int(32)[9]matrix=
     {0x00010000,0,0,0,0x00010000,0,0,0,0x40000000};
  //unity matrix
  unsigned int(32)width;
  unsigned int(32)height;
}
这个盒子,对于加入的AC3音频,需要创建一个新的,新盒子要填写creation_time、modification_time、track_ID、duration_flags。
其中flag=Track_enabled|Track_in_movie|Track_in_preview=0x000007。
时间表示方式与mvhd相同,track_ID从mvhd中获取一个新的,duration是以mvhd中定义的timescale为基础的持续时间,如不能确定,则写全1。
alternate_group,如果有多个音频,那么可以将这多个音频归到一个trak组中,这里的数字表示组的数字,同组的trak,这个数字相同,不同表示不在一个组中。
3.moov:trak:tref、moov:trak:edts、moov:trak:edts:elst
tref与分断开的trak连接,和hint有关。
edts以及里面的盒子,与编辑功能有关,对于新建ac3音频是用不到的。
4.moov:trak:mdia
媒体描述,容器盒子,在trak中,有且只有一个。
aligned(8)class MediaBox extends Box(‘mdia’){}
5.moov:trak:mdia:mdhd
媒体描述头,要有一个。
aligned(8)class MediaHeaderBox extends FullBox(‘mdhd’,version,0)
{
   if(version==1){
     unsigned int(64)creation_time;
     unsigned int(64)modification_time;
     unsigned int(32)timescale;
     unsigned int(64)duration;
  }else{//version==0
     unsigned int(32)creation_time;
     unsigned int(32)modification_time;
     unsigned int(32)timescale;
     unsigned int(32)duration;
  }
  bit(1)pad=0;
  unsigned int(5)[3]language;//ISO-639-2/T language code
  unsigned int(16)pre_defined=0;
}
对AC3音频来说要填上数据,其中,language为代码,中文是cho,英文是eng,内容符合ISO-639-2/T language code规范。
6.moov:trak:mdia:hdlr
媒体描述头,要有一个。
aligned(8)class HandlerBox extends FullBox(‘hdlr’,version=0,0)
{
  unsigned int(32)pre_defined=0;
  unsigned int(32)handler_type;
  const unsigned int(32)[3]reserved=0;
  string name;
}
对于AC3音频,则填写handler_type=′soun′,string name非零结尾的UTF-8字串,用来检查和除错用的标记,填写′AC3′。
考虑多声音支持,应该定义在音频trak内部,这样才能保证完整性而在音频相关的定义中,只有mdhd定义了语言,在hdlr中定义了字串。保留字也只有hdlr中,有12字节。
而汉语还有与方言有关的定义,国际标准的语言代码中,没有对类似粤语的支持等,这里只能自己扩展定义这个字段了,可利用一个保留字定义。
7.moov:trak:mdia:minf
媒体信息盒子,容器盒子,要有一个。
aligned(8)class MediaInformationBox extends Box(‘minf’){}
moov:trak:mdia:minf下面,有‘vmhd’,‘smhd’,’hmhd’,‘nmhd’,应该是只有一个,且是四个中的一个。对于新加音频,也可以考虑不添加这类盒子。
   aligned(8)class SoundMediaHeaderBox extends FullBox(‘smhd’,version=0,
0)
{
   template int(16)balance=0;
   const unsigned int(16)reserved=0;
}
8.moov:trak:mdia:minf:dinf
容器盒子,定义媒体的负载具***置,要有一个。
aligned(8)class DataInformationBox extends Box(‘dinf’){}
对于AC3音频,要写一个新的盒子。定义数据负载的位置。dinf下边只能是url、urn、dref三种盒子。对于AC3音频,由于数据在内部,用最简单的定义形式,通常是定义一个dref盒子,嵌套一个url的盒子,然后定义为空。
aligned(8)class DataEntryUrlBox(bit(24)flags)
   extends FullBox(‘url’,version=0,flags)
{
   string location;
}
aligned(8)class DataReferenceBox
   extends FullBox(‘dref’,version=0,0)
{
   unsigned int(32)entry_count;
   for(i=1;i?entry_count;i++){entry_count;i++){
      DataEntryBox(entry_version,entry_flags)data_entry;
   }
}
其中,entry_count=1,flag=0x00000001表示数据在内部,string=空,连同dinf盒子,实际编码形式如下:0x24,′dinf,0x1C,′dref,0,1,0x0C,′url′,1。
9.moov:trak:mdia:minf:stbl
重要的线索盒子,与sample有关,“Sample Table”需要有且只有一个盒子对应trak。
aligned(8)class SampleTableBox extends Box(‘stbl’){}
容器盒子,对于AC3音频,要新建。
10.moov:trak:mdia:minf:stbl:stts
有且只有一个。
aligned(8)class TimeToSampleBox extends FullBox(’stts’,version=0,0)
{
  unsigned int(32)entry_count;
  int i;
  for(i=0;i<entry_count;i++){
     unsigned int(32)sample_count;
     unsigned int(32)sample_delta;
  }
}
对于AC3音频,方案是,一个sample中,包含一个ac3 frame,所以数值是固定的。
entry_count=1,然后,后面跟一个记录项目。
entry_count=1。
sample_count=所有ac3的帧数。
sample_delta=按timescale计算的每sample持续的时间,根据ac3实际,对48KHz采样是32ms。
11.moov:trak:mdia:minf:stbl:ctts
对于音频无意义,在视频中的数据不改变,直接保留,音频中没有。
12.moov:trak:mdia:minf:stbl:stsd
有且只有一个,定义sample的来源,以dinf:dref中指定的依据为基础。对于数据就在本身文件中的情形,是最简单的情形,可用最简单的方式。对于音频和其他trak来说,stsd的结构是不同的,但其他的盒子,可以原样保留,不需要修改。
     aligned(8) abstract class SampleEntry(unsigned int(32)format)extends
Box(format)
    {
  const unsigned int(8)[6]reserved=0;
  unsigned int(16)data_reference_index;
}
class AudioSampleEntry(codingname)extends SampleEntry(codingname)
{
  const unsigned int(32)[2]reserved=0;
  template unsigned int(16)channelcount=2;
  template unsigned int(16)samplesize=16;
  unsigned int(16)pre_defined=0;
  const unsigned int(16)reserved=0;
  template unsigned int(32)samplerate=(timescale of media)<<16;
}
aligned(8)class SampleDescriptionBox(unsigned int(32)handler_type)
  extends FullBox(′stsd′,0,0)
{
  int i;
  unsigned int(32)entry_count;
  for(i=1;i.entry_count;i++){entry_count;i++)
  {
     switch(handler_type)
     {
     case‘soun’://for audio tracks
         AudioSampleEntry();
         break;
     case‘vide’://for video tracks
         VisualSampleEntry();
         break;
     case‘hint’://Hint track
         HintSampleEntry();
         break;
     }
  }
}
因为媒体数据就在本身文件中,因此,dinf:dref是最简单格式,这里也就相应的简单了。
对于音频来说,使用AudioSampleEntry()数据结构。
为了使播放器能够正确识别添加的AC3的trak,在stsd里添加‘esds’盒子,具体定义如下:
aligned(8)class AC3ExtendBox extends FullBox(‘esds’,version=0,0){
unsigned int(8)version=0;         //版本号
unsigned int(8)ac3_dialect;          //方言
  unsigned int(16)ac3_frame_info; //AC3 header
  unsigned int(32)ac3__bit_rate;//bps of ac3 stream
}
ac3_frame_info每个bit的具体说明如下:
语义             bit数    助记符
bsid             5        bslbf
bsmod            3        bslbf
reserved         2        define to 00b
acmod            3        bslbf
surround_mode    2        bslbf
lfe on           1        bool
bsid:和AC3标准定义相同,默认是01000。
bsmod:和AC3标准定义相同。
bsmod      acmod       Type of Service
000        any         main audio service:complete main(CM)
001        any         main audio service:music and effects(ME)
010        any         associated service:visually impaired(VI)
011        any         associated service:hearing impaired(HI)
100        any         associated service:dialogue(D)
101        any         associated service:commentary(C)
110        any         associated service:emergency(E)
111        001         associated service:voice over(VO)
111        010-111     main audio service:karaoke
acmode:在DVB中,这个字段是4个比特,但是AC3标准中,这个字段是3个比特。在DVB中,当这个字段的最高位是1时,后3个比特代表声道的总数,在stsd盒子中声道的总数已经定义了,因此,这里用3个比特定义acmod。
acmod      CodingMod    nfchans    Channel Array Ordering
000        1+1          2          Ch1,Ch2
001        1/0          1          C
010        2/0          2          L,R
011        3/0          3          L,C,R
100        2/1          3          L,R,S
101        3/1          4          L,C,R,S
110        2/2          4          L,R,Ls,Rs
111        3/2          5          L,C,R,Ls,Rs
Karaoke模式下:
acmod    CodingMode    Normal     Karaoke
010      2/0           L,R       L,R
011      3/0           L,C,R    L,M,R
100        2/1            L,R,S             L,R,V1
101        3/1            L,C,R,S          L,M,R,V1
110        2/2            L,R,Ls,Rs        L,R,V1,V2
111        3/2            L,C,R,Ls,Rs     L,M,R,V1,V2
AudioSampleEntry()具体定义如下:
class AudioSampleEntry(codingname)extends SampleEntry(coding-name=‘AC-3’)
    {
       const unsigned int(32)[2]reserved=0;
       template unsigned int(16)channelcount=number_of_ac3_channels;
       template unsigned int(16)samplesize=16;
       unsigned int(16)pre_defined=0;
       const unsigned int(16)reserved=0;
       template unsigned int(32)samplerate=(timescale of media)<<16;
       //for ac3 extend,we defined below:
       AC3ExtendBox      AC3ESDS;
    }
13.moov:trak:mdia:minf:stbl:stsz、moov:trak:mdia:minf:stbl:stz2
两者用一个。用来列表定义每个sample的长度。对于ac3音频来说,如果每个sample中固定包含一个frame,那么sample的长度是固定的,可以用最简单的方式描述。这里用stsz,可以用一个项目说明全部,stz2是被设计来使得sample长度比较小且不固定的时候,节约列表空间用的。
aligned(8)class SampleSizeBox extends FullBox(‘stsz’,version=0,0)
{
  unsigned int(32)sample_size;
  unsigned int(32)sample_count;
  if(sample_size==0)
  {
      for(i=1;i.sample_count;i++){sample_count;i++}
      {
         unsigned int(32)entry_size;
      }
  }
}
当sample_size非零的时候,说明定义了缺省的长度,这正符合ac3的特征。
14.moov:trak:mdia:minf:stbl:stsc
sample到chunk的对应盒子。有且只能有一个。对ac3音频来说,如果每个chunk中包含的sample数目相同,那么描述是很简单的,如果是不规律的,那么要描述起来就比较长一些。其定义方式是:先定义最初的chunk,然后记录最前面的,sample数不变的,有多少个chunk,当sample数目变化后,启动一个新的记录,从开始变的chunk编号开始,从新记录新的chunk中包含的变了的sample数目,依次类推。对于本应用,第一个版本中,为了简单,先使用一个chunk,一个sample的方式。
aligned(8)class SampleToChunkBox extends FullBox(‘stsc’,version=0,0)
{
  unsigned int(32)entry_count;
  for(i=1;i<=entry_count;i++)
  {
     unsigned int(32)first_chunk;
     unsigned int(32)samples_per_chunk;
     unsigned int(32)sample_description_index;
  }
}
entry_count=1,后面跟一个记录项目。
15.moov:trak:mdia:minf:stbl:stco、moov:trak:mdia:minf:stbl:co64
两个盒子要用一个。
定义chunk在文件中的偏移,从而定位最终的数据。由于音频和视频chunk要交错存储,所以音频加近来之后,视频的指针也要调整,这在复用的时候,是最复杂的一个过程。这两个盒子,stco是用32位指针,比较通用,co64是用64位指针,为了大文件定义的。
aligned(8)class ChunkOffsetBox extends FullBox(‘stco’,version=0,0)
{
  unsigned int(32)entry_count;
  for(i=1;i<=entry_count;i++)unsigned int(32)chunk_offset;
}
aligned(8)class ChunkLargeOffsetBox extends FullBox(‘co64’,version=0,0)
{
  unsigned int(32)entry_count;
  for(i=1;i<=entry_count;i++)unsigned int(64)chunk_offset;
}
16.moov:trak:mdia:minf:stbl:stss
与流有关,可定义可随即seek的sample,通常都是定位I frame,对于ac3不需要这个盒子。
17.moov:trak:mdia:minf:stbl:stsh
与seek有关,但现在是用独立文件的方式帮助做seek的,因此不需要这个盒子。
18.moov:trak:mdia:minf:stbl:stdp
定义每个帧的优先级,音频不需要这个盒子,对于视频来说,如果原来有,可以选择保留。
19.moov:trak:mdia:minf:stbl:padb
用于定义每个sample的字节对齐,会记录每个sample为了字节对齐需要补充的bit数,不用这个盒子。
20.trak:edts
trak:edts:elst。对于ac3音频来说,不需要也不用构造,若音频trak中包含这个内容,则可保留,给出二级警告信息。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (9)

1.一种视频文件和音频文件的合并方法,包括以下步骤:
(1)将视频数据和音频数据分别存储在视频文件和音频文件中;将视频数据的索引信息和时间戳,音频数据的索引信息和时间戳分别存储在视频索引文件和音频索引文件中;
(2)根据视频索引文件和音频索引文件按帧读取视频文件和音频文件中数据,合并存储在一个视音频文件的数据区中;并将视频数据和音频数据在视音频文件中的存储位置及视频索引文件和音频索引文件中的时间戳记录到视音频文件的索引表中。
2.如权利要求1所述的视频文件和音频文件的合并方法,其特征在于:步骤(2)中视频数据和音频数据按照每帧对应的时间戳顺序间隔存储在视音频文件的数据区中。
3.如权利要求2所述的视频文件和音频文件的合并方法,其特征在于:所述视频数据和音频数据按照每帧对应的时间戳顺序间隔存储的过程包括以下步骤:
①根据视频索引文件读取视频文件中的一帧视频数据,写入视音频文件的数据区中,并获得该帧视频数据的时间戳;
②根据该帧视频数据的时间戳及音频索引文件读取音频文件中与该帧视频数据时间戳相对应的音频数据,写入视音频文件数据区中该帧视频数据后;
③将时间戳及该帧视频数据和音频数据在视音频文件中的存储位置记录到视音频文件的索引表中;
④重复步骤①至步骤③,直到将视频文件和音频文件合并完毕。
4.如权利要求3所述的视频文件和音频文件的合并方法,其特征在于:步骤③中,按照原视频文件和音频文件的格式规范将视频数据和音频数据在视音频文件中的存储位置记录到视音频文件的索引表中。
5.如权利要求1至4之一所述的视频文件和音频文件的合并方法,其特征在于:步骤(1)中,将视频数据压缩存储成只含视频数据的MPEG4文件,将音频数据压缩存储成AC3音频文件。
6.一种视频文件和音频文件的合并***,包括:
存储装置(11),用于将视频数据和音频数据分别压缩存储在视频文件和音频文件中;将视频数据的索引信息和时间戳,音频数据的索引信息和时间戳分别存储在视频索引文件和音频索引文件中;
读取装置(12),用于根据视频索引文件和音频索引文件按帧读取视频文件和音频文件中的数据;
合并装置(13),用于将读取装置(12)读取的视频帧数据和音频帧数据合并存储在一个视音频文件的数据区中;并将视频数据和音频数据在视音频文件中的存储位置及视频索引文件和音频索引文件中的时间戳记录到视音频文件的索引表中。
7.如权利要求6所述的视频文件和音频文件的合并***,其特征在于:所述的存储装置(11)存储的视频文件为MPEG4视频文件,音频文件为AC3音频文件。
8.如权利要求6所述的视频文件和音频文件的合并***,其特征在于:所述的合并装置(13)将视频数据和音频数据按照每帧对应的时间戳顺序间隔存储在视音频文件的数据区中。
9.如权利要求6至8之一所述的视频文件和音频文件的合并***,其特征在于:所述的合并装置(13)按照原视频文件和音频文件格式规范将视频数据和音频数据在视音频文件中的存储位置记录到视音频文件的索引表中。
CN 200910243436 2009-12-22 2009-12-22 一种视频文件和音频文件的合并方法及*** Pending CN101753946A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910243436 CN101753946A (zh) 2009-12-22 2009-12-22 一种视频文件和音频文件的合并方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910243436 CN101753946A (zh) 2009-12-22 2009-12-22 一种视频文件和音频文件的合并方法及***

Publications (1)

Publication Number Publication Date
CN101753946A true CN101753946A (zh) 2010-06-23

Family

ID=42480225

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910243436 Pending CN101753946A (zh) 2009-12-22 2009-12-22 一种视频文件和音频文件的合并方法及***

Country Status (1)

Country Link
CN (1) CN101753946A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102685469A (zh) * 2012-05-04 2012-09-19 北京航空航天大学 一种基于mpeg-2 aac及h.264音视频传输码流的组帧方法
CN103167342A (zh) * 2013-03-29 2013-06-19 天脉聚源(北京)传媒科技有限公司 一种音视频同步处理装置及方法
CN103929655A (zh) * 2014-04-25 2014-07-16 网易传媒科技(北京)有限公司 对音视频文件进行转码处理的方法和设备
CN104427261A (zh) * 2013-08-28 2015-03-18 昆盈企业股份有限公司 影音后制方法及影音摄录装置
CN105023597A (zh) * 2015-07-23 2015-11-04 深圳市冠旭电子有限公司 一种应用于耳机的多媒体播放方法和耳机
CN105940671A (zh) * 2014-01-29 2016-09-14 谷歌公司 媒体应用后台处理
CN108769786A (zh) * 2018-05-25 2018-11-06 网宿科技股份有限公司 一种合成音视频数据流的方法和装置
CN109743614A (zh) * 2019-01-03 2019-05-10 北京大米科技有限公司 一种数据存储的方法、装置及电子设备
CN110971914A (zh) * 2019-11-22 2020-04-07 北京凯视达科技有限公司 一种在时间轴模式下动态节省视音频解码资源的方法
CN112423103A (zh) * 2020-09-02 2021-02-26 一可科技有限公司 将音频文件与视频文件进行合并的方法、播放方法及装置

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102685469A (zh) * 2012-05-04 2012-09-19 北京航空航天大学 一种基于mpeg-2 aac及h.264音视频传输码流的组帧方法
CN103167342A (zh) * 2013-03-29 2013-06-19 天脉聚源(北京)传媒科技有限公司 一种音视频同步处理装置及方法
CN103167342B (zh) * 2013-03-29 2016-07-13 天脉聚源(北京)传媒科技有限公司 一种音视频同步处理装置及方法
CN104427261A (zh) * 2013-08-28 2015-03-18 昆盈企业股份有限公司 影音后制方法及影音摄录装置
US10841359B2 (en) 2014-01-29 2020-11-17 Google Llc Media application backgrounding
CN105940671A (zh) * 2014-01-29 2016-09-14 谷歌公司 媒体应用后台处理
CN113518070A (zh) * 2014-01-29 2021-10-19 谷歌有限责任公司 媒体应用后台处理
US10432695B2 (en) 2014-01-29 2019-10-01 Google Llc Media application backgrounding
CN103929655A (zh) * 2014-04-25 2014-07-16 网易传媒科技(北京)有限公司 对音视频文件进行转码处理的方法和设备
CN103929655B (zh) * 2014-04-25 2017-06-06 网易传媒科技(北京)有限公司 对音视频文件进行转码处理的方法和设备
CN105023597A (zh) * 2015-07-23 2015-11-04 深圳市冠旭电子有限公司 一种应用于耳机的多媒体播放方法和耳机
CN105023597B (zh) * 2015-07-23 2019-01-29 深圳市冠旭电子股份有限公司 一种应用于耳机的多媒体播放方法和耳机
CN108769786A (zh) * 2018-05-25 2018-11-06 网宿科技股份有限公司 一种合成音视频数据流的方法和装置
CN109743614A (zh) * 2019-01-03 2019-05-10 北京大米科技有限公司 一种数据存储的方法、装置及电子设备
CN110971914A (zh) * 2019-11-22 2020-04-07 北京凯视达科技有限公司 一种在时间轴模式下动态节省视音频解码资源的方法
CN110971914B (zh) * 2019-11-22 2022-03-08 北京凯视达科技股份有限公司 一种在时间轴模式下动态节省视音频解码资源的方法
CN112423103A (zh) * 2020-09-02 2021-02-26 一可科技有限公司 将音频文件与视频文件进行合并的方法、播放方法及装置

Similar Documents

Publication Publication Date Title
CN101753946A (zh) 一种视频文件和音频文件的合并方法及***
KR101596504B1 (ko) 객체기반 오디오 컨텐츠의 생성/재생 방법 및 객체기반 오디오 서비스를 위한 파일 포맷 구조를 가진 데이터를 기록한 컴퓨터 판독 가능 기록 매체
CN100505064C (zh) 声音再生装置
US9135953B2 (en) Method for creating, editing, and reproducing multi-object audio contents files for object-based audio service, and method for creating audio presets
KR101802273B1 (ko) 복수 개의 스트림으로 구성된 컨텐츠 파일 송수신 장치 및 방법
CN101656099A (zh) 一种用于mp3播放器的音视频制作和播放方法
US9928876B2 (en) Recording medium recorded with multi-track media file, method for editing multi-track media file, and apparatus for editing multi-track media file
CN101534407A (zh) 信息记录装置
JP2007094234A (ja) データ記録再生装置、データ記録再生方法及びそのプログラム
CN100477772C (zh) 在信息存储介质中记录视频数据的方法
TW200419531A (en) A method of reproducing an audio stream
JPWO2005096270A1 (ja) 音楽を再生するためのコンテンツフレームを配信するコンテンツ配信サーバ及び端末
KR101295377B1 (ko) 파일 포맷을 구성하는 방법과 상기 파일 포맷을 가지는파일을 포함한 방송 신호를 처리하는 장치 및 방법
JP4013800B2 (ja) データ作成方法及びデータ記録装置
KR101999351B1 (ko) 객체기반 오디오 컨텐츠의 생성/재생 방법 및 객체기반 오디오 서비스를 위한 파일 포맷 구조를 가진 데이터를 기록한 컴퓨터 판독 가능 기록 매체
CN1980368A (zh) 媒体播放装置的多媒体文件生成方法及其装置
CN102169708A (zh) 一种音视频播放***、方法、移动终端和播放器
KR102149019B1 (ko) 객체기반 오디오 컨텐츠의 생성/재생 방법 및 객체기반 오디오 서비스를 위한 파일 포맷 구조를 가진 데이터를 기록한 컴퓨터 판독 가능 기록 매체
CN101389041B (zh) 在信息存储介质中记录视频数据的方法
CN105185397B (zh) 视频标记方法和装置
JP4383721B2 (ja) 多重化分離装置
KR100681647B1 (ko) Pvr의 편집 관리 시스템 및 그 제어 방법
CN103903636A (zh) 一种播放方法及装置、电子设备
KR100762572B1 (ko) Aac파일의 mp4a 파일로의 변환 방법 및 장치
WO2015050001A1 (ja) ファイル生成装置および方法、並びにファイル再生装置および方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: WUXI VIMICRO CO., LTD.

Free format text: FORMER OWNER: BEIJING ZHONGXING MICROELECTRONICS CO., LTD.

Effective date: 20110406

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100083 15/F, SHINING BUILDING, NO. 35, XUEYUAN ROAD, HAIDIAN DISTRICT, BEIJING TO: 214028 610, NATIONAL INTEGRATED CIRCUIT DESIGN PARK (CHUANGYUAN BUILDING), NO. 21-1, CHANGJIANG ROAD, WUXI NEW DISTRICT, JIANGSU PROVINCE

TA01 Transfer of patent application right

Effective date of registration: 20110406

Address after: 214028 national integrated circuit design (21-1), Changjiang Road, New District, Jiangsu, Wuxi, China, China (610)

Applicant after: Wuxi Vimicro Co., Ltd.

Address before: 100083, Haidian District, Xueyuan Road, Beijing No. 35, Nanjing Ning building, 15 Floor

Applicant before: Beijing Vimicro Corporation

C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20100623