Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17063
  • 博文数量: 18
  • 博客积分: 390
  • 博客等级: 一等列兵
  • 技术积分: 195
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-16 00:04
文章分类

全部博文(18)

文章存档

2012年(5)

2011年(13)

我的朋友
最近访客
toc

分类: LINUX

2012-07-12 23:07:39

2.1.2 举例说明
曲子是:刘德华 - 虹桥机场的咖啡厅.mp3(5,898,130字节,时长3分14秒)

a,第37至40地址为“58 69 6E 67”,就是“Xing”标志了;
b,第41至44地址为“00 00 00 0F”,这里是Flag了,表示该帧存储了帧数、文件长度、目录表和VBR规模信息。
c,第45至48地址为“00 00 1D 11”,这里是文件的总帧数(包括第一帧),是big-endia的,(1*16^3+13*16^2+1*16+1)帧。
d,第49至52地址为“00 59 FD DE”,这里是文件的总大小,也是Big-Endian的,(5*16^5+9*16^4+15*16^3+13*16^2+13*16+14)=5,897,694(字节), 但是右键文件的属性发现却是5,898,130字节,这多出来的字节暂时还没弄明白(郁闷中)。
e,第53至152地址,就是一百个字节的目录表了(称作TOC表),如图蓝色地部分。
   TOC (Table of Contents)
              Contains of 100 indexes (one Byte length) for easier lookup in file. Approximately
              solves problem with moving inside file.
              Each Byte has a value according this formula:
              (TOC[i] / 256) * fileLenInBytes
              So if song lasts eg. 240 sec. and you want to jump to 60. sec. (and file is 5 000
              000 Bytes length) you can use:
              TOC[(60/240)*100] = TOC[25]
              and corresponding Byte in file is then approximately at:
              (TOC[25]/256) * 5000000
              If you want to trim VBR file you should also reconstruct Frames, Bytes and TOC
              properly.
       TCO 索引的计算方式如下  文件长度 100 比如文件持续 240 秒,我需要跳到 60 秒,文件长度为 5000000 字节 计算如下TOC[(60/240)*100] =TOC[25] 然后相对于文件中的位置大约是在 (TOC[25]/256) * 5000000 如果要自己重建的话,基本是把这个步骤反过来做就可以了。要求准确的话,就需要根据时间点找到正确帧的位置然后再计算, 定位帧的做法都是从第一帧开始搜索。
f,第153至156字节地址为“00 00 00 64”,,音频质量指示质量指示器,为 0(最好)-100(最差)的 Big-Endian 值,没想到这个文件的音质是最差的100。
g,接下来是Lame版本的相关信息
我们的开源 


阅读(180) | 评论(0) | 转发(0) |
0

上一篇:asf

下一篇:没有了

给主人留下些什么吧!~~