iOS 簡單的視訊直播功能開發(實時視音訊流錄製編碼+RTMP傳輸+實時拉流解碼播放)
阿新 • • 發佈:2019-02-02
原生開發基本流程:AVFoundation獲取視訊流,得到未編碼的CMSampleBuffer,需要編碼成Mpeg-4格式。編碼分軟編碼和硬編碼,考慮到iOS8之後VideoToolBox開放使用,選用VideoToolBox進行編碼。坑爹的是針對它連文件都沒有。github上有一個二次開發的OC版本叫VideoToolBoxPlus,地址:https://github.com/McZonk/VideoToolboxPlus,成功度過硬編碼難關。推流選擇使用RTMP,選擇第三方庫libRTMP,並編譯成功。編譯方法在上一篇筆記中。伺服器採用Nginx+rtmp搭建,地址: http://www.henishuo.com/mac_nginx_rtmp_server/?utm_source=tuicool&utm_medium=referral。最終陣亡在RTMP傳輸上,RTMP需要傳輸H.264格式的視訊流,需要把編碼後的CMSampleBuffer再編碼為H.264格式進行傳輸。
從CMSampleBuffer提取相關資料組裝SPS、PPS、視訊資料NALU,再將NALU通過RTMP傳輸到伺服器。最終結果是伺服器端能收到資料,但不能正確解析視訊格式。分析為組裝NALU時出錯或用RTMP傳輸時傳值出錯。這段耗時一個多星期的原生開發到此結束了。