flv格式用什么打开 打开flv格式的播放器

flv格式用什么打开 打开flv格式的播放器FLV (Flash Video) 是由 Adobe 公司推出的一种封装格式,主要用于流媒体系统 。FLV 封装的媒体文件具有体积轻巧、封装播放简单等特点,很适合网络应用 。目前各浏览器普遍使用 Fl
FLV (Flash Video) 是由 Adobe 公司推出的一种封装格式,主要用于流媒体系统 。FLV 封装的媒体文件具有体积轻巧、封装播放简单等特点,很适合网络应用 。目前各浏览器普遍使用 Flash Player 作为网页播放器,使得安装有浏览器的计算机终端不需要另外安装播放器,这也是 FLV 格式广为流行的原因之一 。
FLV 封装格式的文件扩展名为 .flv 。FLV 文件主要由一个 Header 加上由多个 Tag 组成的 Body 构成 。如下所述:
1. FLV Header
所有 FLV 格式文件都以 FLV Header 开头 。FLV Header 类型是 FLVHEADER,FLVHEADER 定义如下:

flv格式用什么打开 打开flv格式的播放器

文章插图
flv格式用什么打开 打开flv格式的播放器

文章插图
在 FLV 版本 1 中,“数据偏移”字段值为 9 。在 FLV 未来版本中,此字段可兼容更大尺寸的 FLV Header 。
typedef struct {UI8 Signature;UI8 Signature;UI8 Signature;UI8 Version;UI8 TypeFlags;UI32 DataOffset;}FLVHEADER;2. FLV Body
一个 FLV 文件,除开头的 FLV Header 外,剩余部分就是 FLV Body 。FLV Body 由一系列 back-pointer 和 tag 交织构成 。back-pointer 表示前一 tag 大小 。FLV Body 类型是 FLVBODY,FLVBODY 定义如下:
flv格式用什么打开 打开flv格式的播放器

文章插图
flv格式用什么打开 打开flv格式的播放器

文章插图
typedef struct {UI32 PreviousTagSize0;FLVTAG Tag1;UI32 PreviousTagSize1;FLVTAG Tag2;...UI32 PreviousTagSizeN-1;FLVTAG TagN;UI32 PreviousTagSizeN;}FLVBODY;
领取音视频开发资料包:音视频流媒体高级开发FFmpegWebRTCRTMPRTSPHLSRTP播放器
flv格式用什么打开 打开flv格式的播放器

文章插图
flv格式用什么打开 打开flv格式的播放器

文章插图
企鵝君羊994289133领取资料
flv格式用什么打开 打开flv格式的播放器

文章插图
flv格式用什么打开 打开flv格式的播放器

文章插图
企鵝君羊994289133领取资料
3. FLV Tag
FLV Tag 包含音频、视频或脚本元数据、可选的加密元数据和 payload 。FLV Tag 类型是 FLVTAG,FLVTAG 定义如下:
flv格式用什么打开 打开flv格式的播放器

文章插图
flv格式用什么打开 打开flv格式的播放器

文章插图
typedef struct {UB[2] Reserved;UB[1] Filter;UB[5] TagType;UI24 DataSize;UI24 Timestamp;UI8 TimestampExtended;UI24 StreamID; IF TagType == 8AudioTagHeader Header; IF TagType == 9VideoTagHeader Header; IF TagType == 8AUDIODATA Data; IF TagType == 9VIDEODATA Data; IF TagType == 18SCRIPTDATA Data;}FLVTAG;
一个 FLVTAG 中,前 11 个字节是通用 TagHeader,后面紧跟跟着音频 Tag、视频 Tag 或脚本 Tag,其中音频 Tag 和视频 Tag 都包含 TagHeader 和 TagBody 两部分,脚本 Tag 只有 TagBody 部分 。
上面 Timestamp 和 TimestampExtended 两个字段拼成一个 32 位的时间戳,是当前 Tag 的解码时间戳 (DTS) 。对于音频帧来说,PTS 和 DTS 相同 。对于视频帧来说,若含 B 帧,则 PTS 和 DTS 不同,H264 视频帧 PTS = DTS + CTS,CTS 就是 CompositionTime 字段,参考 3.2.1 节 CompositionTime 字段的定义 。
3.1 Audio Tag
Audio Tag 包括 AudioTagHeader 和 AudioTagBody 两部分 。
3.1.1 AudioTagHeader
AudioTagHeader 定义如下:
flv格式用什么打开 打开flv格式的播放器

文章插图
flv格式用什么打开 打开flv格式的播放器

文章插图
格式 3,linear PCM,存储原始 PCM 采样点 。如果采样位深为 8,采样点数据为无符号型 。如果采样位深为 16,采样点数据为小端存储的带符号型 。如果是立体声,左右声道采样点交织存放:左-右-左-右-…
格式 0 与格式 3 的不同之处只有一点:格式 0 存储 16 位采样数据,采用的大小端顺序是创建 FLV 文件的平台所使用的大小端顺序 。因此,不应使用格式 0,而应使用格式 3 。
格式 4 (Nellymoser 16-kHz mono) 和格式 5 (Nellymoser 8 kHz mono),是两种特殊情况, 因为采样率字段无法表示 8 kHz 和 16 kHz 。当采样格式是格式 4 或格式 5 时,Flash 播放器会忽略采样率和声音类型两个字段 。对于其他采样率的 Nellymoser 格式, 即格式 6,则正常使用采样率和声音类型两个字段 。

推荐阅读