最簡單的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
我會在個人博客裏作一些簡單的解析,目的是但願讓更多的人瞭解直播技術,可以瞭解直播內部的一些簡單的原理,再也不知其然不知其因此然。編碼
代碼使用方法見Demo。後續會根據上述功能的每一點對源代碼進行解析。加密
若是有什麼疑問或者問題,請評論指出。但願可以給願意瞭解直播技術的人拋出一塊好磚。
注1:項目中全部相關的文件名,類名,全局變量,全局方法都會加AW/aw做爲前綴。
注2:項目中關鍵代碼都使用c語言編寫,理論上能夠很容易地移植到android中。