2016-01-28 視頻相關(guān)概念視頻文件格式文件格式這個(gè)概念應(yīng)該是我們比較熟悉的,比如我們常見的 Word 文檔的文件格式是 .doc ,,JPG 圖片的文件格式是 .jpg 等等,。那對于視頻來說,我們常見的文件格式則有:.mov ,、.avi ,、.mpg 、.vob ,、.mkv ,、.rm 、.rmvb 等等,。文件格式通常表現(xiàn)為文件在操作系統(tǒng)上存儲時(shí)的后綴名,,它通常會被操作系統(tǒng)用來與相應(yīng)的打開程序關(guān)聯(lián),比如你雙擊一個(gè) test.doc 文件,,系統(tǒng)會調(diào)用 Word 去打開它,。你雙擊一個(gè) test.avi 或者 test.mkv 系統(tǒng)會調(diào)用視頻播放器去打開它。 同樣是視頻,,為什么會有 .mov ,、.avi 、.mpg 等等這么多種文件格式呢,?那是因?yàn)樗鼈兺ㄟ^不同的方式實(shí)現(xiàn)了視頻這件事情,,至于這個(gè)不同在哪里,那就需要了解一下接下來要說的「視頻封裝格式」這個(gè)概念了,。 視頻封裝格式視頻封裝格式,,簡稱視頻格式,相當(dāng)于一種儲存視頻信息的容器,,它里面包含了封裝視頻文件所需要的視頻信息,、音頻信息和相關(guān)的配置信息(比如:視頻和音頻的關(guān)聯(lián)信息,、如何解碼等等)。一種視頻封裝格式的直接反映就是對應(yīng)著相應(yīng)的視頻文件格式,。 下面我們就列舉一些文件封裝格式: - AVI 格式,對應(yīng)的文件格式為
.avi ,,英文全稱 Audio Video Interleaved,,是由 Microsoft 公司于 1992 年推出。這種視頻格式的優(yōu)點(diǎn)是圖像質(zhì)量好,,無損 AVI 可以保存 alpha 通道,。缺點(diǎn)是體積過于龐大,并且壓縮標(biāo)準(zhǔn)不統(tǒng)一,,存在較多的高低版本兼容問題,。 - DV-AVI 格式,對應(yīng)的文件格式為
.avi ,,英文全稱 Digital Video Format,,是由索尼、松下,、JVC 等多家廠商聯(lián)合提出的一種家用數(shù)字視頻格式,。常見的數(shù)碼攝像機(jī)就是使用這種格式記錄視頻數(shù)據(jù)的。它可以通過電腦的 IEEE 1394 端口傳輸視頻數(shù)據(jù)到電腦,,也可以將電腦中編輯好的的視頻數(shù)據(jù)回錄到數(shù)碼攝像機(jī)中,。 - WMV 格式,對應(yīng)的文件格式是
.wmv ,、.asf ,,英文全稱 Windows Media Video,是微軟推出的一種采用獨(dú)立編碼方式并且可以直接在網(wǎng)上實(shí)時(shí)觀看視頻節(jié)目的文件壓縮格式,。在同等視頻質(zhì)量下,,WMV 格式的文件可以邊下載邊播放,因此很適合在網(wǎng)上播放和傳輸,。 - MPEG 格式,,對應(yīng)的文件格式有
.mpg 、.mpeg ,、.mpe ,、.dat 、.vob ,、.asf ,、.3gp 、.mp4 等等,,英文全稱 Moving Picture Experts Group,,是由運(yùn)動圖像專家組制定的視頻格式,,該專家組于 1988 年組建,專門負(fù)責(zé)視頻和音頻標(biāo)準(zhǔn)制定,,其成員都是視頻,、音頻以及系統(tǒng)領(lǐng)域的技術(shù)專家。MPEG 格式目前有三個(gè)壓縮標(biāo)準(zhǔn),,分別是 MPEG-1,、MPEG-2、和 MPEG-4,。MPEG-4 是現(xiàn)在用的比較多的視頻封裝格式,,它為了播放流式媒體的高質(zhì)量視頻而專門設(shè)計(jì)的,以求使用最少的數(shù)據(jù)獲得最佳的圖像質(zhì)量,。 - Matroska 格式,,對應(yīng)的文件格式是
.mkv ,Matroska 是一種新的視頻封裝格式,,它可將多種不同編碼的視頻及 16 條以上不同格式的音頻和不同語言的字幕流封裝到一個(gè) Matroska Media 文件當(dāng)中,。 - Real Video 格式,對應(yīng)的文件格式是
.rm ,、.rmvb ,,是 Real Networks 公司所制定的音頻視頻壓縮規(guī)范稱為 Real Media。用戶可以使用 RealPlayer 根據(jù)不同的網(wǎng)絡(luò)傳輸速率制定出不同的壓縮比率,,從而實(shí)現(xiàn)在低速率的網(wǎng)絡(luò)上進(jìn)行影像數(shù)據(jù)實(shí)時(shí)傳送和播放,。 - QuickTime File Format 格式,對應(yīng)的文件格式是
.mov ,,是 Apple 公司開發(fā)的一種視頻格式,,默認(rèn)的播放器是蘋果的 QuickTime。這種封裝格式具有較高的壓縮比率和較完美的視頻清晰度等特點(diǎn),,并可以保存 alpha 通道,。 - Flash Video 格式,對應(yīng)的文件格式是
.flv ,,是由 Adobe Flash 延伸出來的一種網(wǎng)絡(luò)視頻封裝格式,。這種格式被很多視頻網(wǎng)站所采用。 從上面的介紹中,,我們大概對視頻文件格式以及對應(yīng)的視頻封裝方式有了一個(gè)概念,,接下來則需要了解一下關(guān)于視頻更本質(zhì)的東西,那就是視頻編解碼,。 視頻編解碼方式視頻編解碼的過程是指對數(shù)字視頻進(jìn)行壓縮或解壓縮的一個(gè)過程,。 在做視頻編解碼時(shí),需要考慮以下這些因素的平衡:視頻的質(zhì)量、用來表示視頻所需要的數(shù)據(jù)量(通常稱之為碼率),、編碼算法和解碼算法的復(fù)雜度,、針對數(shù)據(jù)丟失和錯(cuò)誤的魯棒性(Robustness)、編輯的方便性,、隨機(jī)訪問,、編碼算法設(shè)計(jì)的完美性、端到端的延時(shí)以及其它一些因素,。 常見的視頻編碼方式有: - H.26X 系列,,由國際電傳視訊聯(lián)盟遠(yuǎn)程通信標(biāo)準(zhǔn)化組織(ITU-T)主導(dǎo),包括
H.261 ,、H.262 、H.263 ,、H.264 ,、H.265 。 H.261 ,,主要用于老的視頻會議和視頻電話系統(tǒng),。是第一個(gè)使用的數(shù)字視頻壓縮標(biāo)準(zhǔn)。實(shí)質(zhì)上說,,之后的所有的標(biāo)準(zhǔn)視頻編解碼器都是基于它設(shè)計(jì)的,。 H.262 ,等同于 MPEG-2 第二部分 ,,使用在 DVD,、SVCD 和大多數(shù)數(shù)字視頻廣播系統(tǒng)和有線分布系統(tǒng)中。 H.263 ,,主要用于視頻會議,、視頻電話和網(wǎng)絡(luò)視頻相關(guān)產(chǎn)品。在對逐行掃描的視頻源進(jìn)行壓縮的方面,,H.263 比它之前的視頻編碼標(biāo)準(zhǔn)在性能上有了較大的提升,。尤其是在低碼率端,它可以在保證一定質(zhì)量的前提下大大的節(jié)約碼率,。 H.264 ,,等同于 MPEG-4 第十部分 ,也被稱為高級視頻編碼(Advanced Video Coding,,簡稱 AVC),,是一種視頻壓縮標(biāo)準(zhǔn),一種被廣泛使用的高精度視頻的錄制,、壓縮和發(fā)布格式,。該標(biāo)準(zhǔn)引入了一系列新的能夠大大提高壓縮性能的技術(shù),并能夠同時(shí)在高碼率端和低碼率端大大超越以前的諸標(biāo)準(zhǔn)。 H.265 ,,被稱為高效率視頻編碼(High Efficiency Video Coding,,簡稱 HEVC)是一種視頻壓縮標(biāo)準(zhǔn),是 H.264 的繼任者,。HEVC 被認(rèn)為不僅提升圖像質(zhì)量,,同時(shí)也能達(dá)到 H.264 兩倍的壓縮率(等同于同樣畫面質(zhì)量下比特率減少了 50%),可支持 4K 分辨率甚至到超高畫質(zhì)電視,,最高分辨率可達(dá)到 8192×4320(8K 分辨率),,這是目前發(fā)展的趨勢。 - MPEG 系列,,由國際標(biāo)準(zhǔn)組織機(jī)構(gòu)(ISO)下屬的運(yùn)動圖象專家組(MPEG)開發(fā),。
MPEG-1 第二部分 ,主要使用在 VCD 上,,有些在線視頻也使用這種格式,。該編解碼器的質(zhì)量大致上和原有的 VHS 錄像帶相當(dāng)。 MPEG-2 第二部分 ,,等同于 H.262 ,,使用在 DVD、SVCD 和大多數(shù)數(shù)字視頻廣播系統(tǒng)和有線分布系統(tǒng)中,。 MPEG-4 第二部分 ,,可以使用在網(wǎng)絡(luò)傳輸、廣播和媒體存儲上,。比起 MPEG-2 第二部分 和第一版的 H.263 ,,它的壓縮性能有所提高。 MPEG-4 第十部分 ,,等同于 H.264 ,,是這兩個(gè)編碼組織合作誕生的標(biāo)準(zhǔn)。 - 其他,,AMV,、AVS、Bink,、CineForm 等等,,這里就不做多的介紹了。
介紹了上面這些「視頻編解碼方式」后,,我們來說說它和上一節(jié)講的「視頻封裝格式」的關(guān)系,。可以把「視頻封裝格式」看做是一個(gè)裝著視頻,、音頻,、「視頻編解碼方式」等信息的容器,。一種「視頻封裝格式」可以支持多種「視頻編解碼方式」,比如:QuickTime File Format(.MOV) 支持幾乎所有的「視頻編解碼方式」,,MPEG(.MP4) 也支持相當(dāng)廣的「視頻編解碼方式」,。當(dāng)我們看到一個(gè)視頻文件名為 test.mov 時(shí),我們可以知道它的「視頻文件格式」是 .mov ,,也可以知道它的視頻封裝格式是 QuickTime File Format ,,但是無法知道它的「視頻編解碼方式」。那比較專業(yè)的說法可能是以 A/B 這種方式,,A 是「視頻編解碼方式」,,B 是「視頻封裝格式」。比如:一個(gè) H.264/MOV 的視頻文件,,它的封裝方式就是 QuickTime File Format,,編碼方式是 H.264。 音頻編解碼方式視頻中除了畫面通常還有聲音,,所以這就涉及到音頻編解碼,。在視頻中經(jīng)常使用的音頻編碼方式有: - AAC,英文全稱 Advanced Audio Coding,,是由 Fraunhofer IIS,、杜比實(shí)驗(yàn)室,、AT&T,、Sony等公司共同開發(fā),在 1997 年推出的基于 MPEG-2 的音頻編碼技術(shù),。2000 年,,MPEG-4 標(biāo)準(zhǔn)出現(xiàn)后,AAC 重新集成了其特性,,加入了 SBR 技術(shù)和 PS 技術(shù),,為了區(qū)別于傳統(tǒng)的 MPEG-2 AAC 又稱為 MPEG-4 AAC。
- MP3,,英文全稱 MPEG-1 or MPEG-2 Audio Layer III,,是當(dāng)曾經(jīng)非常流行的一種數(shù)字音頻編碼和有損壓縮格式,它被設(shè)計(jì)來大幅降低音頻數(shù)據(jù)量,。它是在 1991 年,,由位于德國埃爾朗根的研究組織 Fraunhofer-Gesellschaft 的一組工程師發(fā)明和標(biāo)準(zhǔn)化的。MP3 的普及,,曾對音樂產(chǎn)業(yè)造成極大的沖擊與影響,。
- WMA,英文全稱 Windows Media Audio,,由微軟公司開發(fā)的一種數(shù)字音頻壓縮格式,,本身包括有損和無損壓縮格式。
關(guān)于 H.264概念H.264 是現(xiàn)在廣泛采用的一種編碼方式。關(guān)于 H.264 相關(guān)的概念,,從大到小排序依次是:序列,、圖像、片組,、片,、NALU、宏塊,、亞宏塊,、塊、像素,。 我們先來解釋幾個(gè)概念: - 圖像,。H.264 中,「圖像」是個(gè)集合的概念,,幀,、頂場、底場都可以稱為圖像,。一幀通常就是一幅完整的圖像,。當(dāng)采集視頻信號時(shí),如果采用逐行掃描,,則每次掃描得到的信號就是一副圖像,,也就是一幀。當(dāng)采集視頻信號時(shí),,如果采用隔行掃描(奇,、偶數(shù)行),則掃描下來的一幀圖像就被分為了兩個(gè)部分,,這每一部分就稱為「場」,,根據(jù)次序分為:「頂場」和「底場」?!笌购汀笀觥沟母拍钣謳砹瞬煌木幋a方式:幀編碼,、場編碼。逐行掃描適合于運(yùn)動圖像,,所以對于運(yùn)動圖像采用幀編碼更好,;隔行掃描適合于非運(yùn)動圖像,所以對于非運(yùn)動圖像采用場編碼更好,。
-
片(Slice),,每一幀圖像可以分為多個(gè)片。 -
網(wǎng)絡(luò)提取層單元(NALU, Network Abstraction Layer Unit),,NALU 是用來將編碼的數(shù)據(jù)進(jìn)行打包的,,一個(gè)分片(Slice)可以編碼到一個(gè) NALU 單元,。不過一個(gè) NALU 單元中除了容納分片(Slice)編碼的碼流外,還可以容納其他數(shù)據(jù),,比如序列參數(shù)集 SPS,。對于客戶端其主要任務(wù)則是接收數(shù)據(jù)包,從數(shù)據(jù)包中解析出 NALU 單元,,然后進(jìn)行解碼播放,。 -
宏塊(Macroblock),分片是由宏塊組成,。 顏色模型我們聽過最多的顏色模型應(yīng)該就是經(jīng)典的 RGB 模型了,。 在 RGB 模型中每種顏色需要 3 個(gè)數(shù)字,分別表示 R,、G,、B,比如 (255, 0, 0) 表示紅色,,通常一個(gè)數(shù)字占用 1 字節(jié),,那么表示一種顏色需要 24 bits。那么有沒有更高效的顏色模型能夠用更少的 bit 來表示顏色呢,? 現(xiàn)在我們假設(shè)我們定義一個(gè)「亮度(Luminance)」的概念來表示顏色的亮度,,那它就可以用含 R、G,、B 的表達(dá)式表示為: Y 即「亮度」,,kr、kg,、kb 即 R,、G,、B 的權(quán)重值,。 這時(shí),我們可以定義一個(gè)「色度(Chrominance)」的概念來表示顏色的差異: Cr = R – Y Cg = G – Y Cb = B – Y
Cr,、Cg,、Cb 分別表示在 R、G,、B 上的色度分量,。上述模型就是 YCbCr 顏色模型基本原理。 YCbCr 是屬于 YUV 家族的一員,,是在計(jì)算機(jī)系統(tǒng)中應(yīng)用最為廣泛的顏色模型,,就比如在本文所講的視頻領(lǐng)域。在 YUV 中 Y 表示的是「亮度」,,也就是灰階值,,U 和 V 則是表示「色度」,。YUV 的關(guān)鍵是在于它的亮度信號 Y 和色度信號 U、V 是分離的,。那就是說即使只有 Y 信號分量而沒有 U,、V 分量,我們?nèi)匀豢梢员硎境鰣D像,,只不過圖像是黑白灰度圖像,。在YCbCr 中 Y 是指亮度分量,Cb 指藍(lán)色色度分量,,而 Cr 指紅色色度分量,。 現(xiàn)在我們從 ITU-R BT.601-7 標(biāo)準(zhǔn)中拿到推薦的相關(guān)系數(shù),就可以得到 YCbCr 與 RGB 相互轉(zhuǎn)換的公式: Y = 0.299R + 0.587G + 0.114B Cb = 0.564(B - Y) Cr = 0.713(R - Y) R = Y + 1.402Cr G = Y - 0.344Cb - 0.714Cr B = Y + 1.772Cb
這樣對于 YCbCr 這個(gè)顏色模型我們就有個(gè)初步認(rèn)識了,,但是我們會發(fā)現(xiàn),,這里 YCbCr 也仍然用了 3 個(gè)數(shù)字來表示顏色啊,有節(jié)省 bit 嗎,?為了回答這個(gè)問題,,我們來結(jié)合視頻中的圖像和圖像中的像素表示來說明。 圖片是由類似下面的像素組成: 一副圖片就是一個(gè)像素陣列: 上圖中,,每個(gè)像素的 3 個(gè)分量的信息是完整的,,YCbCr 4:4:4。 上圖中,,對于每個(gè)像素點(diǎn)都保留「亮度」值,,但是省略每行中偶素位像素點(diǎn)的「色度」值,從而節(jié)省了 bit,。 上圖中,,做了更多的省略,但是對圖片質(zhì)量的影響卻不會太大,。 對于更細(xì)節(jié)的內(nèi)容,,可以查詢與 YCbCr 4:2:0、YCbCr 4:2:2,、YCbCr 4:1:1 和 YCbCr 4:4:4 相關(guān)的知識,。 碼流格式在上節(jié)中,我們簡單的介紹了和 H.264 編碼相關(guān)的圖片,、像素以及顏色模型相關(guān)的概念,,那這一節(jié)就接著簡要介紹一下 H.264 碼流的結(jié)構(gòu),以及如何從 H.264 的碼流中找到那些像素,。 對于一個(gè)解碼器來說,,它的工作對象就是從一個(gè)特定結(jié)構(gòu)的數(shù)據(jù)流中去獲取有效的 bit 流,而這個(gè)數(shù)據(jù)流則是結(jié)構(gòu)化后分為數(shù)據(jù)包傳輸?shù)?,其大致結(jié)構(gòu)如下: 我們可以看到,,在 NAL 包之間存在著一些間隔標(biāo)記,。 NAL 包的第一個(gè)字節(jié)是定義包類型的頭文件,NAL 包有這樣一些類型: 類型 | 定義 | 0 | Undefined | 1 | Slice layer without partitioning non IDR | 2 | Slice data partition A layer | 3 | Slice data partition B layer | 4 | Slice data partition C layer | 5 | Slice layer without partitioning IDR | 6 | Additional information (SEI) | 7 | Sequence parameter set | 8 | Picture parameter set | 9 | Access unit delimiter | 10 | End of sequence | 11 | End of stream | 12 | Filler data | 13..23 | Reserved | 24..31 | Undefined | NAL 的類型說明了當(dāng)前這個(gè) NAL 包的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)含義,,它可能是片(Slice),,參數(shù)集或者填充數(shù)據(jù)等等。 如上圖所示,,NAL 包將其負(fù)載數(shù)據(jù)存儲在 RBSP(Raw Byte Sequence Payload) 中,,RBSP 是一系列的 SODB(String Of Data Bits)。 下面,,我們來具體看看 H.264 的碼流結(jié)構(gòu): 一張圖片可以包含一個(gè)或多個(gè)分片(Slice),,而每一個(gè)分片(Slice)又會被分為了若干宏塊(Macroblock)。對于分片(Slice)來說,,有如下這些類型: 類型 | 定義 | 0 | P-slice. Consists of P-macroblocks (each macro block is predicted using one reference frame) and / or I-macroblocks. | 1 | B-slice. Consists of B-macroblocks (each macroblock is predicted using one or two reference frames) and / or I-macroblocks. | 2 | I-slice. Contains only I-macroblocks. Each macroblock is predicted from previously coded blocks of the same slice. | 3 | SP-slice. Consists of P and / or I-macroblocks and lets you switch between encoded streams. | 4 | SI-slice. It consists of a special type of SI-macroblocks and lets you switch between encoded streams. | 5 | P-slice. | 6 | B-slice. | 7 | I-slice. | 8 | SP-slice. | 9 | SI-slice. | 如我們所見,,每個(gè)分片也包含著頭和數(shù)據(jù)兩部分,分片頭中包含著分片類型,、分片中的宏塊類型,、分片幀的數(shù)量以及對應(yīng)的幀的設(shè)置和參數(shù)等信息,而分片數(shù)據(jù)中則是宏塊,,這里就是我們要找的存儲像素?cái)?shù)據(jù)的地方,。 宏塊是視頻信息的主要承載者,因?yàn)樗恳粋€(gè)像素的亮度和色度信息,。視頻解碼最主要的工作則是提供高效的方式從碼流中獲得宏塊中的像素陣列,。 從上圖中,可以看到,,宏塊中包含了宏塊類型,、預(yù)測類型、Coded Block Pattern,、Quantization Parameter,、像素的亮度和色度數(shù)據(jù)集等等信息。 至此,,我們對 H.264 的碼流數(shù)據(jù)結(jié)構(gòu)應(yīng)該有了一個(gè)大致的了解,。 幀內(nèi)預(yù)測和幀間預(yù)測在上一節(jié)的末尾,,我們介紹了宏塊的數(shù)據(jù)結(jié)構(gòu),,其中提到了「預(yù)測類型」這個(gè)字段,這里就接著說說「幀內(nèi)預(yù)測」和「幀間預(yù)測」這兩種在視頻編碼中常用到的壓縮方法,,也可以稱為「幀內(nèi)壓縮」和「幀間壓縮」,。 幀內(nèi)壓縮類似于圖片壓縮,跟這一幀的前面(或后面)一幀(或幾幀)無關(guān),,由當(dāng)前幀中,,已編碼的部分來推測當(dāng)前待編碼的這一部分?jǐn)?shù)據(jù)是什么,。幀間壓縮是由這一幀的前(或后)一幀(或幾幀)來推測當(dāng)前待壓縮的這一部分?jǐn)?shù)據(jù)是什么。 上節(jié)中,,我們說過圖片可以劃分為宏塊,。一般來說,運(yùn)動多細(xì)節(jié)多的部分,,劃分成小塊來編碼,,無變化的大片的部分,劃分成大塊來編碼,。其大致效果如下: 幀內(nèi)預(yù)測對于幀內(nèi)壓縮,,我們可以看下圖示例: 我們可以通過第 1、2,、3,、4、5 塊的編碼來推測和計(jì)算第 6 塊的編碼,,因此就不需要對第 6 塊進(jìn)行編碼了,,從而壓縮了第 6 塊,節(jié)省了空間,。 幀內(nèi)預(yù)測在 H.264 編碼標(biāo)準(zhǔn)里有以下幾種預(yù)測方法: 幀間預(yù)測對于幀間壓縮,,可以看下面連續(xù)的兩幀: 可以看到前后兩幀的差異其實(shí)是很小的,這時(shí)候用幀間壓縮就很有意義,。 做幀間壓縮常用的方式就是塊匹配(Block Matching),,就是找找看前面已經(jīng)編碼的幾幀里面,和我當(dāng)前這個(gè)塊最類似的一個(gè)塊,,這樣我就不用編碼當(dāng)前塊的內(nèi)容了,,只需要編碼當(dāng)前塊和我找到的那個(gè)塊的差異(稱為殘差)即可。找最像的塊的過程叫運(yùn)動搜索(Motion Search),,又叫運(yùn)動估計(jì)(Motion Estimation),。用殘差和原來的塊就能推算出當(dāng)前塊的過程叫運(yùn)動補(bǔ)償(Motion Compensation)。 視頻業(yè)務(wù)我們平常最常接觸到的視頻相關(guān)的業(yè)務(wù)方式通常有:本地視頻文件播放,、網(wǎng)絡(luò)視頻點(diǎn)播,、網(wǎng)絡(luò)視頻直播等等幾種。對于網(wǎng)絡(luò)視頻點(diǎn)播,、網(wǎng)絡(luò)視頻直播,,整個(gè)過程大致如下圖所示: 而本地視頻文件播放就更簡單了,是在上面的過程中省略掉解協(xié)議的過程,。 流媒體協(xié)議隨著互聯(lián)網(wǎng)基礎(chǔ)設(shè)施越來越完善,,網(wǎng)絡(luò)視頻點(diǎn)播和直播業(yè)務(wù)也越來越多,這其中少不了流媒體協(xié)議的支持,。常見的流媒體協(xié)議有: - RTP,,實(shí)時(shí)傳輸協(xié)議,,Real-time Transport Protocol,是一種網(wǎng)絡(luò)傳輸協(xié)議,,運(yùn)行在 UDP 協(xié)議之上,,RTP協(xié)議詳細(xì)說明了在互聯(lián)網(wǎng)上傳遞音頻和視頻的標(biāo)準(zhǔn)數(shù)據(jù)包格式。RTP協(xié)議常用于流媒體系統(tǒng)(配合 RTSP 協(xié)議),。
- RTCP,,實(shí)時(shí)傳輸控制協(xié)議,Real-time Transport Control Protocol,,是實(shí)時(shí)傳輸協(xié)議(RTP)的一個(gè)姐妹協(xié)議,。RTCP為RTP媒體流提供信道外(out-of-band)控制。RTCP 本身并不傳輸數(shù)據(jù),,但和 RTP 一起協(xié)作將多媒體數(shù)據(jù)打包和發(fā)送,。RTCP 定期在流多媒體會話參加者之間傳輸控制數(shù)據(jù)。RTCP 的主要功能是為 RTP 所提供的服務(wù)質(zhì)量(Quality of Service)提供反饋,。
- RTSP,,實(shí)時(shí)流傳輸協(xié)議,Real Time Streaming Protocol,,該協(xié)議定義了一對多應(yīng)用程序如何有效地通過 IP 網(wǎng)絡(luò)傳送多媒體數(shù)據(jù),。RTSP 在體系結(jié)構(gòu)上位于 RTP 和 RTCP 之上,它使用 TCP 或 UDP 完成數(shù)據(jù)傳輸,。使用 RTSP 時(shí),,客戶機(jī)和服務(wù)器都可以發(fā)出請求,即 RTSP 可以是雙向的,。
- RTMP,,實(shí)時(shí)消息傳輸協(xié)議,Real Time Messaging Protocol,,是 Adobe Systems 公司為 Flash 播放器和服務(wù)器之間音頻,、視頻和數(shù)據(jù)傳輸開發(fā)的開放協(xié)議。協(xié)議基于 TCP,,是一個(gè)協(xié)議族,,包括 RTMP 基本協(xié)議及 RTMPT/RTMPS/RTMPE 等多種變種。RTMP 是一種設(shè)計(jì)用來進(jìn)行實(shí)時(shí)數(shù)據(jù)通信的網(wǎng)絡(luò)協(xié)議,,主要用來在 Flash/AIR 平臺和支持RTMP協(xié)議的流媒體/交互服務(wù)器之間進(jìn)行音視頻和數(shù)據(jù)通信,。
- RTMFP,是 Adobe 公司開發(fā)的一套新的通信協(xié)議,,全稱 Real Time Media Flow Protocol,,協(xié)議基于 UDP,支持 C/S 模式和 P2P 模式,,即該協(xié)議可以讓使用 Adobe Flash Player 的終端用戶之間進(jìn)行直接通信,。
- HTTP,超文本傳輸協(xié)議,,HyperText Transfer Protocol,,運(yùn)行在 TCP 之上,這個(gè)協(xié)議是大家非常熟悉的,,它也可以用到視頻業(yè)務(wù)中來,。
- HLS,是蘋果公司實(shí)現(xiàn)的基于 HTTP 的流媒體傳輸協(xié)議,,全稱 HTTP Live Streaming,,可支持流媒體的直播和點(diǎn)播,主要應(yīng)用在 iOS 系統(tǒng),,為 iOS 設(shè)備(如 iPhone,、iPad)提供音視頻直播和點(diǎn)播方案。對于 HLS 點(diǎn)播,,基本上就是常見的分段 HTTP 點(diǎn)播,,不同在于,它的分段非常小,。要實(shí)現(xiàn)HLS點(diǎn)播,,重點(diǎn)在于對媒體文件分段。對于 HLS 直播,,相對于常見的流媒體直播協(xié)議,,例如 RTMP 協(xié)議、RTSP 協(xié)議等,,HLS 最大的不同在于直播客戶端獲取到的并不是一個(gè)完整的數(shù)據(jù)流,,而是連續(xù)的、短時(shí)長的媒體文件(MPEG-TS 格式),,客戶端不斷的下載并播放這些小文件,。由于數(shù)據(jù)通過 HTTP 協(xié)議傳輸,所以完全不用考慮防火墻或者代理的問題,,而且分段文件的時(shí)長很短,,客戶端可以很快的選擇和切換碼率,以適應(yīng)不同帶寬條件下的播放,。不過 HLS 的這種技術(shù)特點(diǎn),,決定了它的延遲一般總是會高于普通的流媒體直播協(xié)議。
業(yè)務(wù)方案在國內(nèi)主流的一些視頻業(yè)務(wù)相關(guān)的公司中,,主要采用的視頻業(yè)務(wù)方案有: 網(wǎng)絡(luò)視頻點(diǎn)播 公司 | 協(xié)議 | 封裝 | 視頻編碼 | 音頻編碼 | 播放器 | CNTV | HTTP | MP4 | H.264 | AAC | Flash | CNTV(部分) | RTMP | FLV | H.264 | AAC | Flash | 華數(shù) TV | HTTP | MP4 | H.264 | AAC | Flash | 優(yōu)酷網(wǎng) | HTTP | FLV | H.264 | AAC | Flash | 土豆網(wǎng) | HTTP | F4V | H.264 | AAC | Flash | 56網(wǎng) | HTTP | FLV | H.264 | AAC | Flash | 音悅臺 | HTTP | MP4 | H.264 | AAC | Flash | 樂視網(wǎng) | HTTP | FLV | H.264 | AAC | Flash | 新浪視頻 | HTTP | FLV | H.264 | AAC | Flash | 網(wǎng)絡(luò)視頻點(diǎn)播業(yè)務(wù)采用 HTTP 有兩方面優(yōu)勢: - HTTP 是基于 TCP 協(xié)議的應(yīng)用層協(xié)議,,媒體傳輸過程中不會出現(xiàn)丟包等現(xiàn)象,從而保證了視頻的質(zhì)量。
- HTTP 是絕大部分的 Web 服務(wù)器支持的協(xié)議,,因而流媒體服務(wù)機(jī)構(gòu)不必投資購買額外的流媒體服務(wù)器,,從而節(jié)約了開支。
網(wǎng)絡(luò)視頻點(diǎn)播服務(wù)采用的封裝格式有多種:MP4,,F(xiàn)LV,,F(xiàn)4V 等,它們之間的區(qū)別不是很大,。 視頻編碼標(biāo)準(zhǔn)和音頻編碼標(biāo)準(zhǔn)是 H.264 和 AAC,,這兩種標(biāo)準(zhǔn)分別是當(dāng)今實(shí)際應(yīng)用中編碼效率最高的視頻標(biāo)準(zhǔn)和音頻標(biāo)準(zhǔn)。 視頻播放器方面則都使用了 Flash 播放器,。 網(wǎng)絡(luò)視頻直播 公司 | 協(xié)議 | 封裝 | 視頻編碼 | 音頻編碼 | 播放器 | 華數(shù) TV | RTMP | FLV | H.264 | AAC | Flash | 六間房 | RTMP | FLV | H.264 | AAC | Flash | 中國教育電視臺 | RTMP | FLV | H.264 | AAC | Flash | 北廣傳媒移動電視 | RTMP | FLV | H.264 | AAC | Flash | 上海IPTV | RTSP+RTP | TS | H.264 | MP2 | 機(jī)頂盒 | 網(wǎng)絡(luò)視頻直播服務(wù)采用 RTMP 作為直播協(xié)議的好處是可以直接被 Flash 播放器支持,,而 Flash 播放器在 PC 時(shí)代有著極高的普及率,并且與瀏覽器結(jié)合的很好,。因此這種流媒體直播平臺基本上可以實(shí)現(xiàn)了「無插件直播」,,極大降低了用戶使用成本。 封裝格式,、視頻編碼,、音頻編碼、播放器方面幾乎全部采用了 FLV,、H.264,、AAC、Flash,。FLV,、RTMP、Flash 都是 Adobe 公司的產(chǎn)品,,天生有著良好的結(jié)合性,。 在現(xiàn)在看來,以上的數(shù)據(jù)已經(jīng)有些過時(shí)了,,比如現(xiàn)在隨著移動互聯(lián)網(wǎng)時(shí)代的爆發(fā),,H5 以及客戶端應(yīng)用的普及,行業(yè)中對視頻業(yè)務(wù)技術(shù)方案的選擇也逐漸在發(fā)生著變化,,而我們則需要結(jié)合眼下的實(shí)際情況和技術(shù)發(fā)展的趨勢去做出合適的技術(shù)選型,。 參考
|