flv

flv

FLV 是FLASH VIDEO的簡稱,FLV流媒體格式是隨著Flash MX的推出發展而來的視頻格式。由於它形成的檔案極小、載入速度極快,使得網路觀看視頻檔案成為可能,它的出現有效地解決了視頻檔案導入Flash後,使導出的SWF檔案體積龐大,不能在網路上很好的使用等問題。

基本介紹

  • 中文名:流媒體格式
  • 外文名FlashVideo
  • 簡稱:FLV 
  • 類別:格式
  • 優點:檔案極小、載入速度極快
  • 缺點:導出的SWF檔案體積龐大等
  • 採用的網站搜狐視頻新浪播客
  • 趨勢:增長最快、最為廣泛
flv發展,flv歷史,普及,優勢,使用,不同方式,本地檔案,嵌入式swf,逐步下載,rtmp方式,檔案生成,生成,公司媒體,檔案下載,temp下載,專業工具,製作視頻,流媒體格式,使流媒體檔案,檔案結構,FLV頭檔案,檔案元信息,FLV Body,tag格式,

flv發展

FLV是被眾多新一代視頻分享網站所採用,是目前增長最快、最為廣泛的視頻傳播格式。是在sorenson公司的壓縮算法的基礎上開發出來的。FLV格式不僅可以輕鬆的導入Flash中,速度極快,並且能起到保護著作權的作用,並且可以不通過本地的微軟或者REAL播放器播放視頻。
FLVFLV

flv歷史

普及

網路寬頻的普及使中國網民數量躍升至全球第一,同時也造就了眾多的網路神話,GOOGLE斥巨資收購YouTube,似乎將國內外本身已經夠火的Web2.0視頻網站被廣泛關注。而流行的風潮似乎又是第一時間刮到了國內,在這個充分發揮自我個性的年代,視頻、播客等網站在國內如雨後春筍般興起,新的網路戰役一觸即發,這對於FLV視頻格式的普及無疑是一個巨大的推動力。
FLVFLV
FLV(Flash Video)流媒體格式是隨著Flash MX的推出而發展而來的一種新興的視頻格式。FLV檔案體積小巧,清晰的FLV視頻1分鐘在1MB左右,一部電影在100MB左右,是普通視頻檔案體積的1/3。再加上CPU占有率低、視頻質量良好等特點使其在網路上盛行,網上的幾家著名視頻共享網站均採用FLV格式檔案提供視頻,就充分證明了這一點。

優勢

FLV作為一種新興的網路視頻格式,能得到眾多的網站支持並非偶然。除了FLV視頻格式本身占有率低、視頻質量良好、體積小等特點適合網路發展外,豐富、多樣的資源也是FLV視頻格式統一線上播放視頻格式的一個重要因素。從最新的變形金剛到越獄再到各項體育節目,甚至於網友製作的自拍視頻等都可以在網路中輕而易舉的找到。
FLVFLV
網際網路上提供FLV視頻的有兩類網站,一種是專門的視頻分享網站如美國的YouTube網站、國內的六間房土豆網等。另一種是入口網站提供了視頻播客的板塊,提供了自己的視頻頻道,如新浪視頻播客等,也是使用FLV格式的視頻。此外,百度也推出了關於視頻搜尋的功能,裡面搜尋出來的視頻基本都是採用了流行的FLV格式。

使用

Web 2.0時代,要說什麼類型網站最火,自然是以國外的Youtube,國內的優酷土豆網、UUME為代表的視頻分享網站了。這類網站提供的視頻內容可謂各有千秋,但它們無一例外的都使用了Flash作為視頻播放載體,支撐這些視頻網站的技術基礎就是——Flash 視頻(FLV) 。
FLV 是一種全新的流媒體視頻格式,它利用了網頁上廣泛使用的Flash Player 平台,將視頻整合到Flash動畫中。也就是說,網站的訪問者只要能看Flash動畫,自然也能看FLV格式視頻,而無需再額外安裝其它視頻外掛程式,FLV視頻的使用給視頻傳播帶來了極大便利。
FLVFLV
從Flash MX 2004開始,軟體就提供了FLV格式支持,不過筆者建議大家使用目前最新版本的Flash 8(目前最新的版本是Flash CC了),這個版本的Flash中有一個獨立的FLV轉換工具:Flash 8 Video Encoder。點擊系統選單“程式”→“Macromedia”→“Macromedia Flash 8 Video Encoder”進入。
進入程式後,可以看到軟體界面非常簡單。實際上使用這一工具轉換普通視頻為FLV視頻很容易,只需幾步即可完成。
點擊“增加”按紐,軟體自動調用系統“打開”對話,選擇需要導入的視頻即可。Flash 8 Video Encoder支持轉換的視頻格式相當廣泛,如:AVIWMVMPEGASFMOV等常見視頻格式。視頻添加進佇列後,如果你不需要做特殊修改,那么點擊“開始佇列”按紐,程式即開始視頻轉換。軟體轉換視頻的速度,筆者總的感覺還是較快,當然這與原始視頻大小及設定的視頻數據速率有關。整個轉換過程,主視窗下方都有信息提示,並且還能看到實時的進度預覽。轉換結束後,在轉換視頻同一資料夾下,我們就能得到一個同名的FLV檔案。
當然,上述這些只是按照默認設定進行轉換的情況,實際情況下,我們對於視頻轉換的控制還可以很多,點擊主視窗“設定”按紐進入高級設定對話框。
視頻編碼設定對話框中,最顯著的就是FLV視頻品質設定,默認是“Flash 8- 中等品質(400kbps)”,軟體內置7種不同的編碼設定組合。我們也可以選擇自定義設定,點擊“顯示高級設定”按紐,軟體將顯示自定義的設定界面。
軟體提供了兩種視頻解碼器供選擇:On2 VP6(用於Flash Player 8,支持Alpha 通道)、Sorenson Spark(用於Flash Player 7,適用於低配置用戶);“調整視頻大小”也頗有用,我們很容易生成制定尺寸的動畫;如果你只重視視頻效果,那么你還可以對“音頻編碼”開刀,將默認編碼數率設定低些,那么輸出的檔案還會更小巧。高級設定中的選擇還很多,它甚至還提供了簡單的視頻編輯功能,點擊“裁切和修剪”標籤。
FLVFLV
裁切使用很簡單,軟體提供了四個方向的控制,輸入數值以裁切視頻,或者點擊“三角”按紐顯示控制滑塊,拖動滑塊直觀地調整視頻尺寸,視頻預覽區會實時用虛線勾畫裁切範圍。
修剪的使用也不複雜,在視頻預覽區下方可以看到一個藍色的視頻進度指示條,拖動上方的“倒三角”按紐定位視頻播放進度。進度指示條下方有兩個按紐,它們就是“開始點”和“結束點”定位按紐,分別拖動按紐到所需位置,即完成簡單的視頻修剪。
得到了FLV檔案,其實我們並不能直接在網頁中使用,我們還需要將它嫁接到Flash動畫中去。如同大家在各種視頻網站中看到的一樣,我們創建的Flash視頻並不是簡單播放就算了,它也是帶播放控制的。
運行Flash 8,創建新的Flash 文檔,點擊選單“檔案”→“導入”→“導入視頻”,進入“導入視頻”對話框。
可以看到,選擇視頻時會有兩種不同的選擇:“在您的計算機上”、“已經部署到”,這兩者是有區別的,不過我們僅需在本地測試動畫,選擇“在您的計算機上”。點擊“瀏覽”按紐,通過系統打開對話框,載入我們剛生成的FLV檔案,點擊“下一個”按紐繼續。
接下來選擇“部署方式”為:“從Web伺服器漸進式下載”,進入“外觀”選項。
Flash 8當前已經為播放FLV視頻內置了數十個播放控制器,它們的外觀各異,控制選項也有區別,你可以根據自己的需要,選擇一個合適的播放控制器,最後點擊“完成”按紐結束。
返回Flash 8主視窗工作區,可以看到我們剛插入的視頻已經布置到位了,此時你可以直接按Ctrl+Enter測試動畫了。

不同方式

本地檔案

作為一個獨立的FLV檔案。雖然Flash視頻檔案通常是交付使用的Flash Player的控制, FLV檔案本身是全功能對自己的和可以發揮的或轉換為其他格式,由本地存儲如硬碟或CD上。[引文需要]

嵌入式swf

在一個嵌入式的SWF檔案使用Flash創作工具(支持在Flash Player 6和更高版本)。整個檔案必須在移交之後,才可以開始播放。改變影片需要重建的SWF檔案。

逐步下載

逐步通過HTTP下載(支持在Flash Player 7和更高版本)。此方法使用的ActionScript ,包括一外部託管的Flash視頻檔案的客戶端播放。漸進式下載有幾個優勢,包括緩衝,使用通用的HTTP伺服器,並有能力再用一個單一的SWF Player的多重FLASH視頻源。Flash Player 8中包括支持隨機存取內部的視頻檔案使用部分下載功能的HTTP ,有時這是被稱為流。不過,不同的流使用rtmp ,HTTP的“分流” ,不支持實時廣播。流通過HTTP需要自訂播放器和注射液的具體Flash視頻中繼載有確切的出發位置在位元組時間碼的每一個關鍵幀。使用此特定的信息,自定義的Flash視頻播放器,可要求任何部分的Flash視頻檔案,開始在指定的關鍵幀。舉例來說,Google視頻和YouTube支持漸進式下載並可以尋求任何部分的視頻前緩衝完成。伺服器端的一部分,這個“ HTTP的偽分流”的方法是相當簡單的執行,例如在PHP中,作為Apache的httpd模組,或1 lighttpd模組。豐富的媒體項目提供球員和Flash組件兼容的“HTTP偽分流”的方法。

rtmp方式

流通過rtmp到Flash Player的使用Flash媒體伺服器(以前稱為閃光通信伺服器),風險投資, electroserver , wowza Pro或開放原始碼red5伺服器。截至2008年4月,有4個流錄音機,供本議定書,重新編碼screencast軟體排除在外。

檔案生成

生成

通過動畫預覽,我們可以發現,默認的Flash動畫尺寸比播放器寬了不少,我們需要重新設定一下。滑鼠在工作區中選擇“播放器控制項”,調用“屬性”面板(Ctrl+F3),修改X、Y軸值為“0.0”,這樣我們就將“播放器控制項”這個元件定位到了工作區的左上方頂點處。點擊選單“修改”→“文檔”,進入“文檔屬性”對話框,選擇“匹配”值為“內容”,點擊“確定”返回,於是Flash文檔的尺寸就與播放器一致了。
FLVFLV
如果大家製作的FLV視頻動畫只打算在本地計算中播放,那么就直接輸出SWF檔案即可,如果是準備在網路中調用,那么還需要做一些事情。
先上傳自己製作的FLV檔案到網路伺服器,獲得檔案遠程網路地址:如:http: //www.scxp.net/01.flv。接下來,選擇工作區中的“播放器控制項”,調用“參數”面板,找到“contentPath”欄位,修改它的值為“http://www.scxp.net/01.flv”(原始值就是最開始大家設定的本地FLV檔案路徑)。
點擊選單“檔案”→“導出”→“導出影片”,例:設定導出影片地址為“D:/”,檔案名稱為“01.swf”。接下來,設定播放器版本為“Flash Player 8”,ActionScript版本為“ActionScript 2.0”,點擊“確定”完成。
進入“D:/”,可以看到,除了剛生成的“01.swf”檔案外,還多了個 “SteelOverPlaySeekMute.swf”檔案,它也是調用Flash視頻必須的檔案,將這兩個檔案也上傳到你的伺服器中即可。以後你在網上任何地方需要調用Flash視頻時,只需要插入伺服器上的那個“01.swf”動畫的網路地址即可。
註:設定Flash動畫調用的FLV檔案為網上遠程路徑後,本地預覽“01.swf”檔案會有安全警告,這是正常的情況,大家不必擔心。
另外,很多的具有視頻功能的MP3也支持flv格式

公司媒體

chameleogom播放器
FLVFLV
MPlayer的(使用ffmpeg )
使用RealPlayer
xine (用途ffmpeg )
任何播放器,可以使用ffdshow (基於ffmpeg )DirectShow的編解碼器:
Winamp中
Windows Media Player中
變焦播放器
任何播放器使用的QuickTime ,安裝後的FLV的組成部分

檔案下載

線上看的flv視頻檔案基本都不提供下載,在此介紹兩種下載方法:

temp下載

該方法對多數視頻適用。
首先,正常觀看視頻,不要關閉瀏覽器,其次,等視頻載入完畢,進入C:\Documents and Settings\你的用戶名\Local Settings\Temporary Internet Files
FLVFLV
(這只是默認位置,若無法訪問請打開“Internet選項”(IE中選單欄內“工具”-->“Internet選項”)單擊“瀏覽歷史記錄”中“設定”,“查看檔案”(不同版本IE操作可能有所區別))
這個資料夾(有可能要用到資料夾選項中的“顯示全部檔案”才可看見),然後,查找擴展名為flv的檔案即可,可以按時間排序,很容易找到。也可以按大小,視頻檔案一般都比較大,排在頂部本方法適合任何flv視頻網站

專業工具

還有一種(推薦, 非常輕鬆地下載)可藉助flv視頻下載軟體,例如:流行的有狂雷視頻下載、維棠下載、碩鼠等,都是比較成熟的軟體,可提供播放、下載、轉換等功能。狂雷界面簡單易用,知名度高,其本身是一個flv資源平台,提供的flv資源自然豐富,狂雷視頻下載像迅雷一樣,功能豐富,而且下載速度是同類所有下載軟體中最快的,支持優酷分段視頻的自動合併,還具有強大的視頻轉換功能,可根據手機型號來轉換FLV視頻到您手機支持的視頻格式維棠像FLASHGET一樣,操作比較複雜,只有下載,沒有搜尋功能。還有像其他的flv小軟體,比如xmlbar之類的,不過功能有點簡單,易操作性一般。
另外還可以通過flvcd網站線上解析視頻地址,直接瀏覽器另外儲存為下載,無需安裝外掛程式.

製作視頻

FLV流媒體格式是一種新的視頻格式,全稱為Flash Video。Flash MX 2004對其提供了完美的支持,它的出現有效地解決了視頻檔案導入Flash後,使導出的SWF檔案體積龐大,不能在網路上很好的使用等缺點。下面我們就來介紹一下如何使用小巧的FLV流媒體檔案。

流媒體格式

首先,打開Flash MX 2004,新建一個Flash文檔。將準備好的AVI格式的視頻檔案導入到庫中。導入過程會出現嚮導提示,總共分2步,分別是“編輯”和“編碼”的處理。
按照默認值進行處理,我們選擇“導入整個視頻”,單擊“下一步”按鈕然後“結束”完成導入過程。按下“Ctrl+L”組合鍵打開庫,雙擊剛剛導入的AVI檔案圖示,打開“嵌入視頻屬性”界面。
單擊“導出”生成FLV格式檔案。
通過以上操作我們成功地將視頻AVI格式轉換成為了FLV格式。這其中發生了什麼變化呢?在默認參數的轉化下。使23MB的AVI檔案變成了541KB的FLV檔案。讓一個大塊頭“瘦”下來,這就可以輕鬆的放到網路中使用了。

使流媒體檔案

新建一個Flash文檔,按下“Ctrl+F7”組合鍵打開組件視窗,將Media Componets中的MediaPlayback組件拖入場景中。
用滑鼠選中剛拖入的MediaPlayback組件,按下“Alt+F7”組合鍵打開“組件檢查器”界面。組件檢查器中的參數含義如下:定義了播放檔案的類型為FLV,也可以播放MP3檔案;URL中需要指定FLV文 件的路徑,因為我們將FLV檔案和Flash檔案放在了同一目錄中,所以這裡只要指定檔案名稱就可以了;Automatically Play為自動播放;Control Placement和Control Visibility分別為播放面板的位置和是否可見。
設定完成後,我們可以通過按下“Ctrl+Enter”組合鍵測試效果。視頻圖像和聲音讓你耳目一新!
這樣一個FLV格式流媒體播放器就完成了。別看它製作簡單,但功能還算齊全,特別是它提供了下載進度的顯示,可以一邊下載一邊播放。這樣我們的網站再也不用愁那些“大塊頭”的視頻檔案怎么放上去了。Flash MX 2004支持很多視頻格式轉化為FLV,自己動手做做,你會發現很多新技巧。不斷的探索,你會成長的很快!

檔案結構

FLV是一個二進制檔案,由檔案頭(FLV header)和很多tag組成。tag又可以分成三類:audio,video,script,分別代表音頻流視頻流,腳本流(關鍵字或者檔案信息之類)。
FLV檔案=FLV頭檔案+ tag1+tag內容1 + tag2+tag內容2 + ...+... + tagN+tag內容N。

FLV頭檔案

一般比較簡單,包括檔案類型之類的全局信息
檔案類型3bytes 總是FLV(0x46 0x4C 0x56)
版本1byte 一般是0x01,表示FLV version 1
流信息1byte 倒數第一bit是1表示有視頻,倒數第三bit是1表示有音頻,其他都應該是0(有些軟體如flvtool2可能造成倒數第四bit是1,不過也沒發現有什麼不對)
header長度4bytes 整個檔案頭的長度,一般是9(3+1+1+4),有時候後面還有些別的信息,就不是9了
FLV頭檔案:(9位元組)
1-3: 前3個位元組是檔案格式標識(FLV 0x46 0x4C 0x56).
4-4: 第4個位元組是版本(0x01)
5-5: 第5個位元組的前5個bit是保留的必須是0.
6-9: 第6-9的四個位元組還是保留的.其數據為 00000009 .
整個檔案頭的長度,一般是9(3+1+1+4)

檔案元信息

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的工具是flvtool2FLVMDI,都是把keyframes作為一個默認的元信息 項目。

FLV Body

FLV body就是由很多tag組成的,一個tag包括下列信息:
previoustagsize 4bytes 前一個tag的長度,第一個tag就是0
tag類型1byte
三類:
* 8 -- 音頻tag
* 9 -- 視頻tag
* 18 -- 腳本tag
數據區長度3bytes時間戳3bytes 單位毫秒,如果是腳本tag就是0
擴展時間戳1byte 作為時間戳的高位
streamsID 3bytes 總是0(不知道幹啥用)
數據區
根據不同的tag類型就有不同的數據區
Audio tag 數據區
audio信息1byte前四位bits表示音頻格式:
FLVFLV
* 0 -- 未壓縮
* 1 -- ADPCM
* 2 -- MP3
* 5 -- Nellymoser 8kHz momo
* 6 -- Nellymoser
下面兩位bits表示samplerate:
* 0 -- 5.5kHz
* 1 -- 11kHz
* 2 -- 22kHz
* 3 -- 44kHz
下面一位bit表示每個採樣的長度:
* 0 -- snd8Bit
* 1 -- snd16Bit
下面一位bit表示類型:
* 0 -- sndMomo
* 1 -- sndStereo
audio數據區
不定
video tag 數據區
video信息1byte
前四位bits表示類型:
* 1 -- keyframe
* 2 -- inner frame
* 3 -- disposable inner frame (H.263 only)
後四位bits表示編碼器id:
* 2 -- Seronson H.263
* 3 -- Screen video
* 4 -- On2 VP6
* 5 -- On2 VP6 without channel
* 6 -- Screen video version 2
video數據區
不定
ScriptTagData結構(控制幀)
該類型Tag又通常被稱為Metadata Tag,會放一些關於FLV視頻和音頻的參數信息如:duration、width、height等。通常該類型Tag會跟在File Header後面作為第一個Tag出現,而且只有一個。
前11個位元組為Tag Header結構 第一個AMF包(13位元組):
第1個位元組表示AMF包類型,一般總是0x02,表示字元串
第2-3個位元組為UI16類型值,一般總是0x000A(“onMetaData”長度)。 後面位元組一般總為“onMetaData”。(6F,6E,4D,65,74,61,44,61,74,61) 第二個AMF包:
第1個位元組表示AMF包類型,一般總是0x08,表示數組。 第2-5個位元組為UI32類型值,表示數組元素的個數。
後面即為各數組元素的封裝,數組元素為元素名稱和值組成的對。表示方法如下: 第1-2個位元組表示元素名稱的長度,假設為L。 後面跟著為長度為L的字元串。 第L+3個位元組表示元素值的類型。
後面跟著為對應值,占用位元組數取決於值的類型。

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

相關詞條

熱門詞條

聯絡我們