iOS直播--Nginx伺服器搭建和RTMP,HLS推流實現
Nginx介紹
Nginx ("engine x") 是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。Nginx是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的,第一個公開版本0.1.0釋出於2004年10月4日。其將原始碼以類BSD許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4釋出。 Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。由俄羅斯的程式設計師Igor Sysoev所開發,供俄國大型的入口網站及搜尋引擎Rambler(俄文:Рамблер)使用。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力確實在同類型的網頁伺服器中表現較好,中國大陸使用nginx網站使用者有:百度、京東、新浪、網易、騰訊、淘寶等。
簡言之,Nginx本身是一個非常出色的HTTP伺服器,具有佔用記憶體少,高併發的特點。
安裝
brew install nginx-full --with-rtmp-module
驗證
終端輸入 nginx 啟動伺服器 在瀏覽器中輸入:http://localhost:8080,如下圖,則開啟成功。
配置檔案路徑(/usr/local/etc/nginx/nginx.conf)
配置Nginx
//支援hls location /hls { #Serve HLS config types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /usr/local/var/www; add_header Cache-Control no-cache; } //支援rtmp rtmp { server { listen 1935; application rtmplive { live on; max_connections 1024; } application hls{ live on; hls on; hls_path /usr/local/var/www/hls; hls_fragment 1s; } } }
拷貝到如圖位置
具體引數可以參考官方文件
/usr/local/Cellar/rtmp-nginx-module/1.1.7.11-dev_1/share/rtmp-nginx-module/README.md
注意:修改nginx.conf之後,需重啟nginx服務,才會生效:$nginx -s reload。 再次在瀏覽器中測試:http://localhost:8080,以確認nginx開啟的狀態。
不瞭解RTMP和HLS協議的同學請參考 流媒體協議
安裝ffmpeg
brew install ffmpeg
###RTMP推流
ffmpeg -re -i xxx你的檔案.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost/rtmplive/demo //注意這裡的目錄rtmplive要和配置檔案中 application 後面的名字一樣
如顯示上圖表示推流成功, 可以用VLC下載連結播放器開啟,延遲大概在3s~5s左右
HLS推流
ffmpeg -re -i xxx.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:1935/hls/demo
http://localhost:8080/hls/demo.m3u8
HLS流可以用VLC開啟 也可以直接用Safari開啟
由於HLS流需要先下載索引,延遲較高