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 文件。

  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文件格式的理解。

相关文档
最新文档