FLV音视频文件的存储规范有哪些具体要求?

FLV音视频存储规范

flv音视频存储规范

一、

FLV(Flash Video)是Adobe公司推出的一种流媒体播放格式,广泛应用于网络视频传输,其设计目标是为互联网高效传输音视频内容提供支持,本文将详细解析FLV文件的结构和相关规范。

二、FLV文件结构

FLV文件头

字段 类型 描述
Signature1 UI8 固定值'F' (0x46)
Signature2 UI8 固定值'L' (0x4C)
Signature3 UI8 固定值'V' (0x56)
Version UI8 FLV版本号,一般为0x01
TypeFlagsReserved UB5 保留字段,必须为0
TypeFlagsAudio UB1 音频流标志位
TypeFlagsVideo UB1 视频流标志位
TypeFlagsReserved2 UB2 保留字段,必须为0
DataOffset UI32 文件头大小,通常为9字节

FLV文件体

FLV文件体由多个Tag组成,每个Tag包含以下内容:

Previous Tag Size(4 bytes):前一个Tag的大小,第一个Tag此值为0。

Tag Header(11 bytes):包括Tag类型、数据大小和时间戳等。

Tag Type(UI24):标识Tag的类型(音频、视频、脚本)。

flv音视频存储规范

Data Size(UI24):数据区大小,不包括包头。

Timestamp(UI24):时间戳,单位为毫秒。

Timestamp Extended(UI8):扩展时间戳,当基本时间戳超过0xFFFFFF时使用。

Stream ID(UI24):流ID,对于FLV总是0。

三、标签类型与数据格式

音频标签(Audio Tag)

字段 类型 描述
SoundFormat UB4 音频格式:
0: Linear PCM, platform endian
1: ADPCM
2: MP3
3: Linear PCM, little endian
4: Nellymoser 16-kHz mono
5: Nellymoser 8-kHz mono
6: Nellymoser
7: G.711 A-law logarithmic PCM
8: G.711 mu-law logarithmic PCM
9: reserved
10: AAC
11: Speex
14: MP3 8-Khz
15: Device-specific sound
SoundRate UB2 采样率:
0: 5.5-kHz
1: 11-kHz
2: 22-kHz
3: 44-kHz
4: reserved
5: reserved
6: reserved
7: reserved
8: reserved
9: reserved
10: reserved
11: reserved
12: reserved
13: reserved
14: reserved
15: reserved
SoundSize UB1 采样大小:
0: snd8Bit
1: snd16Bit
SoundType UB1 声道:
0: 单声道
1: 立体声/双声道
AACPacketType UI8 AAC特有字段:
0: AAC sequence header
1: AAC raw
2: AAC sequence end
Reserved: 其他值
AACDataSize UI8 AAC数据大小
AACData UI8[n] AAC数据

视频标签(Video Tag)

字段 类型 描述
FrameType UI24 帧类型:
关键帧(keyframe)
差异帧(interframe)
CodecID UI24 编码ID:
1: Sorenson H.263
2: Screen video
3: On2 VP6
4: On2 VP6 with alpha channel
5: Screen video version 2
6: On2 VP6 with alpha channel
7: Screen video version 2
8: AVC (H.264)
Reserved: 其他值
AVCPacketType UI8 AVC特有字段:
0: AVC序列头
1: AVC NALU单元
2: AVC序列结束
Reserved: 其他值
CompositionTime UI24 合成时间,单位毫秒

四、FLV文件示例分析

假设我们有一个FLV文件,其头部信息如下:

flv音视频存储规范

Signature1 = 'F'
Signature2 = 'L'
Signature3 = 'V'
Version = 0x01
TypeFlagsReserved = 0b00000
TypeFlagsAudio = 0b00001
TypeFlagsVideo = 0b00000001
DataOffset = 9

这个文件头表示该FLV文件包含音频和视频流,文件头长度为9字节,接下来是一个音频标签和一个视频标签的具体解析。

音频标签示例

PreviousTagSize0 = 0
TagType = 8
DataSize = 0x0000001C
Timestamp = 0x00000000
TimestampExtended = 0x00
StreamID = 0x00000000
SoundFormat = 10 (AAC)
SoundRate = 3
SoundSize = 1
SoundType = 1
AACPacketType = 1
AACDataSize = 0x00
AACData = ... (AAC数据)

这个音频标签表示一个AAC格式的音频数据包,包含AAC原始数据。

视频标签示例

PreviousTagSize1 = 0x1C
TagType = 9
DataSize = 0x00000020
Timestamp = 0x00000001
TimestampExtended = 0x00
StreamID = 0x00000000
FrameType = 1 (关键帧)
CodecID = 7 (AVC)
AVCPacketType = 1
CompositionTime = 0x01B4

这个视频标签表示一个H.264编码的关键帧,包含NALU单元和合成时间信息。

五、相关问题与解答

FLV文件是否支持多音频流?

:不支持,一个FLV文件最多只能包含一个音频流和一个视频流,如果需要多路复用,可以使用其他容器格式如MP4。

FLV文件中的时间戳如何理解?

:FLV文件的时间戳表示的是该标签相对于第一个标签的时间偏移量,单位为毫秒,时间戳用于同步音视频播放。

3. FLV文件相比其他容器格式有何优缺点?

:优点是封装后的文件较小,适合网络传输;缺点是不支持多音轨和多视频轨,功能较为简单。

以上内容就是解答有关“flv音视频存储规范”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/734479.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seoK-seo
Previous 2024-12-14 20:21
Next 2024-12-14 20:25

相关推荐

  • 如何处理音视频同步问题?

    处理音视频同步问题音视频同步是多媒体制作中的一个重要环节,它确保音频和视频在播放时能够完美对齐,提供流畅的观看体验,以下是一些常见的音视频同步问题及其解决方法:1. 音视频不同步的原因硬件性能不足:计算机或设备处理能力不足以同时处理高质量的音频和视频流,软件设置不当:播放器或编辑软件的设置不正确,导致音视频播放……

    2024-12-14
    05

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入