FLV详解:FLVHeader与Stream结构及音频视频标签解析
需积分: 37 99 浏览量
更新于2024-11-25
收藏 2KB TXT 举报
FLV(Flash Video)文件格式详解
FLV是一种专为网络流媒体设计的文件格式,由Adobe公司开发,主要用于在线视频传输,尤其是YouTube等早期的视频分享平台。FLV文件结构由两个主要部分组成:FLVHeader和FLVStream。
**FLVHeader** 是FLV文件的头部信息,它包含以下几个关键字段:
- **Signature**:用于标识文件类型,固定为"FLV"。
- **Version**:版本号,最初为0x01,表示FLV 1.0规范。
- **Flags**:标志位,可以组合0x01(视频)、0x04(音频)、0x05(同时包含视频和音频),指示流媒体数据的类型。
- **Offset**:表示FLVHeader后的第一个FLVTag的偏移量,即0x00 0x00 0x00 0x09。
**FLVStream** 部分包含了连续的FLVTag,每个Tag有以下几个组成部分:
- **PreviousTagSize**:前一个Tag的大小,用4字节表示整数值,对于第一个Tag,这个值通常为0。
- **FLVTag**:
- **Type**:标签类型,包括音频(0x08)、视频(0x09)和元数据(0x12)。
- **BodyLength**:标签体的长度,用3字节表示整数值。
- **Timestamp**:时间戳,用3字节表示,对于简单的时间戳,值为0通常表示当前时间。
- **TimestampExtended**:扩展时间戳,对于FLV 1.0规范,通常为0,表示不使用扩展时间戳。
- **StreamId**:流ID,用于区分不同的音频或视频流,0x000000000表示默认值。
- **Body**:标签体,根据Type的不同,包含音频数据(如ADPCM编码)、视频数据(可能包括帧数据)或元数据(如AMF包,用于传递ActionScript对象数据)。
**音频Tag和VideoTag** 的Body部分具有特定的编码格式标识:
- 对于AudioTag:
- 第1位到第7位:压缩方式编码,例如0C代表无压缩,1C代表ADPCM,2C代表MP3等。
- 第8位到第11位:采样率,如5.5kHz、11kHz等。
- 第12位到第13位:位深度,8bit或16bit。
- 第14位到第15位:声道数,0C单声道,1C立体声。
- 对于VideoTag:
- 类似于AudioTag,但用于描述视频数据,同样包含帧数据和编码标识。
FLV文件格式是一种紧凑且高效的流媒体文件格式,适用于互联网传输,通过Header明确标识内容类型,并通过FLVTag组织音频、视频和元数据,确保在不同网络环境下快速、流畅地播放。理解并解析FLV文件结构对于开发基于Flash的视频应用或进行文件处理至关重要。
2019-12-27 上传
2012-12-29 上传
2014-06-22 上传
2014-04-24 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
large_small
- 粉丝: 7
- 资源: 3
最新资源
- phaser-spine:Phaser 2的插件,增加了对Spine的支持
- 狼群背景的狼性企业文化培训PPT模板
- EPSON爱普生XP245/XP247缺墨红灯墨盒不识别
- IdConverter:使用随机双向函数将ID转换为另一个ID的软件
- orly:Om Rectangle Layout librarY-观看演示
- aspnetcore-dynamic-cors:aspnetcore动态心电图
- phaser-input:将输入框添加到Phaser中,例如CanvasInput,但也适用于WebGL和Mobile,仅适用于Phaser
- siamese
- mysql代码-多表联查测试
- 朱利亚迪蒙特
- TeleNovel
- homeassistant-with-snapcast:在pogo e02和pogo v4上具有家庭辅助和快照功能的多房间系统
- claimnolimterbux.github.io
- phaserquest:使用Phaser,socket.io和Node.js复制Mozilla的BrowserQuest
- mosartwmpy:MOSART-WM的Python翻译
- qt-cmake-template:使用CMake的基本Qt模板项目