1小時學會:最簡單的iOS直播推流(二)程式碼架構概述

hard_man發表於2018-01-12

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

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

推流流程

使用rtmp協議(其他協議也類似)推流的大體流程如下:

  1. 通過系統相機捕獲視訊及聲音,該美顏的美顏,該濾鏡的濾鏡。
  2. 捕獲的視訊幀為yuv格式,音訊幀為pcm格式。
  3. 將捕獲的音視訊資料,傳入一個序列佇列(編碼佇列),在佇列中進行編碼操作。
  4. 將yuv格式視訊資料,轉成h264格式視訊幀;將pcm格式音訊資料,轉成aac格式音訊幀。
  5. 將轉好的h264及aac格式資料,轉成flv視訊幀。放入編碼緩衝區,待傳送。繼續獲取視訊幀並編碼。
  6. 建立rtmp連線到伺服器,成功後,建立另一個序列佇列(傳送佇列)。
  7. rtmp協議,需要在首幀傳送 sps/pps和AudioSpecificConfig這2種特別的幀資料。
  8. 傳送了首幀之後,傳送佇列不停從編碼佇列中獲取flv視訊幀,傳送至rtmp服務端。
  9. 結束直播,關閉推流,釋放資源。

我的程式碼嚴格按照上述流程編寫。這些邏輯也適用於市面上出現的幾乎所有的推流程式碼。

我把上述流程及原始碼畫了2個圖。裡面有詳細的流程及使用的技術。

推流流程圖

1小時學會:最簡單的iOS直播推流(二)程式碼架構概述

程式碼結構類圖

1小時學會:最簡單的iOS直播推流(二)程式碼架構概述

文章列表

  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介紹(完結)

相關文章