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瀏覽器預設不支援這些外掛程式，並且亞馬遜公司旗下電子商務和廣告平台也停止使用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 Player（免費使用。可裝上插件進行功能上的擴展，所見即所得圖形界面軟體。）

### 網頁端播放程式

- 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 Articles
- Adobe Flash (SWF) and Flash Video (FLV) File Format Specification Licensing Page（adobe.com）
- Adobe Flash FLV Video File Format（Library of Congress）

## 基本資料

- 日語原文：FLV
- 擴展名：.flv
- mime：video/x-flv
- 所有者：Adobe Systems
- 類型：影片文件格式