1小時學會:最簡單的iOS直播推流(六)h264、aac、flv介紹

hard_man發表於2018-01-19

最簡單的iOS 推流程式碼,視訊捕獲,軟編碼(faac,x264),硬編碼(aac,h264),美顏,flv編碼,rtmp協議,陸續更新程式碼解析,你想學的知識這裡都有,願意懂直播技術的同學快來看!!

原始碼:https://github.com/hardman/AWLive

前面介紹瞭如何捕獲音視訊原始資料,介紹了yuv和pcm。

下面來介紹一下我們的想要轉換的目標音視訊格式:h264,aac,flv。

什麼是h264?

這裡就不貼名詞解釋了。

說明一下,為什麼需要這種格式。

其實除了h264格式之外,視訊格式有很多種,出現這些格式原因無非有3種。

1. 壓縮尺寸。

我們來計算一下:

yuv420格式,寬度為480,高度為320的視訊,每一幀 需要 480*320*3/2 = 230400 位元組。

假設視訊每秒20幀,那麼30秒的視訊 是 230400 * 20 * 30 = 138240000 位元組 大約138M。

你可能覺得不是很大,但是這個解析度同樣清晰度的h264視訊可能只需要1-2M左右(當然也跟位元速率和I幀數量等因素有關)。

2. 為了與當前產品業務匹配,或者版權專利等原因,創造一種獨特的格式。

比如QuickTime,WMV等。

3. 對當前技術的改進。

h264正是對h263的改進。
複製程式碼

h264 怎麼壓縮視訊資料呢?

最重要的一點是將視訊幀分為關鍵幀和非關鍵幀。

關鍵幀的資料是完整的。包含了所有的顏色資料。這樣的視訊幀稱為I幀。

非關鍵幀資料不完整,但是它能夠根據前面或者後面的幀資料,甚至自己的部分幀資料,將自身資料補充完整。這種視訊幀被稱為 B/P 幀。

總體來說,h264跟yuv相比,最大的不同就是它是壓縮的(通常此過程稱為編碼,不只是簡單的壓縮)。

什麼是aac

aac同h264性質一樣,它也是pcm的壓縮(編碼)格式。

mp3大家都聽說過,以前聽歌儲存到電腦裡的歌曲90%都是mp3格式。

aac 相對 mp3來說,是更先進的壓縮格式。

什麼是flv

h264是視訊編碼格式。

aac是音訊編碼格式。

除了這兩種格式之外,還有一種將視訊和音訊合成(muxer 這個詞會在相關程式碼中經常出現)在一起的格式。

比如:mp4,avi,rmvb,flv。

flv 是一種簡單的視訊合成格式。

它支援指定的音視訊格式,如:h263,h264,VP6 及 AAC,MP3,Nellymoser等。

簡單說來,flv的組成如下:

    flv header + script tag + video tag + audio tag + ... + video tag + audio tag
複製程式碼

flv由 flv header 和無數的tag組成的。

flv header 內容是固定的。

一個tag就像是一個陣列中的元素。是一個單獨的儲存了資訊的資料塊。

script tag 記憶體儲了視訊相關資訊,如:寬高,位元速率,fps,檔案大小,音訊資訊等等。

video tag 中 儲存的是完整的視訊壓縮格式的一幀資料,如h264資料。

audio tag 中 儲存的是完整的音訊壓縮格式的一幀資料,如 aac資料。

這樣把所有資料拼接在一起,寫入檔案。這個檔案就是flv格式。可以使用播放器播放了。

而flv剛好支援 h264 和 aac。

為什麼介紹flv呢?

因為rtmp協議所傳輸的視訊流,就要求是flv格式。

所以,程式從相機和麥克風捕獲到音視訊資料後,分別轉成 aac和h264格式的音視訊幀。

然後將aac和h264音視訊幀合成flv格式的視訊後傳送到rtmp伺服器。客戶端就可以播放我們推的流了。

注:上述內容不一定夠精確,以容易理解為上。

文章列表

  1. 1小時學會:最簡單的iOS直播推流(一)專案介紹
  2. 1小時學會:最簡單的iOS直播推流(二)程式碼架構概述
  3. 1小時學會:最簡單的iOS直播推流(三)使用系統介面捕獲音視訊
  4. 1小時學會:最簡單的iOS直播推流(四)如何使用GPUImage,如何美顏
  5. 1小時學會:最簡單的iOS直播推流(五)yuv、pcm資料的介紹和獲取
  6. 1小時學會:最簡單的iOS直播推流(六)h264、aac、flv介紹
  7. 1小時學會:最簡單的iOS直播推流(七)h264/aac 硬編碼
  8. 1小時學會:最簡單的iOS直播推流(八)h264/aac 軟編碼
  9. 1小時學會:最簡單的iOS直播推流(九)flv 編碼與音視訊時間戳同步
  10. 1小時學會:最簡單的iOS直播推流(十)librtmp使用介紹
  11. 1小時學會:最簡單的iOS直播推流(十一)sps&pps和AudioSpecificConfig介紹(完結)

相關文章