天天看點

NDK 直播流媒體伺服器搭建NginxRTMP 協定直播架構安裝 Nginx

作者:位元組流動

來源:

https://blog.csdn.net/Kennethdroid/article/details/86418725

Nginx

Nginx 是由俄羅斯人

Igor Sysoev

編寫的輕量級 Web 伺服器,發音為 “engine x”,也可用作反向代理和負載均衡器,于 2004 年公開釋出,遵循 BSD 開源許可,它以高穩定性、豐富的功能以及低系統開銷而出名。Nginx 也是一種子產品化的伺服器,基于 Nginx 可以靈活添加各種功能子產品,如 HTTP 子產品、WebSocket 子產品、RTMP 子產品等,不同子產品占用不同的端口,互相獨立,如本文中要使用的 RTMP 子產品預設端口為 1935 。

本文中的 Nginx 伺服器隻添加了一個 RTMP 子產品,用作一個簡單的流媒體伺服器。

RTMP 協定

RTMP ( Real Time Message Protocol )協定是一種實時資訊傳輸協定,由 Adobe 公司開發,用來解決多媒體資料傳輸流的多路複用( Multiplexing )和分包( packetizing )的問題,它是應用層協定,傳輸層通常基于 TCP 實作。RTMP 協定在前期并未受到太多的重視,近兩年随着 VR 以及視訊直播領域的火熱,RTMP 協定正逐漸成為主流。

直播架構

NDK 直播流媒體伺服器搭建NginxRTMP 協定直播架構安裝 Nginx

搭建一個簡易的直播架構需要三個角色:直播(推流)用戶端,流媒體伺服器和引流用戶端。

安裝 Nginx

環境: Ubuntu 16.04 ,注意:若使用阿裡雲主機需要配置安全組規則,開放 80 、1935 等端口。

NDK 直播流媒體伺服器搭建NginxRTMP 協定直播架構安裝 Nginx

安裝 nginx 和 nginx-rtmp 編譯依賴工具:

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev      

工作目錄:

mkdir nginx
chmod +x -R nginx/
cd live      

下載下傳 nginx 和 nginx-rtmp 源碼:

wget http://nginx.org/download/nginx-1.8.1.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip      

解壓:

# 安裝 unzip
# sudo apt-get install unzip
tar -zxvf nginx-1.8.1.tar.gz
unzip master.zip      

添加 rtmp-nginx 子產品:

cd nginx-1.8.1
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master      

編譯、安裝:

# 編譯 nginx 源碼
make
# 安裝
sudo make install      

啟動 Nginx 服務:

sudo service nginx start
# sudo service nginx stop 停止      

打開浏覽器

http://127.0.0.1/

或者輸入阿裡雲主機的公網 ip :

NDK 直播流媒體伺服器搭建NginxRTMP 協定直播架構安裝 Nginx

安裝 FFmpeg:

sudo apt-get install ffmpeg
# 檢視版本資訊
ffmpeg -v       
NDK 直播流媒體伺服器搭建NginxRTMP 協定直播架構安裝 Nginx

配置 nginx 伺服器:

# 進入 nginx 安裝目錄
cd /usr/local/nginx
# 修改配置檔案 /usr/local/nginx/conf/nginx.conf
# 在配置檔案中添加以下代碼
rtmp {
    server {
            listen 1935;
            chunk_size 4096;

            application live {
                    live on;
                    record off;
                    exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;
            }
            application live360p {
                    live on;
                    record off;
        }
    }
}      

重新開機 nginx 伺服器:

sudo service nginx restart      

到目前為止,一個簡單的流媒體伺服器搭建完成,接下來将實作伺服器與用戶端之間的推流和引流。

NDK 開發系列文章:

「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。
NDK 直播流媒體伺服器搭建NginxRTMP 協定直播架構安裝 Nginx

繼續閱讀