視訊開發基礎篇

靚仔凌霄發表於2018-07-26

在進行視訊開發之前,如果你對顏色編碼格式不是很熟悉,建議先閱讀一下這篇文章:yuv和rgb的相關知識。有一個大概瞭解之後,在看下面的視訊相關的基礎知識。

封裝格式的辨認很簡單,大多數情況下,擴充名就是封裝格式的名字。比如一個檔案“金剛狼.avi”,那它就是屬於avi的封裝格式,“鋼之鍊金術師.Mkv”,那它就屬於mkv封裝格式, “喜羊羊與灰太狼.rmvb”就是rmvb封裝格式。簡而言之,視訊檔案字尾名就是封裝格式的名字。不過wmv和rmvb就比較特殊,後面編碼器部分再說。封裝格式就是酒瓶。酒瓶就不影響酒的口感,同樣,封裝格式一樣不影響視訊畫質。它只負責把內部的視訊軌和音訊軌整合在一起,只起到一個資料夾(或者壓縮包)的作用,並沒有對視訊軌和音訊軌造成影響。

幾種主流媒體格式

  1. AVI(Audio Video Interactive) 比較早的AVI是Microsoft開發的。其含義是Audio Video Interactive,就是把視訊和音訊編碼混合在一起儲存。 AVI也是最長壽的格式,已存在10餘年了,雖然釋出過改版(V2.0於1996年釋出),但已顯老態。AVI格式上限制比較多,只能有一個視訊軌道和一個音訊軌道(現在有非標準外掛可加入最多兩個音訊軌道),還可以有一些附加軌道,如文字等。AVI格式不提供任何控制功能。副檔名:avi 總結:只能封裝一條視訊和一條音訊,不能封裝字幕,沒有流媒體功能(就是不能使用它進行線上播放的意思)
  2. **WMV(Windows Media Video)**是微軟公司開發的一組數字視訊編解碼格式的通稱,ASF(Advanced Systems Format)是其封裝格式。 ASF封裝的WMV檔具有“數字版權保護”功能。副檔名:wmv/asf、wmvhd 其音訊編碼採用WMA,視訊編碼採用WMV,需要版權支援且機頂盒支援的不多。
  3. **MPEG(Moving Picture Experts Group)**是一個國際標準化組織(ISO)認可的媒體封裝形式,受到大部份機器的支援。其儲存方式多樣,可以適應不同的應用環境。MPEG-4檔的檔容器格式在Part 1(mux)、14(asp)、15(avc)等中規定。MPEG的控制功能豐富,可以有多個視訊(即角度)、音軌、字幕(點陣圖字幕)等等。
    1. MPEG1是最早出現的,VCD這個具體的格式最早是從日本來的並遵從MPEG1規格
    2. MPEG2:其代表是DVD。一般為480P(640*480)。DVD當時都符合這個標準。Xvid 和H.264同屬於MPEG4,MPEG-2還可能稱作MPEG2-HD,MPEG2-TS,其實在ITU-T的命名規範中被稱之為H.262
    3. H.264有兩個名稱,一個是沿用ITU-T組織的H.26x名稱,叫“H.264”,另一個則是“MPEG-4AVC(MPEG4第10部分)”,AVC意為高階視訊編碼。
    4. H264的資料壓縮率比當前DVD系統中使用的MPEG-2高2-3倍,比MPEG-4高1.5-2倍。x264編碼,是H.264編碼的一個開源分支,它符合H.264標準,其功能在於編碼(encoding),而不作為解碼器(decoder)使用,264編碼最大的特點在於注重實用,它在不明顯降低編碼效能的前提下,努力降低編碼的計算複雜度,X264對於H.264編碼中的一些複雜編碼特性做了折衷處理,其壓縮視訊體積小於Xvid(MPEG4)編碼視訊
    5. mp4格式是H.264編碼指定使用的標準封裝格式,3GP是MP4格式的一種簡化版本,減少了儲存空間和較低的頻寬需求,讓手機上有限的儲存空間可以使用可以封裝多種多條編碼的視訊和音訊,也可以封裝字幕,但沒有流媒體功能,可以做成分片式進行流式播放。
  4. Matroska 是一種新的多媒體封裝格式,這個封裝格式可把多種不同編碼的視訊及16條或以上不同格式的音訊和語言不同的字幕封裝到一個Matroska Media檔內。它也是其中一種開放原始碼的多媒體封裝格式。Matroska同時還可以提供非常好的互動功能,而且比MPEG的方便、強大。副檔名:mkv
  5. **Real Video或者稱Real Media(RM)**檔是由RealNetworks開發的一種檔容器。它通常只能容納Real Video和Real Audio編碼的媒體。該檔帶有一定的互動功能,允許編寫指令碼以控制播放。RM,尤其是可變位元率的RMVB格式,體積很小,非常受到網路下載者的歡迎。副檔名:rm/rmvb
  6. QuickTime File Format 是由蘋果公司開發的容器。1998年2月11日,國際標準組織(ISO)認可QuickTime檔案格式作為MPEG-4標準的基礎。QT可儲存的內容相當豐富,除了視訊、音訊以外還可支援圖片、文字(文字字幕)等。副檔名:mov、qt
  7. Ogg Media 是一個完全開放性的多媒體系統計劃,OGM(Ogg Media File)是其容器格式。OGM可以支援多視訊、音訊、字幕(文字字幕)等多種軌道。副檔名:ogg
  8. MOD 格式是JVC生產的硬碟攝錄機所採用的儲存格式名稱
  9. MKV 和mp4差不多,但有流媒體功能,可以使用它進行線上播放,還可以使用它封裝rv(rm/rmvb)編碼

另外: 視訊封裝格式是MP4,MKV,或者其它,它們都是:視訊流,音訊流,字幕完全用自己獨立的軌道,並且可以是外掛字幕。 字幕字尾名為str,ass,ssa等。這些字幕有自己的特效,什麼時候以怎樣的形式出現哪些文字,都是由寫好的程式碼控制的。

編碼格式

就是指通過特定的壓縮技術,將某個視訊格式的檔案轉換成另 一種視訊格式檔案的方式。目前視訊流傳輸中最為重要的編解碼標準有國際電聯的H.264,運動靜止影象專家組的M-JPEG和國際標準化組織運動影象專家 組的MPEG系列標準,此外在網際網路上被廣泛應用的還有Real-Networks的RealVideo、微軟公司的WMV以及Apple公司的 QuickTime等。

在這裡我們主要講一下主流的H.264編碼。H.264 使影象壓縮技術上升到了一個更高的階段,能夠在較低頻寬上提供高質量的影象傳輸,該優點非常適合國內運營商使用者量大、接入網/骨幹網頻寬相對有限的狀況。 在同等的畫質下,H.264 比上一代編碼標準MPEG2 平均節約64%的傳輸碼流,而比MPEG4 ASP 要平均節約39%的傳輸碼流。如果要具體講解H.264相關的知識,又是一大篇,而且博主知識有限,不能很好的說清楚,所以這裡就只能貼上一篇參考文章了:如何實現1080P延遲低於500ms的實時超清直播傳輸技術

視訊位元速率

視訊位元速率是指視訊檔案在單位時間內使用的資料流量,也叫碼流率。位元速率越大,說明單位時間內取樣率越大,資料流精度就越高,這樣表現出來的的效果就是:視訊畫面更清晰畫質更高。這裡要和視訊幀率區分開。

視訊幀率

通常說一個視訊的25幀,指的就是這個視訊幀率,即1秒中會顯示25幀;視訊幀率影響的是畫面流暢感,也就是說視訊幀率超高,表現出來的效果就是:畫面越顯得流暢。你也可以這樣理解,假設1秒只顯1幀,那麼一段視訊看起來,就是有很明顯的卡頓感,不流暢不連慣。當然視訊幀率越高,意味著畫面越多,也就相應的,這個視訊檔案的大小也會隨之增加,佔用儲存空間也就增大了。

後話

封裝格式和編碼的關係,就是和酒與酒瓶的關係差不多,而播放器就是開酒器。為了可以喝更好的酒,最好先了解酒是什麼酒,酒瓶是什麼酒瓶,怎麼使用開酒器開酒瓶。

位元速率或者可以比喻做酒的原料。對於同一個酒瓶和做同一種酒的情況下,如果原料太少,又要要求用酒把酒瓶灌滿,此時只好兌水了,酒的品質就會變差了。然而,如果原料太多,又會造成原料浪費。所以要做好酒,我們就需要充足的原料。同樣道理,壓制一個視訊,充足的位元速率是非常需要的。如果位元速率過高,畫質提升不上去的同時還使視訊體積過大。如果位元速率不足,視訊容易出各種各樣的問題,導致壓崩。當然,位元速率不是畫質的唯一指標,壓制的時候的各種引數設定,各種濾鏡也是非常重要的。如果位元速率給得足夠高,理論上各編碼的畫質是一樣的,不過體積完全不一樣。

本篇文章只做一個大概介紹,因為每一個點往深入講都能講很長時間,視訊開發中的每一個門類,都可以深挖,衍生出一個又一個充滿技術挑戰的話題。音視訊的路很長,更多的還是要靠自己去學習和實踐,希望我的文章能對你產生一點點意義。

參考連結:封裝格式和編碼格式

相關文章