首页 > 其他分享 >视频封装格式FLV

视频封装格式FLV

时间:2024-03-27 22:15:00浏览次数:17  
标签:视频 封装 字节 标签 FLV Tag 格式 数据

FLV的封装格式

FLV(Flash Video)是一种常见的视频封装格式,最初由Adobe公司开发,用于在网络上播放的视频内容。FLV格式通常用于将视频和音频流组合在一起,并以一种紧凑的方式存储在单个文件中。下面是FLV封装格式的一些关键点:

Header记录了FLV的类型,版本、流信息、Header长度等。一般整个Header占9个字节,大于9个字节则表示头部信息在这基础之上还存在扩展数据。FLV Header的信息排布如下所示:

  • Signature(签名):(3字节)FLV文件头部的前3个字节是固定的签名手段,用于标识文件的格式。签名字段的取值通常维FLV 即ASCII字符 F(0x46) 、L(0x4c) 、V(0x56)

  • Version(版本号):(1字节)紧随签名字段之后的一个字节表示FLV格式的版本号。目前标准版本为1。

  • Flag(标志位):(1字节)前5位保留,必须为0.第6位表示是否存在音频Tag。第7位保留,必须为0。第8位表示是否存在视频Tag。

  • DataOffset(数据偏移量):数据偏移量通常占据头部的后4个字节。它表示FLV头部之后的第一个标签(Tag)相对于文件开头的偏移量。这个字段的值通常为9,因为FLV头部通常占用9个字节,所以第一个Tag的偏移量是从文件开头往后9个字节处开始。

FLV Body

FLV 文件的主体部分(Body)是FLV格式文件的一个组成部分,它包含了实际的视频、音频和元数据信息。FLV文件的主体部分主要由一系列的标签(Tags)组成,每个标签都包含了不同类型的数据,如视频帧、音频帧、脚本数据等。这些标签按照时间顺序排列,构成了整个视频文件的内容。
每个FLV标签通常由一个11字节的头部和一个数据部分组成:

  • 头部(Tag Header):FLV标签的头部通常由11个字节组成,包含了关于标签的一些基本信息,如类型、数据长度和时间戳等。FLV标签的头部包括以下字段。

  • 类型(Tag Type):标识标签的类型,如音频帧、视频帧或脚本数据等。

  • 数据长度(Data Size):指示标签数据部分的长度。

  • 时间戳(Timestamp):指示标签的时间戳,用于确定标签的的播放顺序和时间位置。

  • 扩展时间戳(ExtendTimestamp):在时间戳字段达到最大值时使用,指示额外的时间戳信息。

  • 数据部分(TagData):FLV标签的数据部分包含了具体的视频、音频或其他类型的数据。数据部分的内容取决于标签的类型,如视频帧标签将包含视频数据,音频帧标签将包含音频数据,脚本数据标签将包含ActionScript等数据。

FLV Tag

分为两部分Tag Header 和Tag Data。 Tag Header存放了当前Tag的类型,数据长度、时间戳、时间戳扩展、StreamsID等信息,然后再接着数据区TagData。Tag的排布如下:
Tag Data
Tag Data分成 Audio 、Video、Script三种

标签:视频,封装,字节,标签,FLV,Tag,格式,数据
From: https://www.cnblogs.com/doubleconquer/p/18099719

相关文章

  • 统一结果封装
    1、Result一般来说,增删改返回boolean,查询返回对象或集合,还有其他类型的返回数据,前段解析数据比较麻烦,需要返回一个统一的数据结果统一数据返回结果类:data:封装数据(各种类型的,例如boolean、null、json等)code:封装操作类型与是否成功,可以使用枚举类msg:封装特殊信息(操作失败......
  • 封装组合式函数
    封装组件importtype{XtxGuessInstance}from'@/types/components'import{ref}from'vue'/**猜你喜欢组合式函数*/exportconstuseGuessList=()=>{//获取猜你喜欢组件实例constguessRef=ref()//滚动触底事件constonScrolltolower=()=>{guess......
  • csv文件转换yolo格式
    CSV转yoloPython代码示例图转换前转换后Python代码importosimportcsvdefconvert_csv_to_yolo(csv_file,output_dir):withopen(csv_file,'r')asfile:reader=csv.DictReader(file)forrowinreader:filename=ro......
  • 数字格式化为千分位
    数字格式化为千分位.md数字格式化为区域格式实现//方式1functionnumFormat1(num){if(isNaN(num)){return'0'}returnparseFloat(num).toLocaleString()//核心代码}//方式2functionnumFormat2(num){if(isNaN(num)){return'0'}......
  • 封装之打线简介
    https://developer.aliyun.com/article/7403181.Wire bond原理:对金属丝和压焊点同时加热和超声波,接触面便产生塑性变形,并破坏了界面的氧化膜,使其活性化,通过接触面两金属之间的相互扩散,形成金属化合物而完成连接。2.常用线材:金线,Ag合金线,钯铜线,纯铜线。基于0.8mil,20um各种......
  • FFMPEG C++封装(一)(C++ FFMPEG)
    1概述FFMPEG是一个C语言开源视音频编解码库。本文将FFMPG4.1.3进行C++封装,形成C++FFMPG库。2架构架构图如下所示:架构说明:Init初始化FFMPEG库。IStream输入流,FFMPEG的输入音视频文件。Packet音视频数据包Decoder音视频编码器Frame音视频帧FilterGraph音视频......
  • java的封装
    封装概述    java中的封装指的是将一系列有关的事物的共同属性和行为提取出来放到一个类中,隐藏对象的实行和现实细节,仅对外提供公共的访问方式的操作。这样说起来感觉很抽象,也不好理解,这里不妨举一个例子。将配置电脑这个动作看成封装。    这个要怎么理解呢......
  • php:页面链接数据库(封装),其他页面引入方法
    数据库连接get_db_conn.php//创建连接$conn=mysqli_connect($servername,$username,$password,$dbname);<?php//数据库连接参数define('DB_SERVER','localhost');//数据库服务器的地址define('DB_USERNAME','root');//数据库账户define(......
  • 最详细爬虫零基础教程11——html格式提取之xpath
    文章目录一、html和xml二、xpath获取节点属性三、xpath语法四、案例展示总结一、html和xmllxml是一款高性能的PythonHTML/XML解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息。区别:1.xml被设计为传输和存储数据,其焦点是数据的内容2.html是显示......
  • 最详细爬虫零基础教程10——json格式提取之jsonpath
    文章目录一、json数据解析二、案例演示1.解析获得数据2.简化代码3.豆瓣json数据解析总结一、json数据解析用来解析多层嵌套的json数据;JsonPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript,Python,PHP和Java。语......