Flash Video

Flash Video（简称FLV），是一种网络视频格式，用作串流媒体格式，它的出现有效地解决了视频文件导入Flash后，使导出的SWF文件体积庞大，不能在网络上有效使用等缺点。
一般FLV文件包在SWF PLAYER的壳里，并且FLV可以很好的保护原始地址，不易下载，从而起到保护版权的作用。但还是有些视频格式转换软件将FLV转成一般的视频格式，如中国的软件格式工厂。随着视频网站的丰富，在2008年时这个格式已经非常普及，包括YouTube、NICONICO动画、Google Video、Yahoo! Video、MySpace，以及中国的优酷、酷6、BiliBili等大部分视频分享网站均采用这个格式。
然而，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技术。
中国视频网站哔哩哔哩为了减少迁移至HTML5成本而开发了flv.js，可以通过浏览器支持的Media Source Extension播放FLV文件格式中的H.264和AAC编码内容，所以如今Chrome、Edge等浏览器仍然可以收看来自BiliBili的影片。
2020年12月31日，Chrome作为最后一个宣布将不再支援使用Flash的应用程式浏览器，flv影片均无法透过Google Chrome收看，除开BiliBili、优酷等视频网站以外的影片网站均停止使用flv作为影片格式。

**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就是0
*5-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元信息项目如下：
*audiochannels
*audiocodecid
*audiodatarate
*audiodevice
*audioinputvolume
*audiosamplerate
*creationdate
*duration (media files only)
*fmleversion (Flash Media Live Encoder version)（media files only）
*framerate
*height
*lastkeyframetimestamp (media files only)
*lasttimestamp (media files only)
*presetname
*videocodecid
*videodatarate
*videodevice
*videokeyframe_frequency
*width
两个常用的操作metadata的工具是flvtool2和FLVMDI，都是把keyframes作为一个默认的元信息项目。

**FLV播放程式**

**桌面软体**
这些播放程式包括：- Adobe Media Player- BitComet FLV Player- ExtraPlayer- GOM Player- K-Multimedia Player- MPlayer- Perian- PotPlayer- Real Player 11- VLC media player- FLV Player by Martijn de Visser- Quick Time 10- 任何基于FFmpeg的播放程序- 任何利用DirectShow配合ffdshow的播放程式
** Media Player Classic
** MPC-HC
** MPC-BE
** Windows Media Player
** Windows Media Center（需要改动注册表）
** 暴风影音
** PowerDVD

**桌面软体与网页端播放程式**
 JW FLV Player（授权方式：CC by-nc-sa）-  Moyea Web Playerdate=20090607091605 （免费使用。可装上插件进行功能上的扩展，所见即所得图形界面软件。）

**网页端播放程式**
 Dreamsocket Media Player（授权方式：CC by-nc-sa）- FV H.264 FLV Ads Player免费软体- Sonettic Cinema FLV Player免费与商业版软体均有- Hitasoft Free RIPE FLVPlayer- FLV / H.264 Video Player I, II and III by FlashXpert

**注释及参考来源**

**外部连结**
  Flash Developer Center - Flash Video Articlesdate=20070407231356 -  Adobe Flash (SWF) and Flash Video (FLV) File Format Specification Licensing Page（adobe.com）-  Adobe Flash FLV Video File Formatdate=20070425195533 （Library of Congress）