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

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

源代碼:https://github.com/hardman/AWLivegithub

推流流程

使用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個圖。裏面有詳細的流程及使用的技術。post

推流流程圖

代碼結構類圖

文章列表

  1. 1小時學會:最簡單的iOS直播推流(一)項目介紹
  2. 1小時學會:最簡單的iOS直播推流(二)代碼架構概述
  3. 1小時學會:最簡單的iOS直播推流(三)使用系統接口捕獲音視頻
  4. 1小時學會:最簡單的iOS直播推流(四)如何使用GPUImage,如何美顏
  5. 1小時學會:最簡單的iOS直播推流(五)yuv、pcm數據的介紹和獲取
  6. 1小時學會:最簡單的iOS直播推流(六)h26四、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介紹(完結)
相關文章
相關標籤/搜索