Nginx搭建流媒體服務器詳解(RTMP和HLS)

本文所講開發環境以Linux爲準:

本文demo架構是android端採用RTMP推流,播放用H5播放器video.js播放RTMP協議或HLS協議。

實驗步驟:

  1. 先下載安裝 nginx 和 nginx-rtmp 編譯依賴工具

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

  1. 創建一個工作目錄,並切換到工作目錄

mkdir /usr/jason/nginx
cd /usr/jason/nginx

  1. 下載 nginx 和 nginx-rtmp源碼(wget是一個從網絡上自動下載文件的自由工具)

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

  1. 安裝unzip工具,解壓下載的安裝包

sudo apt-get install unzip

  1. 解壓 nginx 和 nginx-rtmp安裝包

tar -zxvf nginx-1.7.5.tar.gz
-zxvf分別是四個參數
x : 從 tar 包中把文件提取出來
z : 表示 tar 包是被 gzip 壓縮過的,所以解壓時需要用 gunzip 解壓
v : 顯示詳細信息
f xxx.tar.gz : 指定被處理的文件是 xxx.tar.gz
unzip master.zip

  1. 切換到 nginx-目錄

cd nginx-1.7.5

  1. 添加 nginx-rtmp 模板編譯到 nginx

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

  1. 編譯安裝

make
sudo make install

  1. 安裝nginx init 腳本

sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo update-rc.d nginx defaults

  1. 啓動和停止nginx 服務,生成配置文件

sudo service nginx start
sudo service nginx stop

  1. 安裝 FFmpeg

make
make install

  1. 配置 nginx-rtmp 服務器或HLS服務器

打開 /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;

        }

            #RTMP直播流配置

             application rtmplive{

               live on;

               # max_connections:1024;

             }

             #HLS直播流配置

             application hls {

                     live on;

                    hls on;

                     hls_path /usr/local/nginx/html/hls;

                     hls_fragment 5s;

            }

    }

}
  1. 保存上面配置文件,然後重新啓動nginx服務

sudo service nginx restart

  1. 如果你使用了防火牆

請允許端口 tcp 1935

  1. 使用 客戶端,使用 rtmp協議進行視頻實時採集

Field 1: rtmp://your.vultr.ip/live/
Field 2: stream-key-your-set

服務器配置測試播放器:

將播放器複製到目錄:/usr/local/nginx/html/,然後修改播放地址

用ffplay播放RTMP直播流:

ffplay “rtmp://49.4.11.26:8088/hls/test.m3u8”

用ffplay播放HLS直播流:

ffplay “http://49.4.11.26:8088/hls/test.m3u8”

實驗結論:

RTMP的延時明顯低於HLS。

android推流的項目地址:

https://github.com/wxp19940506/dn_live.git
https://github.com/wxp19940506/JasonPushStream.git

鏈接:https://www.jianshu.com/p/ee5f4734b5ab

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章