FLV封装格式

合集下载

flv.js 原理

flv.js 原理

flv.js 原理
flv.js 是一个基于HTML5 Web 技术实现的FLV 播放器插件,其原理可以简单概括如下:
1. 获取视频文件
flv.js 通过XMLHttpRequest 对象从服务器获取视频文件,或者采用sae 物理文件作为视频源来播放。

2. 解析视频封装格式
flv.js 会先读取视频文件的封装格式,其中FLV 是一种常见的视频封装格式,该封装格式把音频、视频、脚本数据等信息按照时间轴顺序打包起来,然后传输到客户端。

3. 解析音视频数据
flv.js 根据视频文件的封装格式,提取并解析出其中的音频、视频数据等信息。

随后,它会根据音视频编码格式,采用相应的解码器对这些数据进行解码。

4. 将音视频数据绘制到画布上
flv.js 将解码后的音视频数据,绘制到Canvas 画布上来显示视频内容。

5. 实现核心功能
flv.js 实现了基本的播放功能,包括播放、暂停、快进、快退、音量调节、画面缩放等。

同时,它还支持多路音频和多流媒体同步播放等高级功能。

总之,flv.js 利用HTML5 技术实现了FLV 视频的解码、播放等核心功能,使得我们可以在Web 上直接播放FLV 视频。

FLV封装格式解析

FLV封装格式解析

FLV封装格式解析本⽂为作者原创,转载请注明出处:FLV (Flash Video) 是由 Adobe 公司推出的⼀种封装格式,主要⽤于流媒体系统。

FLV 封装的媒体⽂件具有体积轻巧、封装播放简单等特点,很适合⽹络应⽤。

⽬前各浏览器普遍使⽤ Flash Player 作为⽹页播放器,使得安装有浏览器的计算机终端不需要另外安装播放器,这也是 FLV 格式⼴为流⾏的原因之⼀。

FLV 封装格式的⽂件扩展名为 .flv。

FLV ⽂件主要由⼀个 Header 加上由多个 Tag 组成的 Body 构成。

如下所述:1. FLV Header所有 FLV 格式⽂件都以 FLV Header 开头。

FLV Header 类型是 FLVHEADER,FLVHEADER 定义如下:字段类型说明Signature UI8'F' (0x46)Signature UI8'L' (0x4C)Signature UI8'V' (0x56)Version UI8FLV 版本。

例如,0x01 表⽰ FLV 版本 1TypeFlags UI8b[0] 是否存在视频流b[2] 是否存在⾳频流其他字段保留,值为0DataOffset UI32FLV Header 长度(字节)在 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 交织构成。

HTTP-FLV协议分析,低延迟直播的另外一种选择

HTTP-FLV协议分析,低延迟直播的另外一种选择

HTTP-FLV协议分析,低延迟直播的另外⼀种选择直播协议 HTTP-FLV 详解⼀、什么是FLV和HTTP-FLVFLV(Flash Video)是随着Flash MX的推出⽽发展⽽来的⼀种新兴的。

FLV⽂件体积⼩巧,清晰的FLV视频1分钟在1MB左右,⼀部在100左右,是普通视频⽂件体积的1/3。

再加上CPU占有率低、良好等特点使其在⽹络上盛⾏,在flash独领风骚的年代,⽹上的⼏家著名⽹站均采⽤FLV⽂件提供视频,就充分证明了这⼀点。

⽽HTTP-FLV 即将流媒体数据封装成 FLV 格式,然后通过 HTTP 协议传输给客户端。

HTTP-FLV 依靠 MIME 的特性,根据协议中的Content-Type 来选择相应的程序去处理相应的内容,使得流媒体可以通过 HTTP 传输。

相较于 RTMP 协议,HTTP-FLV 能够好的穿透防⽕墙,它是基于 HTTP/80 传输,有效避免被防⽕墙拦截。

除此之外,它可以通过 HTTP 302 跳转灵活调度/负载均衡,⽀持使⽤ HTTPS 加密传输,也能够兼容⽀持 Android,iOS 的移动端。

⼆、HTTP-FLV⽂件格式FLV ⽂件格式标准是写在的附录 E ⾥⾯的 FLV File Format。

FLV的⽂件是由⽂件头和⽂件组成,⽂件头包含了⼀系列⽂件信息。

通常,FLV 的前 13 个字节(flv header + PreviousTagSize0)完全相同,所以,程序中会单独定义⼀个常量来指定。

Timestamp 和 TimestampExtended 组成了这个 TAG 包数据的 PTS 信息,PTS = Timestamp | TimestampExtended << 24。

AAC ⾳频编码的 Tag 格式。

AudioTagHeader 的第⼀个字节,也就是接跟着 StreamID 的 1 个字节包含了⾳频类型,采样率等的基本信息。

AudioTagHeader 之后跟着的就是 AUDIODATA 部分了。

flv h265扩展标准

flv h265扩展标准

FLV是一种常用的视频封装格式,而H.265是一种高效的视频压缩标准。

为了在FLV格式中封装H.265数据,需要扩展FLV标准以增加对H.265的支持。

具体来说,扩展FLV标准需要增加一个CodecID字段,用于标识视频流的编码格式。

在FLV格式中,每个视频流都有一个与之关联的CodecID,用于告诉解码器如何解码该视频流。

对于H.265视频流,需要将其CodecID设置为特定的值,以便解码器能够正确识别和处理该视频流。

扩展FLV标准还需要考虑与现有FLV标准的兼容性。

这意味着在扩展FLV标准时,需要确保新的FLV文件仍然能够被现有的FLV播放器和解码器正确识别和处理。

总之,扩展FLV标准以支持H.265需要增加一个CodecID字段,并确保与现有FLV 标准的兼容性。

这些扩展和修改可以确保在FLV格式中封装和传输H.265视频数据时能够正确解码和处理。

常用视频文件格式大全

常用视频文件格式大全

常用视频文件格式大全3GP3GP是一种3G流媒体的视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是目前手机中最为常见的一种视频格式。

目前,市面上一些安装有Realplay播放器的智能手机可直接播放后缀为rm的文件,这样一来,在智能手机中欣赏一些rm格式的短片自然不是什么难事。

然而,大部分手机并不支持rm格式的短片,若要在这些手机上实现短片播放则必须采用一种名为3GP的视频格式。

目前有许多具备摄像功能的手机,拍出来的短片文件其实都是以3GP 为后缀的.ASFASF 是Advanced Streaming format 的缩写,由字面(高级流格式)意思就应该看出这个格式的用处了吧。

说穿了ASF 就是MICROSOFT 为了和现在的Real player 竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式!由于它使用了MPEG4 的压缩算法,所以压缩率和图像的质量都很不错。

因为ASF 是以一个可以在网上即时观赏的视频“流”格式存在的,所以它的图象质量比VCD 差一点点并不出奇,但比同是视频“流”格式的RAM 格式要好。

不过如果你不考虑在网上传播,选最好的质量来压缩文件的话,其生成的视频文件比VCD (MPEG1)好是一点也不奇怪的,但这样的话,就失去了ASF 本来的发展初衷,还不如干脆用N AVI 或者DIVX 。

但微软的“子第”就是有它特有的优势,最明显的是各类软件对它的支持方面就无人能敌。

AVIAVI——Audio Video Interleave,即音频视频交叉存取格式。

1992年初Microsoft公司推出了AVI技术及其应用软件VFW(Video for Windows)。

在AVI文件中,运动图像和伴音数据是以交织的方式存储,并独立于硬件设备。

这种按交替方式组织音频和视像数据的方式可使得读取视频数据流时能更有效地从存储媒介得到连续的信息。

构成一个AVI文件的主要参数包括视像参数、伴音参数和压缩参数等。

高清视频格式详解

高清视频格式详解

你好,mkv、rmvb、avi、MP4、flv、wmv这些指的都是文件格式,也就是封装格式,而不是真正的数据压缩格式,至于他们的特点,下面分别来说。

首先纠正一下上面说的一个观点,其实mkv和avi并不能说成是高清格式,所谓的高清(High Definition )指的是分辨率达到一定水平之上才称之为高清,像720p、1080i、1080p、a1080、a720、816p 。

进行高清视频编码时一般使用的编码格式为H.264、VC-1,而进行封装时可以使用mkv、mp4、avi这类文件格式进行封装。

所以mkv、avi只是一种封装格式,里面装的视频如果是一个320x240分辨率的,那这个视频就不是一个高清视频。

下面说说这几种格式的特点。

1、mkv:mkv不等同于音频或视频编码格式,它只是为这些进行过音视频编码的数据提供了一个封装的格式,简单的说就是指定音视频数据在文件中如何排列放置。

MKV最大的特点就是能容纳多种不同类型编码的视频、音频及字幕流,俗称万能媒体容器。

MKV加入AVI所没有的EDC错误检测代码,这意味着即使是没有下载完毕的MKV文件也可以顺利回放,这些对AVI来说完全是不可想象的。

虽然MKV加入了错误检测代码,但由于采用了新的更高效的组织结构,用MKV封装后的电影还是比AVI源文件要小了约1%,这就是说即使加上了多个字幕,MKV文件的体积也不可能比AVI文件大。

MKV支持可变帧率,它可在动态画面中使用较大的帧率,而在静态画面中使用较小的帧率,这样可以有效的减少视频文件的体积,并改善动态画面的质量。

它的作用比目前广泛使用的VBR(可变码率)更为明显。

2、avi 可容纳多种类型的音频和视频流,他的封装格式比较老了,在功能上不能像mkv那样满足更多的需求3、rmvb 是rm的升级版本,vb代表变比特率,意思是在画面平缓的时候采用低比特率,画面变化剧烈的时候采用高比特率,有效降低文件尺寸,又不影响太多画质。

Flash Video系列编码格式

Flash Video系列编码格式

Flash Video系列编码格式用于在Flash 中压缩视频。

FLV流媒体格式是一种新的视频格式,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上有效使用等缺点。

一般FLV文件包在SWF PLAYER 的壳里,并且FLV可以很好的保护原始地址,不容易被下载到,从而起到保护版权的作用。

∙文件名: .flv, .f4v, .f4p, .f4a, .f4b∙媒体类型:video/x-flv, video/mp4, video/x-m4v, audio/mp4a-latm, video/3gpp, video/quicktime, audio/mp4∙厂家:Adobe Systems (originally developed by Macromedia)∙Type of format:Media container∙Container for :Audio, video, text, data Extended from∙扩展:FLV: SWF ,F4V: MPEG-4 Part 12Flash介绍Flash Video是一个文件容器格式,是Adobe Flash播放器版本6-10用于在互联网上传递视频。

Flash视频内容也可以封装在SWF文件。

Flash视频有两种不同的文件格式:FLV和F4V。

FLV文件中,同SWF文件一样音频和视频数据采用相同方式进行编码。

晚出现的F4V,它的格式是基于ISO为基础的媒体文件格式,并在Flash Player 9 update 3中开始得到支持。

这些格式Adobe Flash播放器都能支持,并由Adobe公司开发,其中FLV最找石油Macromedia公司开发的。

Flash视频FLV文件所包含的媒体的编码通常采用Sorenson Spark和VP6视频压缩格式。

最新发布的Flash播放器支持H.264视频和HE-AAC音频。

ffmpeg flv编码

ffmpeg flv编码

ffmpeg flv编码(最新版)目录1.FFmpeg 简介2.FLV 格式概述3.FFmpeg 中的 FLV 编码4.使用 FFmpeg 进行 FLV 编码的实例5.总结正文【1.FFmpeg 简介】FFmpeg 是一套完整的跨平台的音视频处理解决方案,用于处理音视频数据。

它包括了 libavcodec(音视频编解码库),libavformat(音视频格式处理库),libavutil(通用工具库),以及 ffmpeg(命令行工具)等。

FFmpeg 广泛应用于网站、嵌入式设备、游戏等领域,实现了音视频的采集、编解码、处理、格式转换等功能。

【2.FLV 格式概述】FLV(Flash Video)是一种音视频容器格式,用于存储音频、视频流等多媒体数据。

它由 Adobe 公司开发,用于在 Web 上实现音视频的快速、流畅播放。

FLV 格式具有体积小、传输速度快、兼容性好等特点,广泛应用于网络视频领域。

【3.FFmpeg 中的 FLV 编码】在 FFmpeg 中,可以通过指定不同的编解码器、参数和选项,实现对音视频数据进行 FLV 编码。

编码过程中,可以对音频、视频数据进行压缩、处理、封装等操作,以满足不同应用场景的需求。

FFmpeg 支持多种音视频编解码器,如 H.264、H.265、AAC 等,可以根据实际需求选择合适的编解码器进行 FLV 编码。

【4.使用 FFmpeg 进行 FLV 编码的实例】以下是一个使用 FFmpeg 进行 FLV 编码的实例:```ffmpeg -i input.mp4 -c:v libx264 -c:a aac -b:v 1000k -b:a 128k -ac 2 output.flv```在这个命令中,`input.mp4`表示输入的音视频文件,`libx264`和`aac`分别表示视频和音频编解码器,`-b:v 1000k`和`-b:a 128k`表示视频和音频的码率,`-ac 2`表示音频声道数,`output.flv`表示输出的 FLV 文件。

FLV简介——精选推荐

FLV简介——精选推荐

FLV简介FLV (Flash Video) 是由 Adobe 公司推出的⼀种封装格式,主要⽤于流媒体系统。

FLV 封装的媒体⽂件具有体积轻巧、封装播放简单等特点,很适合⽹络应⽤。

⽬前各浏览器普遍使⽤ Flash Player 作为⽹页播放器,使得安装有浏览器的计算机终端不需要另外安装播放器,这也是 FLV 格式⼴为流⾏的原因之⼀。

FLV ⽂件主要由⼀个 Header 加上由多个 Tag 组成的 Body 构成。

⼀、FLV Header(UI8表⽰⽆符号8位,也就是⼀个字节;UB[5]表⽰⼀个字节中的5位)⼆、FLV Body(Flv Body由⼀个⼀个Tag组成,每个Tag前都有⼀个PerviousTagSize字段,标记着前⾯⼀个Tag的⼤⼩。

)Tag有三种类型,Audio Tag(⾳频Tag),Video Tag(视频Tag),script Tag(⼜称Metadata Tag)每个Tag由Tag Header和Tag Data组成,对于不同类型的Tag,Tag Header的格式都是相同的(都是11byte的长度),Tag Body的格式就不⼀样了。

综上所述FLV整体的结构如下图:1、AudioTag Data如果SoundFormat=10,那么⾳频数据就是AACAUDIODATA。

2、Video Tag Data对于H.264数据来说,CodecID = 7。

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

3、Script Tag Data该类型Tag⼜通常被称为MetadataTag,会放⼀些关于FLV视频和⾳频的元数据信息如:duration、width、height等。

通常该类型Tag会跟在FileHeader后⾯作为第⼀个Tag出现,⽽且只有⼀个。

第⼀个AMF包:第⼀个字节⼀般为0x02,表⽰字符串,第2-3个字节表⽰字符串的长度,⼀般为0x000A,后⾯跟的就是字符串,⼀般为"onMetaData"。

视频格式mkv、mp4、avi、flv、mov、wmv、webm特点和区别

视频格式mkv、mp4、avi、flv、mov、wmv、webm特点和区别

视频格式mkv、mp4、avi、flv、mov、wmv、webm特点和区别mkv是⼀种多媒体封装格式,这个封装格式可把多种不同编码的影像及 16 条或以上不同格式的⾳频和语⾔不同的字幕封装到⼀个 Matroska Media 档内。

它也是其中⼀种开放原始码的多媒体封装格式。

很多⼈把 Matroska 称作 mkv,其实 mkv 只是 Matroska 媒体系列的其中⼀种档案格式。

Matroska 最⼤的特点是能容纳多种不同类型编码的视频、⾳频及字幕流,俗称万能媒体容器。

Matroska媒体定义了三种类型的档,以 MKV 最为常见。

MKV(Matroska Video File):视讯档,可以包含⾳讯和字幕;MKA(Matroska Audio File):单⼀的⾳讯档,可以有多条及多种类型的⾳轨;MKS (Matroska Subtitles):字幕⽂件。

MKV 加⼊ AVI 所没有的 EDC 错误检测代码,这意味着即使是没有下载完毕的 MKV ⽂件也可以顺利回放,这些对AVI来说完全是不可想象的。

虽然 MKV 加⼊了错误检测代码,但由于采⽤了新的更⾼效的组织结构,⽤ MKV 封装后的电影还是⽐ AVI 源⽂件要⼩了约1%,这就是说即使加上了多个字幕,MKV⽂件的体积也不可能⽐ AVI ⽂件⼤。

MKV ⽀持可变帧率,它可在动态画⾯中使⽤较⼤的帧率,⽽在静态画⾯中使⽤较⼩的帧率,这样可以有效的减少视频⽂件的体积,并改善动态画⾯的质量。

它的作⽤⽐⽬前⼴泛使⽤的 VBR(可变码率)更为明显。

mp4MP4 是⼀套⽤于⾳频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电⼯委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定,MPEG-4 格式的主要⽤途在于⽹络流、光盘、语⾳视频电话,以及电视⼴播。

MPEG 组织⽐较成功的标准有 MPEG-1、MPEG-2、MPEG-3 等。

各种视频格式的定义及说明

各种视频格式的定义及说明

各种视频格式的定义及说明Avi格式:Avi是音频视频交错(Audio Video Interleaved)的英文缩写。

Avi这个由微软公司发表的视频格式,在视频领域可以说是最悠久的格式之一。

Avi格式调用方便、图像质量好,压缩标准可以任意选择,是应用最广泛的格式。

Mov格式:QuickTime原本是Apple公司用于Mac计算机上的一种图像视频处理软件。

QuickTime提供了两种数字视频格式,即基于Indeo压缩法的*.mov和基于MPEG 压缩法的*.mpg视频格式。

Asf格式:Advanced Streaming Format(高级流格式)。

Asf是Microsoft为了和现在的Real Player竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式。

Asf 使用了MPEG4的压缩算法,压缩率和图像的质量都很不错。

因为asf是以一个可以在网上即时观赏的视频“流”格式的存在的,所以它的图像质量比VCD差一点点并不出奇,但比同是视频“流”格式的ram格式要好。

Wmv格式:一种独立于编码方式的在Internet上实时传播多媒体的技术标准,Microsoft 公司希望用其取代QuickTime之类的技术标准以及wav、avi之类的文件扩展名。

Wmv的主要优点在于:可扩充的媒体类型、本地或网络回放、可伸缩的媒体类型、流的优先级化、多语言支持、扩展性等。

Navi格式:Navi是New avi的缩写,是一个名为Shadow Realm的地下组织发展起来的一种新视频格式。

它是由Microsoft ASF压缩算法修改而来的,视频格式追求的无非是压缩率和图像质量,所以navi为了追求这个目标,改善了原始的asf格式的一些不足,让navi可以拥有更高的帧率。

可以这样说,navi是一种去掉视频流特性的改良型asf格式。

3gp格式:3gp是一种3G流媒体的视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是目前手机中最为常见的一种视频格式。

直播使用flv的开发流程

直播使用flv的开发流程

直播使用flv的开发流程介绍在直播领域,使用FLV(Flash Video)作为视频格式的方式非常常见。

FLV具有较低的延迟和较好的兼容性,适用于实时性要求较高的直播场景。

本文将介绍使用FLV进行直播开发的流程。

步骤1.选择适合的开发平台:–可以选择使用基于Flash技术的开发平台,如Adobe Flash、OpenFL等。

–也可以选择使用HTML5技术进行开发,利用HTML5中的<video>标签以及相应的JavaScript库来实现直播功能。

2.确定视频采集方式:–如果直播内容来自摄像头,需要选择适合的视频采集设备或者调用浏览器的摄像头接口进行视频采集。

–如果直播内容来自视频文件,则需要将视频文件解码并进行处理。

3.实时编码:–将采集到的视频数据进行编码,以满足FLV格式的要求。

常用的编码方式包括H.264、VP6等。

–同时,还需要对音频数据进行编码,常用的编码方式包括AAC、MP3等。

4.封装成FLV格式:–将编码后的视频和音频数据按照FLV格式进行封装。

FLV文件由header、body和previous tag size组成。

–头部信息包括文件类型、版本号等,体部信息包括视频和音频tag的数据。

5.传输和接收:–将生成的FLV文件通过网络传输到服务器,或者使用流媒体服务器进行推流。

–接收方可以通过传统的RTMP协议接收FLV文件,也可以通过使用WebSocket等技术进行接收。

6.解封装和解码:–在接收端,需要对传输过来的FLV文件进行解封装,获取视频和音频tag的数据。

–然后,将解封装后的数据进行解码,得到原始的视频和音频数据。

7.播放和显示:–对解码后的视频和音频数据进行播放和显示。

在基于Flash的平台中,可以使用NetStream类进行播放。

–在HTML5的开发中,可以使用<video>标签和相应的JavaScript库进行视频的播放和显示。

8.实现其他功能:–根据需要,可以实现其他功能,如清晰度切换、直播间管理、弹幕等等。

FLV封装格式

FLV封装格式

FLV封装格式简介FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式,由于其封装后的⾳视频⽂件体积⼩、封装简单等特点,⾮常适合于互联⽹上使⽤。

⽬前主流的视频⽹站基本都⽀持FLV。

采⽤FLV格式封装的⽂件后缀为.flv。

FLV封装格式是由⼀个⽂件头(file header)和⽂件体(file Body)组成。

其中,FLV body由⼀对对的(Previous Tag Size字段 + tag)组成。

Previous Tag Size字段排列在Tag 之前,占⽤4个字节。

Previous Tag Size记录了前⾯⼀个Tag的⼤⼩,⽤于逆向读取处理。

FLV header后的第⼀个Pervious Tag Size的值为0。

Tag⼀般可以分为3种类型:脚本(帧)数据类型、⾳频数据类型、视频数据。

FLV数据以⼤端序进⾏存储,在解析时需要注意。

⼀个标准FLV⽂件结构如下图:数据结构FLV⽂件的详细内容结构如下图:FLV header FLV头占9个字节,⽤来标识⽂件为FLV类型,以及后续存储的⾳视频流。

⼀个FLV⽂件,每种类型的tag都属于⼀个流,也就是⼀个flv⽂件最多只有⼀个⾳频流,⼀个视频流,不存在多个独⽴的⾳视频流在⼀个⽂件的情况。

下⾯以实际的⼀个⽂件头为例,来看看FLV Header:结构如下:Field size pos value comment签名u800x46'F'签名u810x4c'L'签名u820x56'V'版本u830x01FLV版本:0x01表⽰版本1保留字段 5 (bit)400000(0x05: 0000 0101)默认0⾳频流标识1 (bit)41(0x05: 0000 0101)是否存在⾳频流:1有⾳频流保留字段 1 (bit)40(0x05: 0000 0101)默认0视频流标识1 (bit)41(0x05: 0000 0101)是否存在视频流:1有视频流⽂件头⼤⼩u3250x09FLV版本1时填写9,表明的是FLV头的⼤⼩,为后期的FLV版本扩展使⽤。

FLV文件格式解析

FLV文件格式解析

FLV文件格式解析FLV(Flash Video)是现在非常流行的流媒体格式,由于其视频文件体积轻巧、封装播放简单等特点,使其很适合在网络上进行应用,目前主流的视频网站无一例外地使用了FLV格式。

另外由于当前浏览器与Flash Player紧密的结合,使得网页播放FLV视频轻而易举,也是FLV流行的原因之一。

FLV视频格式是Adobe公司设计开发的,目前已经免费开放,现在的版本是v10。

下面我们就了解一下FLV文件格式。

FLV是流媒体封装格式,我们可以将其数据看为二进制字节流。

总体上看,FLV包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的Tag及Tag Size 对组成。

因此一个FLV文件看上去是下面的结构:其中,Previous Tag Size紧跟在每个Tag之后,占4个字节表示一个UI32类型的数值,表示前面一个Tag的大小。

需要注意的是,Previous Tag Size #0的值总是为0。

Tag 类型包括视频、音频和Script,且每个Tag只能包含一种类型的数据。

下面我们看看File Header和Tag的具体结构,为了方便大家理解,我贴一个实际FLV文件的字节流图片,图片中把不同部分区分了颜色。

一、File Header结构File Header在当前版本中总是由9个字节组成,如图中蓝色区域所示。

第1-3字节为文件标识(Signature),总为“FLV”(0x46 0x4C 0x56),如图中紫色区域。

第4字节为版本,目前为1(0x01)。

第5个字节的前5位保留,必须为0。

第5个字节的第6位表示是否存在音频Tag。

第5个字节的第7位保留,必须为0。

第5个字节的第8位表示是否存在视频Tag。

第6-9个字节为UI32类型的值,表示从File Header开始到File Body开始的字节数,版本1中总为9。

二、File Body结构In playback, the time sequencing of FLV tags depends on the FLV timestamps only. Any timing mechanisms built into the playload data format are ignored.三、Previous Tag Size结构如图中红色位置所示。

flv 的编码方式

flv 的编码方式

flv 的编码方式
FLV是一种流媒体文件格式,主要用于网络传输,例如在视频分享网站上。

FLV文件可以使用多种编码方式进行压缩,以下是一些常见的编码方式:
1. H.264:也被称为AVC(Advanced Video Coding),这是一种广泛使用的视频压缩标准,具有高压缩比和良好的视频质量。

H.264是FLV文件最常见的编码方式之一,特别是在高清和超高清视频中。

2. H.265:也被称为HEVC(High Efficiency Video Coding),是H.264的继任者,具有更高的压缩效率和更好的视频质量。

H.265编码的FLV 文件在较新的设备和环境中越来越常见。

3. VP8/VP9:VP8和VP9是开源的视频压缩标准,旨在提供更好的视频质量和更低的带宽消耗。

虽然它们不如H.264和H.265常见,但一些网站和流媒体服务仍使用VP8/VP9编码的FLV文件。

需要注意的是,FLV文件也可以使用AAC或MP3等音频编码格式进行压缩,以提供高质量的音频效果。

此外,FLV文件还可以使用多种封装格式,例如TS(Transport Stream)和MP4等,这些封装格式可以提供更好的多平台兼容性和更好的流媒体传输性能。

音视频封装格式、编码格式知识

音视频封装格式、编码格式知识

音视频封装格式、编码格式知识常见的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等文件其实只能算是一种封装标准。

一个完整的视频文件是由音频和视频2部分组成的。

H264、Xvid等就是视频编码格式,MP3、AAC等就是音频编码格式。

例如:将一个Xvid视频编码文件和一个MP3视频编码文件按AVI封装标准封装以后,就得到一个AVI后缀的视频文件,这个就是我们常见的AVI视频文件了。

由于很多种视频编码文件、音频编码文件都符合AVI封装要求,则意味着即使是AVI后缀,也可能里面的具体编码格式不同。

因此出现在一些设备上,同是AVI后缀文件,一些能正常播放,还有一些就无法播放。

同样的情况也存在于其他容器格式。

即使RMVB、WMV等也不例外。

部分技术先进的容器还可以同时封装多个视频、音频编码文件,甚至同时封装进字幕,如MKV封装格式。

MKV 文件可以做到一个文件包括多语种发音、多语种字幕,适合不同人的需要。

例如:MKV文件只要制作的时候同时加入国语和粤语发音的音轨和对应的简体、繁体字幕,播放的时候,你可以独立选择国语或粤语发音,并根据自己需要选择简体或繁体字幕,也可以选择不显示字幕。

相当方便。

因此,视频转换需要设置的本质就是:A设置需要的视频编码、B设置需要的音频编码、C 选择需要的容器封装。

一个完整的视频转换设置都至少包括了上面3个步骤。

常用的有Xvid,H264,MPEG1,MPEG2。

Xvid:与RMVB格式差不多的压缩率,通用性很强,特别是用于家用DVD和便携式MP4等设备。

H264:面前压缩率最高的视频压缩格式,与其他编码格式相比,同等画面质量,文件体积最小,远远超过RMVB编码格式,电脑都可以播放,部分便携式视频设备也支持,如苹果播放器。

PDA/PPC等设备也可以使用MPEG1:其实就是VCD编码格式。

MPEG2:DVD编码格式。

比MPEG1强,与MPEG1一样,已经落后的编码格式,压缩率都不高,编码后的文件体积大,多用于希望把网上下载的文件转换为VCD或DVD碟的时候。

文件封装格式与元数据概念

文件封装格式与元数据概念

文件封装格式与元数据概念文件封装概念封装格式(也叫容器),就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以。

说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。

文件封装格式AVI:微软在90年代初创立的封装标准,是当时为对抗quicktime 格式(mov)而推出的,只能支持固定CBR恒定比特率编码的声音文件。

FLV:针对于h.263家族的格式。

MKV:万能封装器,有良好的兼容和跨平台性、纠错性,可带外挂字幕。

MOV:MOV是Quicktime封装。

MP4:主要应用于mpeg4的封装 。

RM/RMVB:Real Video,由RealNetworks开发的应用于rmvb和rm 。

TS/PS:PS封装只能在HDDVD原版。

WMV:微软推出的,作为市场竞争。

元数据概念元数据被定义为:描述数据的数据,对数据及信息资源的描述性信息。

元数据(Metadata)是描述其它数据的数据(data about other data),或者说是用于提供某种资源的有关信息的结构数据(structured data)。

元数据是描述信息资源或数据等对象的数据,其使用目的在于:识别资源;评价资源;追踪资源在使用过程中的变化;实现简单高效地管理大量网络化数据;实现信息资源的有效发现、查找、一体化组织和对使用资源的有效管理。

元数据的主要特点元数据的基本特点主要有:a)元数据一经建立,便可共享。

元数据的结构和完整性依赖于信息资源的价值和使用环境;元数据的开发与利用环境往往是一个变化的分布式环境;任何一种格式都不可能完全满足不同团体的不同需要;b)元数据首先是一种编码体系。

元数据是用来描述数字化信息资源,特别是网络信息资源的编码体系,这导致了元数据和传统数据编码体系的根本区别;元数据的最为重要的特征和功能是为数字化信息资源建立一种机器可理解框架。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FLV封装格式
FLV简介 (1)
总体及File Header结构 (1)
Tag结构 (2)
音频TagData结构 (2)
视频TagData结构 (3)
Script TagData结构 (4)
总结 (5)
FLV简介
FLV全称是Flash Video,是互联网上使用极为广泛的视频封装格式。

像爱奇艺,优酷等这类视频网站,都使用FLV封装视频。

本文主要介绍FLV文件的组成结构。

虽然网络上现成的介绍FLV 的帖子成百上千,但我还是觉得有必要自己也写一篇。

一来自己写一遍可加强理解,二来网络上的帖子可能并不适合自己理解。

最重要的是自己写的可随时修改,当发现内容有误或有新的理解时,可同步更新。

特别强调,FLV文件结构中数值字段的字节序为大端。

总体及File Header结构
FLV由文件头(Flv Header)和文件体(Flv Body)组成。

文件体又由一系列的Previous Tag Size& Tag对组成。

见图1。

PreviousTag Size表示前一Tag的数据大小。

第1个Previous Tag Size 值为0,第2个Previous Tag Size值为Tag#1的数据大小,第3个Previous Tag Size值为Tag#2的数据大小,依此类推。

File Header结构如下图1.1所示:
Signatrue:文件标识,总为“FLV”。

Version:版本号,目前为1。

Flags:最高5位保留,第1位表示是否存在视频,第2位保留必须为0,第3位表示是否存在音频。

例如:文件中同时有音视频,则Flags值为00000101b,即Flags值为5。

HeaderSize:file header所占空间大小,版本1中总为9。

Tag结构
Tag由Tag Header及Tag Data组成。

见图2。

Type:Tag的类型。

包括0x8(音频)、0x9(视频)、0x12(script data),其它值保留。

DataSize:表示Tag Data段数据的大小。

Timestamp:表示Tag的时间戳。

Timestamp_ex:时间戳扩展字节,当Timestamp的3字节数值不够时使用。

做为最高位字节。

StreamID:表示stream id,总是0。

音频TagData结构
Tag有3种类型,包括0x8(音频)、0x9(视频)、0x12(script data)。

每种类型的TagData结构都不同。

下图3为音频TagData结构。

音频参数中各字段的值及其意义如下表所示:
视频TagData结构
下图4为视频TagData结构。

视频参数中各字段的值及其意义如下表所示:
Script TagData结构
Script Tag通常被称为Metadata Tag,会放一些关于FLV视频和音频的元数据信息如:duration、width、height等。

通常此类型Tag会跟在File Header后面作为第一个Tag出现,而且只有一个。

下图5为Script TagData结构。

第一个AMF包:
第1个字节表示AMF包类型,一般总是0x02,表示字符串。

第2-3个字节为UI16类型值,标识字符串的长度,一般总是0x000A(“onMetaData”长度)。

后面字节为具体的字符串,一般总为“onMetaData”(6F,6E,4D,65,74,61,44,61,74,61)。

所以第一个AMF包总共占13字节。

第二个AMF包:
第1个字节表示AMF包类型,一般总是0x08,表示数组。

第2-5个字节为UI32类型值,表示数组元素的个数。

后面即为各数组元素的封装,数组元素为元素名称和值组成的对。

上图5.1中“数组元素结构”部分是推测。

已经确认适用于duration、width、height等常见元素,但并不确认适用于所有元素。

常见的数组元素如下表所示。

总结
网络上有许多优秀的FLV分析工具,flvparse就是其中一个。

使用flvparse工具实际操作分析几个flv文件,验证本文所写是否有误,同时也能加强对FLV文件格式的理解。

相关文档
最新文档