1.公司有風聲要作直播,趕好這段有時間,本身研究了一下.其實走過的彎路比較多,後來在拉流/推流/服務器搭建都完成以後,思路變得很清晰.linux
2.首先從服務器搭建提及,關於三種主流的HLS/RTMP/FLV,這裏我使用的是RTMP,關於其中的切換,咱們須要看一下ngnix的配置文件的相關參數文檔.
nginx
我使用的是ngnix+rtmp,也就是本地搭建ngnix服務器,另外在ngnix服務器上添加了rtmp的模塊.閉門造車容易猝死,我參考的是簡書上的,請移步:http://www.jianshu.com/p/5ee84e403ea8
服務器
參照上邊連接中幾個注意點:
框架
1):當你對於linux的命令行熟練運用的時候,homebrew確實好用.ide
2):編碼
這一步驟有可能會一直提示失敗,可是多嘗試幾回,就會成功.spa
3):命令行
注意本身安裝的ngnix版本,進行查看視頻
4):當你完成了nginx配置rtmp以後,上邊連接後續的部分能夠忽略.
homebrew
3.推流,推流我使用的是LFLiveKit開源框架,使用極其簡單,而且功能比較完善
截取最主要的代碼:
1):LFLiveSession是核心類,能夠重點研究其屬性與方法,使用方式簡單.
2):整個的推流過程爲:(分析源代碼得到)
創建RTMPConnection(LFStreamRTMPSocket),
將採集到的視頻數據進行H.264編碼,音頻數據進行ACC編碼,
封包上推到服務器.
其中編碼能夠經過ffmpeg或者videocore實現,上推的過程能夠經過ffmpeg或者rtmplib實現.(LFLiveKit是經過videocore進行編碼,rtmplib進行上推)
4.拉流,拉流我使用的是IJKMediaFramework,使用及其簡單,而且功能完善
截取最主要的代碼:
1):IJKFFMoviePlayerController是核心類,使用簡單.
5.程序截圖
1.推流端:
2.拉流端:
6.感謝
感謝簡書做者 滿山李子 的mac上搭建直播服務器nginx這麼好的文章
感謝LFLivePlayer以及IJKMediaFramework的做者,以及對開源社區作出貢獻的IT碼農.
7.附言
Demo請email sunny_1v@163.com