iOS基於RTMP的視頻推流
一、基本介紹
iOS直播一出世,立馬火熱的不行,各種直播平台如雨后春筍,正因為如此,也同樣帶動了直播的技術快速發展,在IT界精通直播技術的猴子可是很值錢的。直播技術涉及的知識面很廣,最主要的大概就是這幾個:軟硬解碼.h264、美顏處理、推流RTMP、拉流播放、視頻錄制、發送彈幕、即時通訊.
二、常用技術
- 軟硬解碼.h264:使用iOS8.0之后蘋果開源的VideoToolBox,這正是很多直播軟件最低兼容iOS8的原因了
- 美顏處理:CPUImage,內置150多種濾鏡,功能強大
- 拉流播放:ijkplayer.framework、VLC
- 推流RTMP:安裝nginx+rtmp服務器,ffmpeg推流
- 視頻錄制:UIImagePiackerController、AVCaptureSession、GPUImageVideoCamera
- 發送彈幕:BarrageRenderer第三方庫
- 即時通訊:XMPP、環信、融雲等
三、安裝nginx+rtmp服務器流程,此處我直接安裝成功,如有失敗,請查看下面的參考原鏈接:http://www.jianshu.com/p/8ea016b2720e
1、安裝Homebrew,打開終端, 查看是否已經安裝了Homebrew, 直接終端輸入命令
man brew

2、如果Mac已經安裝了, 會顯示一些命令的幫助信息. 此時輸入Q退出即可, 直接進入第二步。反之, 如果沒有安裝,執行命令。此處可能需要輸入密碼,修改宿主目錄讀寫權限。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


3、安裝nginx,先clone nginx項目到本地
brew tap homebrew/nginx

4、執行安裝
brew install nginx-full --with-rtmp-module

5、nginx和rtmp模塊就安裝好了,輸入命令
nginx

6、在瀏覽器里打開http://localhost:8080,查看安裝結果

7、安裝成功后,配置nginx和ramp,找到nginx.conf文件所在位置
brew info nginx-full


8、編輯nginx.conf,在http節點后面加上rtmp配置
#在http節點后面加上rtmp配置
rtmp {
server {
listen 1935;
application rtmplive {
live on;
record off;
}
}
}

9、查看nginx版本號
nginx -v

10、替換成自己的nginx版本號,重啟nginx
/usr/local/Cellar/nginx-full/1.10.3/bin/nginx -s reload

11、安裝ffmpeg,大概50多M,建議翻or牆安裝,本人翻or牆安裝很快成功了。
brew install ffmpeg 注意:如果需要更新ffmpeg,使用后面這條命令:brew upgrade ffmpeg


12、安裝一個支持rtmp協議的視頻播放器VLC
框架: https://github.com/videolan/vlc
播放器: VLC
13、ffmpeg推流,准備本地的一個視頻文件
ffmpeg -re -i /Users/xiayuanquan/Desktop/movie.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/rtmplive/room
14、將視頻推流到服務器后,打開VLC,然后File->open network->輸入,實現效果請查看下面的參考原地址第二條
rtmp://localhost:1935/rtmplive/room
三、參考原地址
1、VideoToolBox:http://www.jianshu.com/p/a6530fa46a88
2、基於RTMP推流:http://www.jianshu.com/p/8ea016b2720e(該博主Monkey_ALin 簡書寫的great,受益匪淺,感謝)
3、github下載地址:完整版視頻直播:喵播下載地址(該博主Monkey_ALin 簡書上的github地址)
4、GPUImage:http://www.cnblogs.com/XYQ-208910/p/5859683.html
5、ffmpeg:http://www.cnblogs.com/XYQ-208910/p/5857239.html
6、ijkplayer:http://www.cnblogs.com/XYQ-208910/p/5856815.html
