1. 程式人生 > >各種音視訊編解碼學習詳解之 編解碼學習筆記(十一):Flash Video系列

各種音視訊編解碼學習詳解之 編解碼學習筆記(十一):Flash Video系列

 最近在研究音視訊編解碼這一塊兒,看到@bitbit大神寫的【各種音視訊編解碼學習詳解】這篇文章,非常感謝,佩服的五體投地。奈何大神這邊文章太長,在這裡我把它分解成很多小的篇幅,方便閱讀。大神部落格傳送門:https://www.cnblogs.com/skyofbitbit/p/3651270.html。若讀過@bitbit大神寫的【各種音視訊編解碼學習詳解】這篇文章,就不用向後看啦

用於在 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 12

Flash介紹

  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音訊。所有的這些編解碼目前受到專利的限制。

  Sorenson編解碼看參考以下兩種專用的視訊編解碼:Sorenson Video或者Sorenson Spark。Sorenson Video也被稱為Sorenson Codec,Sorenson Video Quantizer或者SVQ。Sorenson Spark也稱為Sorenson H.263。這些編解碼都是有Sorenson 媒體公司設計(及以前的Sorenson Vision公司)。Sorenson Video在Apple的QuickTime中使用,SorensonSpark在Adobe Flash(以前的MacromediaFlash)中使用。

  Flash視訊通過廣泛使用的Adobe Flash播放器和瀏覽器的plugin或者其他的第三方程式,使它能在絕大多是的作業系統都可以使用。

通常Flash視訊FLV檔案包含的視訊位元流是一個專有的H.263視訊標準的變體,FourCC為 FLV1(Sorenson Spark)。SorensonSpark是一個FLV檔案老式編解碼,但被廣泛應用和相容,因此它是第一個被Flash Player支援的視訊編解碼。這是在Flash Player 6和7要求的視訊壓縮格式。Flash Player 8和更新的版本支援On2 TrueMotion VP6視訊位元流回放(FourCC VP6F或者FLV4)。On2 VP6是FlashPlayer 8或者更高版本優先使用的視訊壓縮格式。On2 VP6可以提供能夠提供比Sorenson Spark更高視覺質量,尤其在低位元流中。另外它的計算更為複雜,因此在某些古老的系統配置中無法很好使用。

  Flash 9 update 3,在2007年12月3日釋放,提供了新的Flash視訊檔案格式F4V,支援H.264視訊標準(也即MPEG-4part 10或者AVC),H.264需要更復雜的技術,但是提供更加卓著質量/位元流比例。具體而言,Flash播放器現在支援H.264視訊壓縮(MPEG- 4 Part 10),AAC音訊壓縮(MPEG-3 Part 3),F4V,MP4(MPEG-4 Part14),M4V,3GP和MOV多媒體容器格式,3GPP Timed Text標準(MEPG-4 Part 17)(這是一個標準的的字幕格式,能夠部分解析ID3的’ilist’,等同於iTunes使用的metadata儲存。不支援MPEG-4 Part 2視訊(例如有DivX或者Xvid建立)。Jonathan Gay,一個Flash的主要程式設計師在接收BBC新聞採訪時表示:公司最初想在Flash中使用H.264,但是被每年5百萬美金(3.5百萬英鎊)的專 利許可費而卻步。

  Flash Video FLV檔案格式支援兩個成為“screenshare‘(Screen Video)編解碼的版本,這是一種用於桌面演示的編碼格式。這兩種格式都是基於tmap平鋪方式,可以通過減少色深進行有損編碼,並使用zlib壓縮。 第二個版本之在Flash播放器8以及更新的版本支援。

  在Flash視訊檔案中,通常使用MP3作為音訊編碼然而,在Flash視訊FLV檔案通過麥克風錄音使用專用 的Nellymoser Asao編解碼(Flash Player 10 在2008年釋出,也支援開源的Speex編解碼)。FLV檔案支援不壓縮的音訊或ADPCM音訊格式。最新的Flahs Player 9 支援AAC(HE-AAC/AAC SBR,AAC Main Profile,和AAC-LC)。

  編碼為Flash Video檔案有一個編碼工具提供,包括Adobe的Flash Professional和Creative Suite產品,On2的Flix編碼工具,SorensonSqueeze,FFmepg和其他第三方工具。

容器

  在2002年釋出的Flash Player6增加了對SWF檔案格式的支援。在2003年,FlashPlayer7增加了對FLV檔案格式的直接支援。由於FLV檔案格式的限制,Adobe System公司在2007年提出下面列出的新的檔案格式,是基於ISO基本媒體檔案格式(MPEG-4 Part 12)。Flash播放器不檢查檔案的副檔名,而直接檢視檔案,檢查屬於那種格式。

副檔名

Mime Type

描述

.f4v

video/mp4

Video for Adobe Flash Player

.f4p

video/mp4

Protected Video for Adobe Flash Player

.f4a

video/mp4

Audio for Adobe Flash Player

.f4b

video/mp4

Audio Book for Adobe Flash Player

  在Flash Player6及以後的版本對SWF檔案的支援,使得可以與Adobe Flash媒體伺服器通過RTMP來進行音訊,視訊和資料的互動。Flash媒體伺服器的資料支援採用FLV檔案格式的檔案(MIME型別為 video/x-flv)。從Flash Player 9 Update 3開始建立的SWF檔案,Flash Player可以播發新的F4V檔案格式。

媒體格式

  在FLV檔案中支援的媒體型別:

  • 視訊:On2 VP6,Sorneson Spark(Sorenson H.263),Screen Video,H.264
  • 音訊:MP3,ADPCM,Linear PCM,Nellymoser,Speex,AAC,G.711(保留用於互通需求)

  在F4V檔案中支援的媒體型別:

  • 視訊:H.264
  • 影象(視訊資料的靜止幀):GIF,PNG,JPEG
  • 音訊:AAC,HE-AAC,MP3

在Flash Player和Flash Video中支援的音視訊壓縮格式

Flash Player version

Released

File format

Video compression formats

Audio compression formats

6

2002

SWF

Sorenson Spark, Screen video

MP3, ADPCM, Nellymoser

7

2003

SWF, FLV

Sorenson Spark, Screen video

MP3, ADPCM, Nellymoser

8

2005

SWF, FLV

On2 VP6, Sorenson Spark, Screen video, Screen video 2

MP3, ADPCM, Nellymoser

9.0.115.0

2007

SWF, FLV

On2 VP6, Sorenson Spark, Screen video, Screen video 2, H.264[*]

MP3, ADPCM, Nellymoser, AAC[*]

   

SWF, F4V, ISO base media file format

H.264

AAC, MP3

10

2008

SWF, FLV

On2 VP6, Sorenson Spark, Screen video, Screen video 2, H.264[*]

MP3, ADPCM, Nellymoser, Speex, AAC[*]

   

SWF, F4V, ISO base media file format

H.264

AAC, MP3

[*]在FLV檔案格式中使用H.264和AAC壓縮有一些限制,Flash Player的作者強烈推薦大家使用新的F4V檔案格式。

Flash傳遞的幾種方式

一、作為一個標準的flv檔案。

二、嵌入SWF檔案,使用Flash認證工具(在FlashPlayer 6及以後的版本支援)。

三、通過HTTP的漸進流下載(progressive download)。這種方式使用ActionScript,包括客戶端側的一個外部託管Flash Video檔案用於播放。然而,和使用RTMP的媒體流不一樣,HTTP“流”不支援實時廣播。HTTP流要求一個定製的播放器以及包含每個關鍵幀精確開 始位元組位置以及時間碼的特定FlashVideo元資料的加入。使用這些特定的資訊,定製Flash Video播放器可以要求在任何指定的關鍵幀中開始播放。例如,Google Video,Youtube和BitGravity支援漸進流下載,可以在快取滿之前檢視視訊的任何部分。在伺服器側,這種“假HTTP流“方式實現相當 簡單,例如可以採用Apache的PHP模組,使用lighttpd。

四、採用RTMP協議的流,可提供的有Flash媒體伺服器(以前稱為Flash Communication Server),VCS,Electro Server,Helix Universal Serval,Wowza Pro,用於.NET的WebORB,用於Java的WebORB,以及開源的Red5伺服器。在2008年4月,這個協議有流錄影提供,不需要重新編碼 的screencast軟體。

  RTMP,實時訊息協議,Real Time Message Protocol是一個有Adobe System為在網際網路的音訊,視訊和資料流開發的私有協議,執行在Flash播放器和伺服器之間。RTMP協議有三個方式:
1、 通過在TCP上,使用1935埠的“純”協議。 
2、 用於在穿越防火牆時,在HTTP請求中封裝的RTMPT。 
3、 在HTTPS的安全連線中使用的RTPMS。

注:上述材料來源於wiki的整理。