您现在的位置是:首页» windows系统» Flv文件格式详解,flv格式参数

Flv文件格式详解,flv格式参数

2023-12-05 05:23:10
今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家! Rtmp分析参见: blog.csdn.net/fdsafwagdagadg6576/article/details/109462544本文主要内容来自:FLV格式详解 blog.c

今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!

Rtmp分析参见: blog.csdn.net/fdsafwagdagadg6576/article/details/109462544

本文主要内容来自:FLV格式详解 blog.csdn.net/weixin_42462202/article/details/88661883

该文一层一层介绍了FLV格式.本文对其内容增加了思维导图并补充了实例.

FLV是一种文件格式.类似的还有Mp4.

为什么要对裸流做文件格式封装?即FLV文件和原始文件区别?

1文件播放.原始文件播放读一帧解析一帧.没有整体时长,不能拖拽,倍速播放等音视频控制了.

FLV文件因为有FLV tag保存音视频信息。所以可以显示视频时长,播放进度,拖拽,倍速播放等.

2是协议支持,rtmp协议要求,数据必须Flv格式. rtc协议数据才是裸流。

Flv由“Flv header”和“Flv Body”组成。

Flv Body由一系列的Tag组成,每个Tag又有一个preTagSize字段,标记着前面一个Tag的大小

Header长度一般都是固定的9个字节:

Flv Body由一个一个Tag组成,每个Tag都有一个preTagSize字段,标记着前面一个Tag的大小。

Tag有三种类型, Audio Tag(音频Tag),Video Tag(视频Tag),script Tag(又称Metadata Tag).

每个Tag由“Tag Header”和“Tag Data”组成.Tag=Tag Header+Tag Data.

对于不同类型的Tag,“Tag Header”的格式都是相同的,“Tag Body”的格式就不一样了.

图片说明:3种tag的tag header格式一样,只有Tag type域的值不同,分别是08(音频),09(视频),12(script data).

Notes:注意Flv header和Flv tag header是不同的.

下面这张图归纳一下上面讲的内容,看完后对flv应该有个总体的了解了

一般一个flv文件由一个头部信息,一个script Tag,以及若干个video Tag和audio Tag组成。

图片说明:tag之间是previous tag size

Flv有三种tag:“Audio Tag Data”、“Video Tag Data”、“Script Tag Data”

如果SoundFormat=10,那么音频数据就是AAC AUDIO DATA。

对于H.264数据来说,CodecID= 7。

当CodecID= 7时,视频数据就是 AVCVIDEOPACKET格式。

以下是 AVCDecoderConfigurationRecord的结构

notes: I,P,B帧.h264没有start code 0x00 00 00 01

Type:09(Tag的类型,包括音频(0x08)、视频(0x09)、script data(0x12))

Datasize:00 00 2e(Tag Data部分的大小)

Timestamp:00 00 00(时间戳)

Timestamp_ex:00(时间戳的扩展部分)

因为CodecID=7,所以视频数据就是AVCVIDEOPACKET格式

因为ACVPaketType==0,所以Data=AVCDecoderConfigurationRecord

该类型Tag又通常被称为MetadataTag,会放一些关于FLV视频和音频的元数据信息如:duration、width、height等。通常该类型Tag会跟在FileHeader后面作为第一个Tag出现,而且只有一个。

notes:用amf语法实现metadata数据key-value存储.amf数据的都是"类型+[长度]+值"的形式.

AMF包:第一个字节表示AMF包的类型

第一个字节一般为0x02,表示字符串,第2-3个字节表示字符串的长度,一般为0x000A,后面跟的就是字符串,一般为"onMetaData"。

第一个字节为0x08,表示数组,第2-5个字节表示数组元素个数,后面跟着就是数组的元素,格式为:元素名长度(UI16)+元素名(UI8[n])+元素的值(double),最后以“009”结尾。

补充: Nginx-rtmp之 AMF0的处理 /jimodetiantang/p/8975945.html

这篇blog:有具体的抓包实例分析.对script tag data论述更详细.

notes: amf0和amf3有什么区别?:通常都是amf0, amf3是它的特殊补充.

参见 blog.csdn.net/HandSome696/article/details/72518927

图片说明:此图没有对script tag,video tag,audio tag做区分和具体介绍.

其他参考:多媒体文件格式之FLV: /jimodetiantang/p/8992425.html

(有audio,video各个域的详细说明)

你可以从IE缓存中找到,建议你先清空IE缓存,然后打开视频页面,将其完整的播放一遍,不要关闭页面,打开IE临时文件夹,(参考我的是C:\Documents and Settings\“用户名”\Local Settings\Temporary Internet Files)你可以在 IE工具栏-工具- Internet选项-浏览历史记录-设置中看到IE临时文件夹得路径,然后搜索全部文件(用*做通配字符,将结果按大小排序,最大的那个FLV文件应该就是了)

wwW.Xtw.Com.cN系统网专业的PC、手机系统开发下载平台,HarmonyOS系统、安卓、OS、windows电脑重装系统在线下载安装,操作系统平台技术学习,攻略教程,技术交流。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com

标签: 解析 格式 分析