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包括下列信息:
previoustagsize | 4bytes | 前一个tag的长度,第一个tag就是0 |
tag类型 | 1byte | 三类: - 8 -- 音频tag
- 9 -- 视频tag
- 18 -- 脚本tag
|
数据区长度 | 3bytes | |
时间戳 | 3bytes | 单位毫秒,如果是脚本tag就是0 |
扩展时间戳
| 1byte | 作为时间戳的高位 |
streamsID | 3bytes | 总是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字...
最近做个小工具,修改音频的时间戳,来使音频视频同步,用的就是这些玩意儿。
分享到:
相关推荐
FlvParse是一款专为解析和理解FLV文件结构而设计的小巧且功能强大的工具,尤其适合开发者和学习者深入研究FLV的内部工作原理。 FLV文件主要由三部分组成:Header、Body和Footer。Header部分包含文件签名、版本信息...
一、FLV文件结构 1. 文件头:FLV文件以“FLV”三个字节作为文件标识,接着是一个字节的版本号,通常是1,表示支持音频、视频和元数据。然后是一个字节的标志位,其中第0位表示是否有音频数据,第1位表示是否有视频...
python解析flv文件库,内含详细注释介绍flv文件结构及解析原理
FLV文件结构分为三大部分:文件头、文件数据标签和文件尾。文件头包含文件标识符、文件版本、时间戳、以及视频和音频编解码器的信息。文件数据标签是FLV文件的核心部分,包含视频帧和音频帧的数据,每个标签都以...
### FLV 文件结构详解 #### 一、概述 FLV(Flash Video)是一种广泛应用于互联网上的视频文件格式,尤其在早期的在线视频分享网站中非常流行。FLV 格式的文件具有体积小、加载速度快等特点,非常适合网络传输。...
在Android平台上,原生系统并不直接支持FLV文件的解析和播放,因此开发者需要理解其内部结构以便进行自定义解析或寻找第三方库来处理这种格式。 FLV文件主要由三部分组成:文件头、文件体和文件尾。文件头包含文件...
FLV文件结构文档详细介绍了FLV文件的组成和结构,以下是对文档中提到的FLV文件结构的详细知识点说明: 1. FLV头部(FlvHeader): FLV文件头部包含了关于FLV文件的基础信息。文档中提到了FLV文件的标记为“FLV”,...
一、FLV文件结构 FLV文件由一个文件头、一系列的Tag(标签)和一个文件尾组成。文件头包含了文件的版本信息、数据类型以及第一个Tag的偏移量。每个Tag包含了一个时间戳、数据类型、数据长度和实际的数据内容,数据...
- **内容提取**:对于需要迁移或重用的Flash内容,解析SWF和FLV文件结构能帮助提取原始素材。 本资料包提供的内容适合初学者,将引导他们逐步理解Flash技术的核心要素,为后续深入学习和实际开发打下基础。通过研究...
本文将详细介绍“Flv视频文件解析工具”及其相关知识点,包括FLV文件结构、音视频编码、时间戳信息以及如何使用解析工具进行分析。 一、FLV文件格式 FLV文件格式由Adobe Systems开发,主要用于在Flash Player中播放...
FLV文件结构主要由以下部分组成: 1. **文件头**:文件头包含文件签名(通常为"FLV"),文件版本号,以及数据类型标志,指示文件中是否包含音频、视频或两者都有。 2. **文件信息**:这部分包括首帧的时间戳和文件...
#### 二、FLV文件结构概览 FLV文件本质上是一系列二进制数据的组合,整体结构可以分为两个主要部分: - **文件头(File Header)**:包含文件的基本信息。 - **文件体(File Body)**:由一系列Tag及其大小构成,Tag...
2. **构建FLV头信息**:FLV文件的结构包括一个文件头,包含了文件类型、文件长度等元数据。在写入H264数据前,我们需要先创建并写入FLV头。 3. **处理FLV帧数据**:H264码流中的NAL单元需要被封装成FLV帧。每帧前会...
2. **FLV文件结构**: FLV文件由头信息、数据标签(Data Tags)和尾信息(Footer)组成。头信息包含文件类型标识、文件版本、数据流长度等;数据标签包含音频、视频帧或脚本数据;尾信息验证文件的完整性。 3. **...
FLV文件结构: FLV文件由三部分组成:Header、Body和Footer。Header部分包含文件标识、文件头和文件数据标签。Body部分存储实际的音频、视频数据以及元数据。Footer则包含了文件长度等信息,用于验证文件完整性。 1...
FLV文件结构包含一个文件头,紧接着是多个数据块,每个数据块可以是视频帧、音频帧或元数据。H264是一种高效的视频编码标准,它通过先进的编码技术实现了高压缩率和高画质。AAC(Advanced Audio Coding)则是数字...
由于FLV文件可能包含非ASCII字符,如中文,因此在创建`index.html`时,需要正确设置文件编码,确保浏览器能正确解析文件内容。在描述中提到,可以选择`charset=gb2312`或`charset=utf-8`作为HTML文档的字符集,这取...
本篇文章将深入探讨如何将接收到的H.264和AAC码流数据合成为FLV文件,并基于提供的`flvenc.cpp`和`flv.h`文件进行解析。 首先,我们需要理解FLV文件的基本结构。FLV文件由头、数据标签(Data Tags)和尾部(Footer...
本项目涉及到的核心技术是提取FLV文件中的视频和音频数据,这是一个涉及到多媒体处理和文件解析的过程。下面将详细阐述相关知识点。 1. FLV文件格式: FLV文件由多个数据块组成,每个块包含头部信息和数据体。头部...
#### 二、FLV 文件结构与技术细节 ##### 1. 文件头 每个FLV文件都以一个固定长度的文件头开始,文件头包含了版本号、标志位、数据偏移量等基本信息。具体来说: - **版本号**:表示FLV文件格式的版本。例如,版本...