首页 > 其他分享 >FLV(Flash Video)

FLV(Flash Video)

时间:2024-07-23 21:21:03浏览次数:6  
标签:视频 AAC 音频 Flash FLV Tag Video 文件格式

FLV(Flash Video)是一种用于通过互联网传输视频和音频的文件格式。以下是对FLV文件格式的详细讲解:

1. FLV Header
FLV文件头部包含文件的基本信息,是文件的开头部分,通常占据9个字节。其结构如下:

Signature (3 bytes): 表示文件类型,固定为 "FLV"。
Version (1 byte): 表示FLV文件版本,常见的是版本1。
Type Flags (1 byte): 表示文件中是否包含音频和视频数据。第5位表示音频,第6位表示视频。
Data Offset (4 bytes): 表示FLV头部的长度,通常为9,表示头部之后的数据开始位置。
2. FLV Body
FLV Body包含实际的视频、音频和元数据,由多个FLV Tag组成。

FLV Tag
FLV Tag是FLV文件中数据的基本单元,每个Tag包含一个tag header和tag body。

Tag Header
Tag Header描述了Tag的基本信息:

Type (1 byte): 表示Tag的类型,0x08为音频,0x09为视频,0x12为脚本数据。
Data Size (3 bytes): 表示Tag Body的大小。
Timestamp (3 bytes) and Extended Timestamp (1 byte): 表示Tag的时间戳,用于同步音视频。
StreamID (3 bytes): 保留位,通常为0。
Tag Body
根据Tag类型的不同,Tag Body的结构也不同,主要有以下几种类型:

Script Tag Data结构(脚本类型)
Script Tag用于存储元数据,比如视频时长、宽高等。通常以AMF(Action Message Format)编码。

Audio Tag Data结构(音频类型)
音频Tag包含音频数据,其数据结构如下:

Sound Format (4 bits): 表示音频格式,比如AAC、MP3等。
Sound Rate (2 bits): 表示音频采样率。
Sound Size (1 bit): 表示音频样本大小,0为8位,1为16位。
Sound Type (1 bit): 表示音频声道类型,0为单声道,1为立体声。
AAC Packet Type (1 byte, if AAC): 表示AAC音频包类型,0为AAC sequence header,1为AAC raw。
AAC Audio Data
AAC音频数据包含实际的音频内容,编码方式为AAC。

Video Tag Data结构(视频类型)
视频Tag包含视频数据,其数据结构如下:

Frame Type (4 bits): 表示帧类型,1为关键帧,2为间隔帧,3为显示帧。
CodecID (4 bits): 表示视频编码方式,比如AVC(H.264)。
AVC Packet Type (1 byte, if AVC): 表示AVC视频包类型,0为AVC sequence header,1为AVC NALU,2为AVC end of sequence。
Composition Time (3 bytes, if AVC): 表示帧的显示时间,与解码时间的差值。
AVCVIDEOPACKET
包含实际的视频数据,以NALU的形式存储。

3. 附录
附录部分包含一些额外的信息,比如文件格式的品牌和版本信息。

Major Brand && Minor Version
Major Brand (4 bytes): 表示文件格式的主要品牌。
Minor Version (4 bytes): 表示文件格式的次要版本。
FLV时间戳计算
FLV时间戳用于音视频的同步播放,通常在Tag Header中表示。时间戳的计算公式为:

其中:

Timestamp Low: 为3字节,包含时间戳的低24位。
Extended Timestamp: 为1字节,包含时间戳的高8位。
结论
FLV文件格式通过其头部、主体和Tag结构,实现了音视频数据的高效封装和传输。理解FLV文件格式的各个组成部分和数据结构,有助于在音视频处理和流媒体传输中更好地应用FLV格式,提升音视频的传输效率和播放质量。

标签:视频,AAC,音频,Flash,FLV,Tag,Video,文件格式
From: https://www.cnblogs.com/mxh010211/p/18319631

相关文章

  • xss--flash钓鱼
    一.本机下载小皮面板开启环境     二.下载flash源文件下载地址:crowsec/crowsec_FakeFlashatmaster·crow821/crowsec·GitHub三.下载完成把网站部署在phpstudywww根目录下四新建一个1.js文件然后在xss平台找到flash弹窗钓鱼然后查看他的源代码复制到......
  • STM32读写FLASH
    要点:读写前要解锁并擦除整页才可以重新写入 测试代码#include"my_flash.H"/***@brief往内部FLASH写入数据*@paramaddr写入地址*@parampdata存储待写数据*@retvalNone*/voidFLASH_Inside_Wr(uint32_taddr,uint32_tPdata){//定义局部变......
  • AIGC-DynamiCrafter: Animating Open-domain Images with Video Diffusion Priors-ECC
    论文:https://arxiv.org/pdf/2310.12190代码:https://github.com/Doubiiu/DynamiCrafter?tab=readme-ov-fileMOTIVATIONTraditionalimageanimationtechniquesmainlyfocusonanimatingnaturalsceneswithstochasticdynamics(e.g.cloudsandfluid)ordom......
  • P3041 [USACO12JAN] Video Game G 题解 AC自动机
    本题是一道AC自动机上的dp。首先不难想到状态定义f(i,j)表示仅考虑前i 个位置,第i 个字符是j 的分数,但无法转移,所以考虑将j这一维转化为表示AC自动机上的点。再定义val(i)表示以i 结尾的所有技能种数,则转移方程为f(i,j)=max(f(i,j),f(i-1,father(j)+val(j......
  • 我在 pip install flash-attn 抛出错误时遇到错误
    在此输入代码我当前正在尝试安装“microsoft/Florence-2-large”模型并遵循文档在其github页面上提供。运行pipinstall时flash-attn--no-build-isolation我抛出此错误:Collectingflash_attnUsingcachedflash_attn-2.5.9.post1.tar.gz(2.6MB)Install......
  • Self-supervised Video Object Segmentation by Motion Grouping
    Self-supervisedVideoObjectSegmentationbyMotionGrouping文章目录Self-supervisedVideoObjectSegmentationbyMotionGrouping前言摘要1引言2相关工作3方法3.1流分割架构3.2自监督时间一致性损失3.3讨论4.实验设置4.1.Datasets4.2评价度量4.3.Impl......
  • Keil烧录时出现Error: Flash Download failed - “Cortex-M0+“的解决办法
    在对MSPM0L1306mini板使用dapLink烧录例程时,程序能正常编译,但烧录时出现Error:FlashDownloadfailed - "Cortex-M0+"解决办法(同一个方法两种操作)操作1:操作2:两种操作最后打开的页面相同,最后几步操作也相同:点击【OK】保存修改烧录成功......
  • 芯片SOP8之读写Flash固件XM25QH128CHIQ
    学习使用简易编程器刷写Flash芯片朗读全文Yourbrowserdoesnotsupporttheaudioelement.有什么用救砖修改Flash芯片内容,刷写芯片内容BIOS刷写拯救各种不开机怎么用焊下芯片,或者使用烧录夹(实测这玩意特容易损坏芯片针脚)连接到编程器(下面以CH341A为例)进度2024......
  • KU FPGA FLASH boot失败debug
    原因新板子回来后,测试flash烧录正常,但是无法BOOT,此时SPI设置为X4模式,使用内部时钟,速度90M。烧录过程不报错,校验也正常。FLASH理论支持最大速度108M,90M应该还好。另外板卡预留了EMCCLK外部时钟模式,速率100M也不可行。此时约束如下:set_propertyCONFIG_VOLTAGE3.3[curre......
  • videojs hls视频流播放器
     需要用到的包"video.js":"^8.6.1","videojs-contrib-hls":"^5.15.0", 给两个测试流地址 <el-select v-model="hlsUrl" placeholder="请选择下拉选择下拉选择" clearable :style="{width:'100%&......