码迷,mamicode.com
首页 > 其他好文 > 详细

FLV封装格式分析

时间:2017-06-15 21:56:29      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:github   article   资料   href   add   git   alt   command   ted   

  FLV官方文档:https://github.com/jiayayao/DataSheet/tree/master/media%20format/flv

一、FLV格式

  FLV包括文件头(FLV header)和文件体(FLV Body)两部分,其中文件体由一系列的Tag组成。如下图所示:

技术分享

   FLV header一共9个字节,分别是:

  • Signature(3个字节)总是“FLV”,即0x46, 0x4c, 0x56;
  • Version(1个字节) 总是1,即0x01;
  • Flags(1个字节) 第6位表示是否存在音频,第8位表示是否存在视频,即音视频都有的话,是0x05;
  • HeaderSize(4个字节)头字节大小,总为9 。

  每个Tag包含3部分,Previous Tag Size字段(4个字节),Tag header字段(11个字节)和Tag data字段。

  Previous Tag Size表示前面一个Tag的大小。 

  Tag header字段包含11个字节:

  • Type(1个字节)可以是视频、音频和Script,每个Tag只能包含以上三种类型的数据中的一种:

Tag类型

视频

0x09

音频

0x08

Script

0x12

  • Data size(3个字节)表示该tag的data部分的大小;
  • Timestamp(3个字节)表示该tag的时间戳;
  • Timestamp(1个字节)表示扩展时间戳,当时间戳24位数值不够时,会扩展至32位;
  • StreamID(3个字节)表示stream id,总是0.  

 二、视频Tag

  视频tag的第一个字节用来表示视频数据的参数信息,第二个字节开始为视频数据。

  第一个字节的前4位表示帧类型:

含义

1

keyframe (for AVC, a seekable frame)

2

inter frame (for AVC, a nonseekable frame)

3

disposable inter frame (H.263 only)

4

generated keyframe (reserved for server use only)

5

video info/command frame

  第一个字节的后4位表示编码类型:

含义

1

 JPEG (currently unused)

2

 Sorenson H.263

3

 Screen video

4

 On2 VP6

5

 On2 VP6 with alpha channel

6

 Screen video version 2

7

 AVC

  视频tag从二个字节开始为视频数据。

三、Script Tag

  又通常被称为Metadata Tag,会放一些关于FLV视频和音频的元数据信息如:duration、width、height、video data rate、frame rate等。该Tag包含2个AMF包,通常该类型Tag会跟在File Header后面作为第一个Tag出现,而且只有一个。

  音频tag不再贴了,有兴趣可以看官方文档。


参考资料:  

http://blog.csdn.net/leixiaohua1020/article/details/17934487

FLV封装格式分析

标签:github   article   资料   href   add   git   alt   command   ted   

原文地址:http://www.cnblogs.com/jiayayao/p/7019841.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!