
【网络通信 -- 直播】音视频常见封装格式 -- FLV
FLV Header:包含 9 个字节,主要用于标识文件类型和文件结构。 FLV Body:包含多个 Tag,包括音频流(audio)、视频流(video)和脚本流(script)。每个 Tag 由 Tag Header 和 Tag Data 两部分组成。
FLV 文件结构流式化,支持在线动态扩展。 FLV 文件适合实时流媒体,效率高。 FLV 文件兼容性强,支持多种编码格式。
发布日期:2021-05-07 20:53:03
浏览次数:11
分类:精选文章
本文共 1371 字,大约阅读时间需要 4 分钟。
【网络通信 -- 直播】音视频常见封装格式 -- FLV
FLV 格式
FLV(Flash Video)是 Adobe 公司推出的一种音视频封装格式,常用于网络直播和流媒体传输。FLV 支持的视频编码格式主要是 H264,音频是 AAC。
FLV 文件结构
FLV 文件由 FLV Header 和 FLV Body 两部分组成:
FLV Header 字段说明
字段名称 | 字段长度 | 说明 |
---|---|---|
Signature | 1 byte | 必须为 'F'(0x46) |
Version | 1 byte | 通常为 0x01 |
TypeFlagsReserved | 5 bits | 必须为 0 |
TypeFlagsAudio | 1 bit | 表示是否含有音频 |
TypeFlagsVideo | 1 bit | 表示是否含有视频 |
DataOffset | 4 bytes | 文件头部的大小(从文件开始位置到 Body 的偏移量),通常为 9 |
FLV Body 结构
FLV Body 由多个 Tag 组成,每个 Tag 的格式如下:
Tag Header:包含 11 字节,包括:
- Tag 类型(TagType):1-2 位必须为 0,3 位为加密标志(默认 0),4-8 位表示编码类型。
- 数据大小(DataSize):3 bytes,表示 Tag Data 的长度。
- 时间戳(Timestamp):3 bytes,表示视频或音频的绝对时间戳。
- 时间戳扩展(TimestampExtended):1 byte,用于扩展时间戳。
- 流 ID(Stream ID):3 bytes,通常为 0。
- 数据(Data):包含音视频数据或元数据。
Tag Data:根据编码类型(如 H264 和 AAC)不同,数据格式也会有所差异。
Tag 类型
- Script Tag:用于存储视频和音频的元数据,如视频宽度、高度、时长等。
- Video Tag:封装 H264 视频数据,包含视频帧信息和编码配置。
- Audio Tag:封装 AAC 音频数据,包含采样率、通道信息等。
FLV 的优势
FLV 与 RTMP 的关系
RTMP(Real-Time Media Protocol)是用于实时媒体传输的协议,FLV 文件实际上是 RTMP 数据的封装形式。FLV 文件可以看作是 RTMP 数据的“马甲”,两者之间存在密切关联。
FLV 知识点总结
FLV 适合录制的原因:
- FLV 文件结构流式化,便于随时添加音视频数据。
- 相比 MP4 等格式,FLV 文件头部固定,体积小且处理时间短。
FLV 与 MP4 的区别:
- FLV 文件的数据部分可以随时扩展,而 MP4 文件的文件头会随着数据增加而增长。
- FLV 文件适合实时流媒体,传输效率高。
通过对 FLV 格式的深入理解,可以更好地实现网络直播和音视频流媒体的传输与播放。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月04日 03时34分43秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
前后端通信问题 —— SpringBoot+LayUI
2019-03-04
ubuntu中安装scikit-learn
2019-03-04
Ubuntu2004 向日葵安装笔记
2019-03-04
Ubuntu 安装后无法正常打开——进入grub安全命令行模式
2019-03-04
C/C++ new和delete使用注意事项
2019-03-04
Jmeter (一) ----环境搭建
2019-03-04
性能调优优化思路
2019-03-04
CodeBase(四)项目总结
2019-03-04
【ACM】HDU 5640 King‘s Cake
2019-03-04
java集合框架
2019-03-04
面向对象的三大特征
2019-03-04
SpringCloud和SprinBoot之间的关系
2019-03-04
奇怪的小东西
2019-03-04
剑指offer打卡Day14:数组中只出现一次的数字
2019-03-04
使用VSCode配合keil来编写Cortex-M程序
2019-03-04
电磁兼容的PCB设计(二)
2019-03-04
i.mx rt系列遇害笔记-----systick被gpio害了
2019-03-04
零输入响应与零状态响应响应
2019-03-04
工资核算
2019-03-04
【keras】利用LSTM做简单的时间序列预测
2019-03-04