`
noahgenius
  • 浏览: 139995 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

FLV文件结构解析

阅读更多

FLV是一个二进制文件,由文件头(FLV header)和很多tag组成。tag又可以分成三类:audio,video,script,分别代表音频流,视频流,脚本流(关键字或者文件信息之类)。

 

FLV Header

一般比较简单,包括文件类型之类的全局信息

文件类型3bytes总是FLV(0x46 0x4C 0x56),否则...
版本
1byte一般是0x01,表示FLV version 1
流信息1byte
倒数第一bit是1表示有视频,倒数第三bit是1表示有音频,其他都应该是0(有些软件如flvtool2可能造成倒数第四bit是1,不过也没发现有什么不对)
header长度
4bytes整个文件头的长度,一般是9(3+1+1+4),有时候后面还有些别的信息,就不是9了
   

 

FLV Body

FLV body就是由很多tag组成的,一个tag包括下列信息:

previoustagsize4bytes前一个tag的长度,第一个tag就是0
tag类型1byte

三类:

  • 8 -- 音频tag
  • 9 -- 视频tag
  • 18 -- 脚本tag
数据区长度3bytes 
时间戳3bytes单位毫秒,如果是脚本tag就是0
扩展时间戳
1byte作为时间戳的高位
streamsID3bytes总是0(不知道干啥用)
数据区  

根据不同的tag类型就有不同的数据区

 

Audio tag 数据区

audio信息1byte

前四位bits表示音频格式:

  • 0 -- 未压缩
  • 1 -- ADPCM
  • 2 -- MP3
  • 5 -- Nellymoser 8kHz momo
  • 6 -- Nellymoser

下面两位bits表示samplerate:

  • 0 -- 5.5kHz
  • 1 -- 11kHz
  • 2 -- 22kHz
  • 3 -- 44kHz

下面一位bit表示每个采样的长度:

  • 0 -- snd8Bit
  • 1 -- snd16Bit

下面一位bit表示类型:

  • 0 -- sndMomo
  • 1 -- sndStereo
audio数据区
不定 

 

video tag 数据区

video信息1byte

前四位bits表示类型:

  • 1 -- keyframe
  • 2 -- inner frame
  • 3 -- disposable inner frame (H.263 only)

后四位bits表示编码器id:

  • 2 -- Seronson H.263
  • 3 -- Screen video
  • 4 -- On2 VP6
  • 5 -- On2 VP6 without channel
  • 6 -- Screen video version 2
video数据区
不定 

 

script tag 数据区

略n字...

 

最近做个小工具,修改音频的时间戳,来使音频视频同步,用的就是这些玩意儿。

分享到:
评论
4 楼 liuxuejin 2012-05-14  
回去仔细研究一下
3 楼 ycwycf 2012-03-12  
rogerer 写道
你好!怎么解析duration的值啊?我以16进制查看,值为40 63 fd 78 d4 fd f3 b6.如何转换成数字呢?谢谢!如果有详细说明,麻烦发邮件给我:rogerer@foxmail.com

同问。。。
2 楼 rogerer 2011-07-19  
你好!怎么解析duration的值啊?我以16进制查看,值为40 63 fd 78 d4 fd f3 b6.如何转换成数字呢?谢谢!如果有详细说明,麻烦发邮件给我:rogerer@foxmail.com
1 楼 rapanda 2011-05-27  
数据区长度是从哪里开始的哦,到哪里结束...能给个实例解答下吗

相关推荐

    FlvParse flv文件结构解析器

    FlvParse是一款专为解析和理解FLV文件结构而设计的小巧且功能强大的工具,尤其适合开发者和学习者深入研究FLV的内部工作原理。 FLV文件主要由三部分组成:Header、Body和Footer。Header部分包含文件签名、版本信息...

    Flv文件解析(c#,包含flv文件结构说明)

    一、FLV文件结构 1. 文件头:FLV文件以“FLV”三个字节作为文件标识,接着是一个字节的版本号,通常是1,表示支持音频、视频和元数据。然后是一个字节的标志位,其中第0位表示是否有音频数据,第1位表示是否有视频...

    python解析flv文件

    python解析flv文件库,内含详细注释介绍flv文件结构及解析原理

    C++ 解析flv文件

    FLV文件结构分为三大部分:文件头、文件数据标签和文件尾。文件头包含文件标识符、文件版本、时间戳、以及视频和音频编解码器的信息。文件数据标签是FLV文件的核心部分,包含视频帧和音频帧的数据,每个标签都以...

    flv文件结构

    ### FLV 文件结构详解 #### 一、概述 FLV(Flash Video)是一种广泛应用于互联网上的视频文件格式,尤其在早期的在线视频分享网站中非常流行。FLV 格式的文件具有体积小、加载速度快等特点,非常适合网络传输。...

    FLV 文件格式解析

    在Android平台上,原生系统并不直接支持FLV文件的解析和播放,因此开发者需要理解其内部结构以便进行自定义解析或寻找第三方库来处理这种格式。 FLV文件主要由三部分组成:文件头、文件体和文件尾。文件头包含文件...

    FLV文件结构.pdf

    FLV文件结构文档详细介绍了FLV文件的组成和结构,以下是对文档中提到的FLV文件结构的详细知识点说明: 1. FLV头部(FlvHeader): FLV文件头部包含了关于FLV文件的基础信息。文档中提到了FLV文件的标记为“FLV”,...

    flv文件解析实战

    一、FLV文件结构 FLV文件由一个文件头、一系列的Tag(标签)和一个文件尾组成。文件头包含了文件的版本信息、数据类型以及第一个Tag的偏移量。每个Tag包含了一个时间戳、数据类型、数据长度和实际的数据内容,数据...

    flash资料(包括swf文件结构、flv文件结构)

    - **内容提取**:对于需要迁移或重用的Flash内容,解析SWF和FLV文件结构能帮助提取原始素材。 本资料包提供的内容适合初学者,将引导他们逐步理解Flash技术的核心要素,为后续深入学习和实际开发打下基础。通过研究...

    Flv视频文件解析工具

    本文将详细介绍“Flv视频文件解析工具”及其相关知识点,包括FLV文件结构、音视频编码、时间戳信息以及如何使用解析工具进行分析。 一、FLV文件格式 FLV文件格式由Adobe Systems开发,主要用于在Flash Player中播放...

    flv解析工具,可以很好的看到flv的结构

    FLV文件结构主要由以下部分组成: 1. **文件头**:文件头包含文件签名(通常为"FLV"),文件版本号,以及数据类型标志,指示文件中是否包含音频、视频或两者都有。 2. **文件信息**:这部分包括首帧的时间戳和文件...

    FLV文件格式解析

    #### 二、FLV文件结构概览 FLV文件本质上是一系列二进制数据的组合,整体结构可以分为两个主要部分: - **文件头(File Header)**:包含文件的基本信息。 - **文件体(File Body)**:由一系列Tag及其大小构成,Tag...

    C++实现h264码流保存为FLV文件

    2. **构建FLV头信息**:FLV文件的结构包括一个文件头,包含了文件类型、文件长度等元数据。在写入H264数据前,我们需要先创建并写入FLV头。 3. **处理FLV帧数据**:H264码流中的NAL单元需要被封装成FLV帧。每帧前会...

    java读取flv

    2. **FLV文件结构**: FLV文件由头信息、数据标签(Data Tags)和尾信息(Footer)组成。头信息包含文件类型标识、文件版本、数据流长度等;数据标签包含音频、视频帧或脚本数据;尾信息验证文件的完整性。 3. **...

    flv文件解析

    FLV文件结构: FLV文件由三部分组成:Header、Body和Footer。Header部分包含文件标识、文件头和文件数据标签。Body部分存储实际的音频、视频数据以及元数据。Footer则包含了文件长度等信息,用于验证文件完整性。 1...

    解复用FLV文件(基于FFMPEG解析FLV(h264+aac))

    FLV文件结构包含一个文件头,紧接着是多个数据块,每个数据块可以是视频帧、音频帧或元数据。H264是一种高效的视频编码标准,它通过先进的编码技术实现了高压缩率和高画质。AAC(Advanced Audio Coding)则是数字...

    html播放flv文件一整套源码案例

    由于FLV文件可能包含非ASCII字符,如中文,因此在创建`index.html`时,需要正确设置文件编码,确保浏览器能正确解析文件内容。在描述中提到,可以选择`charset=gb2312`或`charset=utf-8`作为HTML文档的字符集,这取...

    实时流合成为flv文件

    本篇文章将深入探讨如何将接收到的H.264和AAC码流数据合成为FLV文件,并基于提供的`flvenc.cpp`和`flv.h`文件进行解析。 首先,我们需要理解FLV文件的基本结构。FLV文件由头、数据标签(Data Tags)和尾部(Footer...

    提取FLV文件的视频和音频

    本项目涉及到的核心技术是提取FLV文件中的视频和音频数据,这是一个涉及到多媒体处理和文件解析的过程。下面将详细阐述相关知识点。 1. FLV文件格式: FLV文件由多个数据块组成,每个块包含头部信息和数据体。头部...

    flv文件格式说明

    #### 二、FLV 文件结构与技术细节 ##### 1. 文件头 每个FLV文件都以一个固定长度的文件头开始,文件头包含了版本号、标志位、数据偏移量等基本信息。具体来说: - **版本号**:表示FLV文件格式的版本。例如,版本...

Global site tag (gtag.js) - Google Analytics