【网络通信 -- 直播】音视频常见封装格式 -- 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:包含 9 个字节,主要用于标识文件类型和文件结构。
  • FLV Body:包含多个 Tag,包括音频流(audio)、视频流(video)和脚本流(script)。每个 Tag 由 Tag Header 和 Tag Data 两部分组成。
  • 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 文件结构流式化,支持在线动态扩展。
  • FLV 文件适合实时流媒体,效率高。
  • FLV 文件兼容性强,支持多种编码格式。
  • FLV 与 RTMP 的关系

    RTMP(Real-Time Media Protocol)是用于实时媒体传输的协议,FLV 文件实际上是 RTMP 数据的封装形式。FLV 文件可以看作是 RTMP 数据的“马甲”,两者之间存在密切关联。

    FLV 知识点总结

  • FLV 适合录制的原因

    • FLV 文件结构流式化,便于随时添加音视频数据。
    • 相比 MP4 等格式,FLV 文件头部固定,体积小且处理时间短。
  • FLV 与 MP4 的区别

    • FLV 文件的数据部分可以随时扩展,而 MP4 文件的文件头会随着数据增加而增长。
    • FLV 文件适合实时流媒体,传输效率高。
  • 通过对 FLV 格式的深入理解,可以更好地实现网络直播和音视频流媒体的传输与播放。

    上一篇:【网络通信 -- 直播】音视频常见封装格式 -- MP4
    下一篇:【网络通信 -- 直播】音视频常见封装格式 -- MEPG2 TS

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月04日 03时34分43秒