1. 程式人生 > >iOS直播--Nginx伺服器搭建和RTMP,HLS推流實現

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流需要先下載索引,延遲較高