当前位置: 首页 > news >正文

音视频入门基础:FLV专题(3)——FLV header简介

一、引言

本文对FLV格式的FLV header进行简介,FLV文件的开头就是FLV header。

进行简介之前,请各位先从《音视频入门基础:FLV专题(1)——FLV官方文档下载》下载FLV的官方文档《video_file_format_spec_v10_1.pdf》和SWF的官方文档《swf-file-format-spec.pdf》。

《video_file_format_spec_v10_1.pdf》总共有89页,《swf-file-format-spec.pdf》总共有243页。本文下面所说的“页数”是指在pdf阅读器中显示的页数:

二、FLV的Simple data types

根据《video_file_format_spec_v10_1.pdf》第74页,FLV的Simple data types(简单数据类型)定义在SWF的官方文档中。Simple data types描述了FLV格式中的每个属性占用多少空间:

所以我们得翻阅SWF的官方文档《swf-file-format-spec.pdf》,该文档第15页到第20页描述了Simple data types(简单数据类型)。

第15页:

第18页:

其中:

SI8:有符号8位整数值。

SI16:有符号16位整数值。

SI32:32位带符号整数值。

SI8[n]:带符号的8位数组。n是数组元素的个数。

SI16[n]:带符号的16位数组。n是数组元素的个数。

UI8:无符号8位整数值。

UI16:无符号16位整数值。

UI32:无符号32位整数值。

UI8[n]:无符号的8位数组。n是数组元素的个数。

UI16[n]:无符号的16位数组。n是数组元素的个数。

UI24[n]:无符号的24位数组。n是数组元素的个数。

UI32[n]:无符号的32位数组。n是数组元素的个数。

UI64[n]:无符号的64位数组。n是数组元素的个数。

SB[nBits]:有符号的位值(nBits是用来存储值的位数)。
UB[nBits]:无符号的位值(nBits是用来存储值的位数)。

FB[nBits]:带符号的定点位值(nBits是用于存储值的位数)。

三、FLV header

根据《video_file_format_spec_v10_1.pdf》第74页,一个FLV文件应以FLV header为开始。可以看出来FLV header中的属性加起来总共占9个字节(Signature占3个字节,Version占1个字节,TypeFlagsReserved+TypeFlagsAudio+TypeFlagsReserved+TypeFlagsVideo占1个字节,DataOffset占4个字节,加起来总共9字节),所以FLV header为9字节:

Signature:FLV header的前3个字节为Signature,为文件格式标识。对于FLV格式,固定为“FLV”(0x46 0x4C 0x56)。

Version:FLV header的第4个字节为Version,为格式版本。对于FLV格式,值必须为1。

FLV header的第5个字节比较特殊:

第5个字节的前5位(8位等于1个字节)是保留位(TypeFlagsReserved),值必须是0。

第6位为音频类型标志(TypeFlagsAudio),值为1表示FLV文件中含有音频,值为0表示不含音频。

第7位也是保留位,值必须是0。
第8位为视频类型标志(TypeFlagsVideo),值为1表示FLV文件中含有视频,值为0表示不含视频。

所以如果FLV header第5个字节的值为0x04(二进制的0b00000100)表示该FLV文件中仅含有音频不含视频;第5个字节的值为0x01(二进制的0b00000001)表示该FLV文件中仅含有视频不含音频;第5个字节的值为0x05(二进制的0b00000101)表示该FLV文件中既含视频也含音频。

DataOffset:FLV header的第6到第9个字节为DataOffset。为整个FLV header的长度,单位为字节。值固定为9。

四、FLV File Body

根据《video_file_format_spec_v10_1.pdf》第74页至75页,在FLV header之后,FLV文件剩下的部分应由PreviousTagSize和Tag组成。FLV文件 = FLV header + PreviousTagSize0 + Tag1 + PreviousTagSize1 + Tag2 + ...+... + PreviousTagSizeN-1 + TagN + PreviousTagSizeN: 

PreviousTagSize0:FLV header之后紧接着的就是PreviousTagSize0,占4个字节,值必须为0。

五、FLV header实例分析

用notepad++打开《音视频入门基础:FLV专题(2)——使用FFmpeg命令生成flv文件》中生成的FLV文件,文件的开头(下图红框中的)就是FLV header。可以看到header为:0x46 0x4C 0x56 0x01 0x05 0x00 0x00 0x00 0x09。由于该FLV header的第5个字节的值为0x05,所以能推测出来该FLV文件中既含视频也含音频:

FLV header之后紧接着的就是PreviousTagSize0,值必须为0:

相关文章:

音视频入门基础:FLV专题(3)——FLV header简介

一、引言 本文对FLV格式的FLV header进行简介,FLV文件的开头就是FLV header。 进行简介之前,请各位先从《音视频入门基础:FLV专题(1)——FLV官方文档下载》下载FLV的官方文档《video_file_format_spec_v10_1.pdf》和…...

python中数据处理库,机器学习库以及自动化与爬虫

Python 在数据处理、机器学习和自动化任务方面非常强大,它的库生态系统几乎涵盖了所有相关领域。我们将从以下几个部分来介绍 Python 中最常用的库: 数据处理库:Pandas、NumPy 等机器学习库:Scikit-learn、TensorFlow、Keras 等自…...

2024最新测评:低代码平台在企业复杂应用场景的适用性如何?

低代码平台种类多,不好一概而论。但最近有做部分低代码平台的测评,供大家参考。 一个月前接到老板紧急任务:调研有没有一款低代码平台能开发我司的软件场景。我司是一家快速发展中的制造业企业,业务遍布全国,需要一个…...

URL中 / 作为字符串,而不是路径。

在Harbor中,仓库路径是二级,有时候在打镜像的时候,会把 / 作为字符串打进去,URL访问的时候有可能就当路径了。 解决办法:/ 转义 %252F...

el-input只能输入指定范围的数字

el-input只能输入指定范围的数字 需求:el-input只能输入指定范围的数字,不采用el-input-number组件。 几个关键点如下 v-model.numbertype"number"min"1" max"999999" 数字的范围 οninput"validity.valid ||(value…...

数据结构编程实践20讲(Python版)—01数组

本文目录 01 数组 arrayS1 说明S2 举例S3 问题:二维网格中的最小路径求解思路Python3程序 S4 问题:图像左右变换求解思路Python3程序 S5 问题:青蛙过河求解思路Python3程序 写在前面 数据结构是计算机科学中的一个重要概念,用于组…...

数据库实验2—1

10-1 查询重量在[40,65]之间的产品信息 本题目要求编写SQL语句&#xff0c; 检索出product表中所有符合40 < Weight < 65的记录。 提示&#xff1a;请使用SELECT语句作答。 表结构: CREATE TABLE product (Pid varchar(20), --商品编号PName varchar(50), --商品名称…...

现代前端框架实战指南:React、Vue.js、Angular核心概念与应用

随着互联网技术的发展&#xff0c;前端开发变得越来越复杂。 为了应对这些挑战&#xff0c;前端框架应运而生&#xff0c;它们提供了丰富的功能和工具&#xff0c;帮助开发者更高效地构建 和维护大型前端应用。前端框架是现代Web开发中不可或缺的一部分&#xff0c;它们提供了…...

MySQL --用户管理

文章目录 1.用户1.1用户信息1.2创建用户1.3删除用户1.4修改用户密码 2.数据库的权限2.1给用户授权2.2回收权限 如果我们只能使用root用户&#xff0c;这样存在安全隐患。这时&#xff0c;就需要使用MySQL的用户管理。 1.用户 1.1用户信息 MySQL中的用户&#xff0c;都存储在系…...

详解前驱图与PV操作

前驱图、PV操作 前驱图与PV操作的结合例子&#xff1a;两个进程的同步问题使用PV操作实现同步 前驱图的实际应用更复杂的场景示例示例1&#xff1a;前驱图与PV操作的结合1. 前驱图表示2. 使用信号量&#xff08;PV操作&#xff09;实现同步进程的执行逻辑&#xff1a; 3. 示例代…...

孩子来加拿大上学真的那么轻松吗?(上)

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 这是拼娃时代第三十一期节目&#xff0c;经过了一年的沉寂&#xff0c;拼娃时代在今年九月份终于恢复更新啦&#xff0c;JunJun老师也…...

【算法篇】二叉树类(1)(笔记)

目录 一、认识二叉树 1. 二叉树的种类 &#xff08;1&#xff09;满二叉树 &#xff08;2&#xff09;完全二叉树 &#xff08;3&#xff09;二叉搜索树 &#xff08;4&#xff09;平衡二叉搜索树 2. 二叉树的存储方式 3. 二叉树的遍历方式 4. 二叉树的定义 二、Leet…...

《C++无锁编程:解锁高性能并发的新境界》

在当今的软件开发领域&#xff0c;并发编程的重要性日益凸显。随着多核处理器的普及&#xff0c;开发者们越来越需要利用并发来提高程序的性能和响应速度。而 C作为一种强大的编程语言&#xff0c;提供了多种技术来实现无锁编程&#xff0c;从而在并发环境下获得更高的性能和更…...

系统架构设计师教程 第9章 9.5 软件可靠性测试 笔记

9.5 软件可靠性测试 ★★★☆☆ 9.5.1 软件可靠性测试概述 软件测试者可以使用很多方法进行软件测试&#xff0c;如按行为或结构来划分输入域的划分测试&#xff0c; 纯粹随机选择输入的随机测试&#xff0c;基于功能、路径、数据流或控制流的覆盖测试等。 软件可靠性测试由可…...

如何使用ssm实现校园体育赛事管理系统的设计与实现+vue

TOC ssm713校园体育赛事管理系统的设计与实现vue 绪论 课题背景 身处网络时代&#xff0c;随着网络系统体系发展的不断成熟和完善&#xff0c;人们的生活也随之发生了很大的变化。目前&#xff0c;人们在追求较高物质生活的同时&#xff0c;也在想着如何使自身的精神内涵得…...

CSS 中的文本相关属性(line - height、font、letter - 属性、text - 属性)

目录 非 VIP 用户可前往公众号回复“css”进行免费阅读 line - height属性 字号与行高的取值约定 行高与盒子高度的关系 font、letter -属性 、text -属性 font属性 letter -属性 text - 属性 非 VIP 用户可前往公众号回复“css”进行免费阅读 line - height属性 字号与…...

mobaxterm、vscode通过跳板机连接服务器

目标服务器&#xff1a;111.111.11.11 跳板机&#xff1a;100.100.10.10 1. mobaxterm通过跳板机连接服务器 1.1 目标服务器信息 1.2 跳板机信息 1.3 登录 点击登录&#xff0c;会输入密码&#xff0c;成功 参考&#xff1a;https://blog.csdn.net/qq_40636486/article/det…...

鸿萌数据恢复:iPhone 手机被盗后应采取哪些措施?警惕这些骗局

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务&#xff0c;并针对企业面临的数据安全风险&#xff0c;提供专业的相关数据安全培训。 丢失昂贵的 iPhone 不仅会造成较大的经济损失&#xff0c;还…...

为了学习Python熬夜部署了Jupyter Notebook 6.x

文章目录 Docker拉取并构建容器安装部署jupyter对Jupyter使用过程问题总结1 没有代码提示怎么办&#xff1f;2 如果想切换python版本了怎么办&#xff1f;3 想在jupyter里面使用vim怎么办&#xff1f; 遇见的问题参考文章 怎么说&#xff0c;今天在学习Python的时候&#xff0c…...

docker-文件复制(docker cp:用于在Docker主机和容器之间拷贝文件或目录)

文章目录 1、把宿主机的文件复制到容器内部1.1、查询 宿主机 root 下的文件1.2、docker cp /root/anaconda-ks.cfg spzx-redis:/root1.3、查看 spzx-redis 容器 中/root目录下是否有 anaconda-ks.cfg 文件 2、把容器中的文件 复制 到宿主机中2.1、查看 spzx-redis 容器 / 下的文…...

终极指南:如何用Snipe-IT免费开源系统解决企业IT资产追踪难题

终极指南&#xff1a;如何用Snipe-IT免费开源系统解决企业IT资产追踪难题 【免费下载链接】snipe-it A free open source IT asset/license management system 项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it 想象一下&#xff0c;你的公司有500台笔记本电…...

保利商旅诺雅品牌首作,长沙保利橘洲诺雅酒店开业

美通社消息&#xff1a;5月15日&#xff0c;由保利发展湖南公司投资兴建、保利商旅产业发展有限公司运营管理的豪华城市度假品牌——诺雅(ORYARD)首店&#xff1a;长沙保利橘洲诺雅酒店&#xff0c;于湘江之畔正式盛大开业。该项目自2026年2月试营业以来&#xff0c;历经数月的…...

基于LLM的智能网页自动化:从意图理解到工程实践

1. 项目概述&#xff1a;当AI学会“看”和“点”&#xff0c;自动化进入新阶段如果你还在为那些需要手动点击、填写表单、抓取数据的重复性网页任务感到头疼&#xff0c;那么browser-use这个项目可能会让你眼前一亮。简单来说&#xff0c;它不是一个普通的浏览器自动化工具&…...

3分钟搞定MASA全家桶汉化包:让Minecraft模组界面说中文的完整指南

3分钟搞定MASA全家桶汉化包&#xff1a;让Minecraft模组界面说中文的完整指南 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 你是否因为MASA模组的英文界面而感到困扰&#xff1f;想要…...

紧急通告:OpenAI已于2024年6月1日灰度上线ChatGPT Pay API V2.1,当前仅向Stripe白名单商户开放(附申请通道+审核时效倒计时)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;ChatGPT实时支付功能在哪里 ChatGPT 本身并不原生支持实时支付功能。OpenAI 官方发布的 ChatGPT&#xff08;包括免费版、Plus 订阅版及 Team/Enterprise 版&#xff09;定位为人工智能对话助手&#xff0c;…...

DLT Viewer:面向汽车电子系统的分布式日志诊断与实时监控技术方案

DLT Viewer&#xff1a;面向汽车电子系统的分布式日志诊断与实时监控技术方案 【免费下载链接】dlt-viewer Diagnostic Log and Trace viewing program 项目地址: https://gitcode.com/gh_mirrors/dl/dlt-viewer DLT Viewer是一款基于COVESA标准的专业诊断日志分析工具&…...

Tungsten自适应采样算法:如何智能分配计算资源提升渲染质量

Tungsten自适应采样算法&#xff1a;如何智能分配计算资源提升渲染质量 【免费下载链接】tungsten High performance physically based renderer in C11 项目地址: https://gitcode.com/gh_mirrors/tu/tungsten Tungsten渲染器的自适应采样算法是一种革命性的渲染优化技…...

独立开发者如何利用 Taotoken 统一管理多个 AI 项目支出

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何利用 Taotoken 统一管理多个 AI 项目支出 对于同时维护多个小型 AI 应用或实验项目的独立开发者而言&#xff0c;成…...

Cadence 16.6 新手避坑指南:从零搭建PCB设计库(OLB、焊盘、封装分类管理)

Cadence 16.6 新手避坑指南&#xff1a;从零搭建PCB设计库&#xff08;OLB、焊盘、封装分类管理&#xff09; 刚接触Cadence 16.6的PCB设计新手&#xff0c;往往会在库文件管理这个环节栽跟头。面对Allegro、Design Entry CIS和Pad Designer这三个核心工具&#xff0c;如何系统…...

如何彻底释放惠普OMEN游戏本性能:终极免费硬件控制工具指南

如何彻底释放惠普OMEN游戏本性能&#xff1a;终极免费硬件控制工具指南 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠普OMEN游戏本官方软件臃肿…...