【環境搭建】在Ubuntu16.04上搭建Nginx-rtmp流媒體服務器

關於流媒體

流媒體(streaming media)是指將一連串的媒體數據壓縮後,經過網上分段發送數據,在網上即時傳輸影音以供觀賞的一種技術與過程,此技術使得數據包得以像流水一樣發送;如果不使用此技術,就必須在使用前下載整個媒體文件。流式傳輸可傳送現場影音或預存於服務器上的影片,當觀看者在收看這些影音文件時,影音數據在送達觀看者的計算機後立即由特定播放軟件播放

搭建Nginx-rtmp流媒體服務器

  • Nginx:Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。
  • rtmp:RTMP是Real Time Messaging Protocol(實時消息傳輸協議)的首字母縮寫。該協議基於TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時數據通信的網絡協議,主要用來在Flash/AIR平臺和支持RTMP協議的流媒體/交互服務器之間進行音視頻和數據通信。
  • 安裝依賴
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
  • 下載Nginx源碼包和Nginx-rtmp源碼包
wget http://nginx.org/download/nginx-1.7.5.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
  • 解壓兩個源碼包後,進入到Nginx源碼包目錄內
./configure --with-http_ssl_module --add-module=解壓後的Nginx-rtmp源碼包路徑
  • 編譯、編譯安裝
make
sudo make install
  • 下載Nginx初始化腳本,並更改權限,設置Nginx開機自啓動
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

移除開機自啓動的方法:
sudo update-rc.d -f nginx remove

sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
sudo rm /usr/local/nginx/conf/nginx.conf
sudo vim /usr/local/nginx/conf/nginx.conf

添加內容如下:

#user  nobody;
worker_processes  1;
error_log  logs/rtmp_error.log debug;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    server {
        listen       80;
        server_name  localhost;
        location /hls {
            # Serve HLS fragments
            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';
            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
        }
    }
}
rtmp {
        server {
                listen 1935;
                chunk_size 8192;
                application hls {
                        live on;
                        meta copy;
                        hls on;
                        hls_path /tmp/hls;
        }
    }
}
  • 添加crossdomain.xml文件
sudo vim /usr/local/nginx/html/crossdomain.xml

添加內容如下:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
  • 啓動nginx服務
cd /etc/init.d
./nginx start

在這裏插入圖片描述

  • 查看nginx運行狀態
systemctl status nginx.service

在這裏插入圖片描述

  • 停止nginx服務
cd /etc/init.d
./nginx start

在這裏插入圖片描述

使用obs將本地視頻推流到Nginx-rtmp流媒體服務器

爲了便於測試,在一臺windows電腦下載obs客戶端
https://obsproject.com/
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

  • 服務選擇自定義
  • 服務器地址填寫爲讓rtmp://nginx服務器的ip地址:1935/hls/
  • 串流密鑰自定義任意值
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

在Nginx-rtmp流媒體服務器上使用VLC media player測試獲取到的視頻流

下載VLC media player

sudo apt-get install vlc

在這裏插入圖片描述
在這裏插入圖片描述
串流密鑰和obs端設置的串流密鑰一致
在這裏插入圖片描述

結語

如果您有修改意見或問題,歡迎留言或者通過郵箱和我聯繫。
手打很辛苦,如果我的文章對您有幫助,轉載請註明出處。

發佈了58 篇原創文章 · 獲贊 21 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章