1小時學會:最簡單的iOS直播推流(一)介紹

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

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

介紹

最近在作iOS直播,研究了相關直播技術,主要包含兩方面:推流,播放。github

由於以前使用cocos2dx作過一個視頻遊戲(戀愛公寓),用ffmpeg+sdl+cocos2dx實現過視頻播放器。架構

遊戲中的視頻是hevc(h265)+aac合成mp4文件,使用aes加密。視頻播放的時候,須要使用ffmpeg中的crypt模塊進行aes解密後播放視頻,解析出來的yuv圖片數據直接送給OpenGL顯示。app

因此此次主要研究推流技術。並將代碼開源ide

其實直播技術中不論播放仍是推流,更多的應該算是技術整合,就是將前人作好的協議和實現,整合成咱們本身想要的功能。函數

而此次作這個項目也並非作了什麼技術創新,github裏面已經有着不少直播源代碼,可能比我寫的更好更完整。而個人代碼,特色就是簡單直接,直奔主題。post

我會在個人博客裏作一些簡單的解析,目的是但願讓更多的人瞭解直播技術,可以瞭解直播內部的一些簡單的原理,再也不知其然不知其因此然。編碼

功能範圍

  • 視頻捕獲:系統方法捕獲,GPUImage捕獲,CMSampleRef解析
  • 美顏濾鏡:GPUImage,
  • 視頻變換:libyuv
  • 軟編碼:faac,x264
  • 硬編碼:VideoToolbox(aac/h264)
  • libaw:C語言函數庫
  • flv協議及編碼
  • 推流協議:librtmp,rtmp重連,rtmp各類狀態回調

代碼使用及注意

代碼使用方法見Demo。後續會根據上述功能的每一點對源代碼進行解析。加密

若是有什麼疑問或者問題,請評論指出。但願可以給願意瞭解直播技術的人拋出一塊好磚。

注1:項目中全部相關的文件名,類名,全局變量,全局方法都會加AW/aw做爲前綴。

注2:項目中關鍵代碼都使用c語言編寫,理論上能夠很容易地移植到android中。

文章列表

  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介紹(完結)
相關文章
相關標籤/搜索