Flash Video 是一种网络视频格式,用作流媒体格式,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上有效使用等缺点。
Flash Video,是一种网络视频格式,用作流媒体格式,它的出现有效地解决了视频文件导入 Flash 后,使导出的 SWF 文件体积庞大,不能在网络上有效使用等缺点。 一般 FLV 文件包在 SWF PLAYER 的壳里,并且 FLV 可以很好的保护原始地址,不容易被下载到,从而起到保护版权的作用。
但还是有些视频格式转换软件将 FLV 转成一般的视频格式,如中国的软件格式工厂。随着视频网站的丰富,在 2008 年时这个格式已经非常普及,包括 YouTube、NICONICO 动画、Google Video、Yahoo! Video、MySpace,以及中国的优酷、酷 6 等大部分视频分享网站均采用这个格式。
然而,Flash 存在着包括大量耗电以及信息安全等若干问题,随着移动设备与移动应用程序的发展与普及而日益严重,2010 年乔布斯曾公开抨击。2011 年 11 月 9 日,Adobe 公司宣布停止开发个人电脑平台以外的 Flash Player,而专注于开发非专利标记语言 HTML5。
2016 年,Youtube 已经改采用 HTML5 技术,Google 公司表示 flash 广告会自动转换为 HTML5 形式。2015 年 6 月,Google 宣布公司旗下的 Chrome 浏览器停止了 Flash 外挂的自引导。2015 年 9 月 1 日起,Chrome 浏览器停止支持这些插件,并且 Amazon 公司旗下电子商务和广告平台也停止支持 Flash 技术。
F4V
FLV 在 H.264 的视频规格或是 AAC 的音源规格都达到功能极限,为了克服这个格式上的限制,F4V 于是诞生。F4V 是基于 ISO base media file format 制定出来的容器格式(Container format)。至少于 Flash Player 12.0 update 3 以上版本才能播放。F4V 支持的视频类型为 H.264,影像类型为 GIF、PNG 以及 JPEG,音频类型为 AAC 以及 MP3。
FLV 文件构成
FLV 文件=FLV 头文件+ tag1+tag 内容 1 + tag2+tag 内容 2 + …+… + tagN+tag 内容 N
FLV 头文件
FLV 头文件:(9 字节)
1-3:前 3 个字节是文件格式标识(FLV 0x46 0x4C 0x56)。4-4:第 4 个字节是版本(0x01)5-5:第 5 个字节的前 5 个 bit 是保留的必须是 0.第 5 个字节的第 6 个 bit 音频类型标志(TypeFlagsAudio)第 5 个字节的第 7 个 bit 也是保留的必须是 0第 5 个字节的第 8 个 bit 视频类型标志(TypeFlagsVideo)6-9: 第 6-9 的四个字节还是保留的。其数据为 00000009 .
整个文件头的长度,一般是 9(3+1+1+4)
tag 基本格式
tag 类型信息,固定长度为 15 字节
1-4:前一个 tag 长度(4 字节),第一个 tag 就是 05-5:tag 类型(1 字节);0x8 音频;0x9 视频;0x12 脚本数据6-8:tag 内容大小(3 字节)9-11:时间戳(3 字节,毫秒)(第 1 个 tag 的时候总是为 0,如果是脚本 tag 就是 0)12-12:时间戳扩展(1 字节)让时间戳变成 4 字节(以存储更长时间的 flv 时间信息),本字节作为时间戳的最高位。
在 flv 回放过程中,播放顺序是按照 tag 的时间戳顺序播放。任何加入到文件中时间设置数据格式都将被忽略。
13-15:streamID(3 字节)总是 0
flv 文件元信息(metadata)
flv 文件中的元信息,是一些描述 flv 文件各类属性的信息。这些信息以 AMF 格式保存在文件的起始部分。adobe 官方的标准 flv 元信息项目如下:
audiochannelsaudiocodecidaudiodatarateaudiodeviceaudioinputvolumeaudiosampleratecreationdateduration (media files only)fmleversion (Flash Media Live Encoder version)(media files only)framerateheightlastkeyframetimestamp (media files only)lasttimestamp (media files only)presetnamevideocodecidvideodataratevideodevicevideokeyframe_frequencywidth
两个常用的操作 metadata 的工具是 flvtool2 和 FLVMDI,都是把 keyframes 作为一个默认的元信息项目。