(转)FLV格式解析

转载 2012年03月21日 17:04:44

FLV全称为Flash Video,这种视频格式成为互联网“新宠”,在此之前可能还是wmv/rm的最多。FLV文件格式在互联网上的应用方便造就了youtube的神话。从2006年我就一直关注Flash Video方面的东西,曾经编码把FLV文件格式解析了。非常有意思,我把FLV文件中关键帧提取出来,扔给flash video的播放器,仍然可以播放,速度很快,但是就是让人感觉在放幻灯片。今天把以前解析FLV文件格式程序和文档整理了一下,把FLV文件格式详细的整理出来。下面用类似于文法规则的方法把FLV文件格式表示出来。
FLV文件: FLVHeader FLVStream
FLVHeader : Signature Version Flags Offset 
Signature : "FLV"
Version   : 0×01 
Flags   : 0×01 | 0×04 | 0×05 //1:video,4:audio,5:video+audio
Offset   : 0×00 0×00 0×00 0×09
FLVStream : (PreviousTagSize FLVTag)*
PreviousTagSize : 4个byte表示int(第一个FLVTag,该值为0,一般第一个Tag是Meta)
FLVTag    : Type BodyLength Timestamp TimestampExtended StreamId Body 
Type      : 0×08 | 0×09 | 0×12 //0×08:audio,0×09:video,0×12:meta
BodyLength: 3个byte表示int
Timestamp : 3个byte表示int
TimestampExtended : 0×00 (一般是0×00)
StreamId  : 0×00 0×00 0×00
Body      : BodyLength个byte
上面基本上就是整个FLV文件的格式信息。有一点非常重要:这上面“4个byte表示int”
与"3个byte表示int”都是高->低字节序的。在计算机中,大部分是低->高字节序,
在解析时候一定要注意转换。

对于具体三种Tag:Audio/Video/Meta,
其Body里又有不同格式。Meta Tag的Body是两个AMF packets(如果懂一点Flash的话,
应该知道AMF packet大概是个什么东东,这个的格式我下次在仔细贴出来。)
Audio Tag和Video Tag的Body的第一个byte都用来标识一些与后面数据相关的信息。

Audio Tag的Body的第一个字节信息:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0   bit从高到底
——(1)—–|–(2)–|(3)|(4)
(1):0–Uncompressed; 1–ADPCM; 2–MP3; 5–Nellymoser 8kHz mono; 6–Nellymoser 
(2):0–5.5KHz; 1–11KHz; 2–22KHz; 3–44KHz
(3):0–8bit; 1–16bit
(4):0–mono; 1–stereo

Video Tag的Body的第一个字节信息:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0   bit从高到底
—–(1)——|——(2)—–
(1):2–Sorensen H.263; 3–Screen video; 4–On2 VP6; 5–On2 VP6 Alpha; 6–ScreenVideo 2
(2):1–keyframe; 2–inter frame; 3–disposable inter frame


转自:http://blog.csdn.net/mmtogo/article/details/4179324

流媒体-FLV格式详解及数据分析

一、FLV文件格式 FLV包括文件头(File Header)和文件体(File Body)两部分。文件结构如图所示: 二、FLV文件头 header部分记录了flv的类型、版本等信息...
  • mm792261167
  • mm792261167
  • 2017年04月06日 17:08
  • 4296

FLV文件结构解析

1. FLV文件格式相对于MP4,简单很多。    FLV Header(9Bytes) + FLV Body                         a比特: 1:有音频; 0:无音频   ...
  • huibailingyu
  • huibailingyu
  • 2015年01月19日 19:55
  • 1963

C++ 解析flv文件

#include "stdafx.h" #include typedef struct FLV_HEADER { BYTE btSignature[3]; BYTE btVersion; B...
  • sz76211822
  • sz76211822
  • 2016年12月20日 11:15
  • 493

wav格式音频转换成flv格式音频(一)

根据前一篇文章中对flv格式的分析,flv格式包括file header和file body两部分,因此可以如下定义file header以及Previous Tag Size#0,如下: cons...
  • linyanwen99
  • linyanwen99
  • 2012年04月26日 18:02
  • 1347

也说FLV格式分析(C语言从0开始,详解,完整版)

也说FLV格式分析(C语言完整版) 最近想写一个在线视频播放软件,经研究得知某视频网站会将一个视频成很多段来投放从而方便在线缓冲,以及加Ad之类的目的。下载后大概如下图所示(星哥的九品芝麻官)...
  • spygg
  • spygg
  • 2016年12月27日 16:09
  • 1908

flv视频格式解析

FLV视频封装格式详解 标签: flvheaderaudiovideocodecfile 2012-04-04 21:13 10526人阅读 评论(3) 收藏 举报  分类:...
  • bizhijia110
  • bizhijia110
  • 2016年10月27日 15:04
  • 205

视频转换成flv注意事项

最近剪了一个视频,然后要求是flv,pr 2015 cc 根本没有flv的直接选项啊啊啊啊!自己先导出了MP4格式的视频,感觉还行,但是不符合最后要求啊,接下来就是漫长的转格式之路! 先来一张MP4...
  • ljsalove
  • ljsalove
  • 2016年06月05日 18:44
  • 758

视音频编解码学习工程:FLV封装格式分析器

本文介绍一个自己的开源小项目:FLV封装格式分析器。FLV全称是Flash Video,是互联网上使用极为广泛的视频封装格式。像Youtube,优酷这类视频网站,都使用FLV封装视频。我这个项目规模不...
  • leixiaohua1020
  • leixiaohua1020
  • 2014年01月12日 00:01
  • 34923

flvAnalyser 分析工具版本发布详情

flvAnalyser 使用说明书 2017-12-19 版本v0.0.1.002发布   Author: hybase@qq.com  QQ: 23207689 ==================...
  • zymill
  • zymill
  • 2017年12月18日 21:05
  • 173

(详细格式)RTMP中FLV流到标准h264、aac的转换

http://www.cnblogs.com/chef/archive/2012/07/18/2597279.html 这段时间,工作上的需要,在RTMP上做了flv流到标准h264、AAC的转换...
  • xb3352011
  • xb3352011
  • 2016年10月11日 14:51
  • 865
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(转)FLV格式解析
举报原因:
原因补充:

(最多只允许输入30个字)