Chinaunix首页 | 论坛 | 博客
  • 博客访问: 248675
  • 博文数量: 55
  • 博客积分: 2160
  • 博客等级: 大尉
  • 技术积分: 598
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-08 14:36
文章分类

全部博文(55)

文章存档

2013年(1)

2012年(5)

2010年(49)

我的朋友

分类: 系统运维

2010-11-11 19:21:07

一、头文件
Flv的头文件格式比较简单,由9个字节组成.

前3个字节是文件格式标识 0x464C56.
第4个字节也是标识文件的版本号 0x01.
第5个字节 0x05
该字节前5个bit是保留的必须是0
          第6个bit音频类型标志(TypeFlagsAudio)
          第7个bit也是保留的必须是0
          第8个bit视频类型标志(TypeFlagsVideo)
第6-9的四个字节保留,为的是以后flv版本的升级扩展 0x00000009。

二、文件tag和内容
Flv文件除去头文件,就是由n个tag及内容组成。
tag1 内容1,tag2 内容2 ..... tagn 内容n
我们要读取的信息如时间就在tag里面。下面我来分析一下tag。
tag的格式如下:
1字节的类型。tag的类型目前有三种,分别为音频tag(0x08),视频tag(0x09),脚本tag(0x12)。(图例中是0x12)
3个字节的数据大小,即上面所说的内容的大小 0x000920
3个字节的时间戳  数据的时间戳(单位级为毫秒,如果要转为秒要除以1000) 0x000000
1个字节的时间戳扩展 0x00
3个字节的streamID,目前都是0 0x000000
之后的0x02开始的就是数据内容了,如脚本数据内容metadata,音频数据内容,视频数据内容。
大家是否还有注意到,在0x12 tag类型前面有4个字节 0x00000000,这个是表示前一个tag的大小。由于这里是第一个tag,所以无所谓前面的tag的大小,就为0了。
知道了Flv的文件格式,要读取时间那是易如反掌了。

阅读(1409) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~