從零搭建流媒體服務器+obs推流直播


背景介紹

本文使用的流媒體服務器的搭建是基於rtmp(Real Time Message Protocol)協議的,rtmp協議是應用層的協議,要依靠底層的傳輸層協議,比如tcp協議來保證信息傳輸的可靠性。最后提供了一個不錯的測試方案。

流媒體服務器依賴的服務,1.nginx 服務器;2.nginx服務器安裝需要依賴的服務 OpenSSL、pcre、zlib、 c++、gcc等。

服務器環境是Centos 7.3 64 位,本地操作系統 win7 旗艦版

注意事項

需要資源:1.一台雲服務器;2.一台能上網的電腦
需要注意的是本機搭建使用的是Centos 7.X的版本,iptables命令等使用方式有變動,如需修改參照3.I 中修改防火牆操作方式
由於本機上先安裝的Apache,而nginx和Apache都是默認的80端口,所以防止沖突本文修改了nginx的默認端口

安裝nginx

首先需要注意的是雖然nginx可以使用yum安裝,但是yum安裝使用的都是編譯后的文件進行安裝,並且后面所需要的rtmp模塊一般在yum源里面是找不到的,所以要想將rtmp也安裝進來,我們選擇源碼安裝,經過步驟配置,編譯,安裝。
本文是使用nginx源碼,自行編譯安裝。首先是下載源碼,由於nginx的代碼是開源托管在github上,我們先用yum 將git下載下來,然后使用git將源碼從github上clone下來

cd
mkdir source #創建源碼目錄 后面的源碼都放在這個目錄
cd source
yum -y install git #安裝git
git clone https://github.com/nginx/nginx.git #從github服務器上將nginx的源代碼下載下來
git clone https://github.com/arut/nginx-rtmp-module.git #將rtmp模塊的源碼下載下來
   
   
  
  
          

下載依賴模塊源碼pcre、OpenSSL、zlib 如果機器上已經安裝了這些模塊就不需要了

rpm -qa|grep 模塊名字  #查詢安裝的模塊的包信息
   
   
  
  
          
wget https://www.openssl.org/source/openssl-1.1.0.tar.gz #下載OpenSSL源碼包
wget https://ftp.pcre.org/pub/pcre/pcre-8.39.tar.gz #下載pcre源碼包
wget http://www.zlib.net/zlib-1.2.11.tar.gz #下載zlib包源碼
   
   
  
  
          /pre>



tar -zxvf 包名  #解壓各個包源碼
    
    
   
   
           

附一張目錄結構圖
目錄結構

找到nginx源碼包中 configure 所在的目錄,以下腳本就是基於configure來實現的,在本機上configure 命令就在auto 目錄下,當前目錄 /root/source/nginx 就在這個目錄下編寫腳本vi config.sh 加入以下內容

./auto/configure --prefix=/usr/local/nginx \
        --with-pcre=../pcre-8.39 \
        --with-openssl=../openssl-1.1.0 \
        --with-zlib=../zlib-1.2.11 \
        --with-http_v2_module \
        --with-http_flv_module \
        --with-http_mp4_module \
        --add-module=../nginx-rtmp-module/
    
    
   
   
           

保存后給文件賦予操作權限,再執行

chmod 777 config.sh   #賦予權限
./config.sh           #執行腳本
    
    
   
   
           

檢查配置沒有問題
配置檢查通過

yum -y install gcc #確保依賴的gcc安裝
yum -y install gcc-c++ #確保依賴的c++已經安裝
make #編譯
    
    
   
   
           

顯示如下則編譯成功
編譯成功

make install  #安裝
    
    
   
   
           

安裝成功
安裝成功

同樣需要 1.雲服務器控制台對相應的端口開放;2.並且Linux機器對默認端口80開放(如果想修改默認端口自行百度),由於本機80端口被Apache 服務器占用了,所以將nginx默認端口改為8084

iptables -I INPUT -p tcp -m state --state NEW --dport 8084 -j ACCEPT #放行8084端口的 NEW狀態請求(本機的RELATED,ESTABLISHED狀態是默認放行的)
service iptables save #保存規則
service iptables restart #重啟防火牆保證新的規則加載進來
    
    
   
   
           

防火牆規則鏈

測試nginx是否安裝成功 ip:port 如果出現以下界面說明安裝成功
nginx配置成功

配置rtmp

在nginx配置文件中配置rtmp服務,記住rtmp服務是和http服務是平級的,所以我們需要在和http配置平級的位置另起rtmp服務

vi /usr/local/nginx/conf/nginx.conf #修改配置文件
    
    
   
   
           

在配置文件末尾加入以下內容(括號嵌套切記不要弄混)

# rtmp config
rtmp  {
    server  {
        listen 1935;
        chunk_size 4096;
        application live  {
            live on;
            record off;
        }
        application live2  {
            live on;
            record off;
        }
        application vod  {
            play /var/flvs;
        }
        application vod_http  {
            play http://服務器的ip/vod;
        }
        application hls  {
            live on;
            hls on;
            hls_path /tmp/hls;
        }
    }
}
    
    
   
   
           
/usr/local/nginx/sbin/nginx -s reload  #修改配置文件重啟nginx服務
    
    
   
   
           

測試rtmp端口是否通

端口放行需要有三個條件,1.雲服務的安全組放行;2.防火牆iptables放行;3.服務本身放行

安全組

登錄雲服務器控制台進行設置
雲服務器放行的端口

防火牆

iptables -I INPUT -p tcp -m state --state NEW --dport 1935 -j ACCEPT #放行1935端口的 NEW狀態請求
service iptables save #保存規則
service iptables restart #重啟防火牆保證新的規則加載進來
    
    
   
   
           

新加入的規則

服務本身

由於nginx服務我們已經配置過1935端口,所以是放行狀態的,我們可以在windows本地使用telnet 命令測試端口是否通

telnet測試端口

如果出現一下界面說明端口已經通了
這里寫圖片描述


使OBS推流

OBS(Open Broadcaster Software) 是以互聯網流媒體直播內容為目的免費和開放源碼軟件。需要下載這個軟件,借助這個軟件進行推流(電腦沒有攝像頭的貌似安裝不了。。。)

就長這個樣子
這里寫圖片描述

打開后我們需要有一個場景,並且在這個場景下有一個流的來源(可以是窗口,如果選的是視頻則會自動識別攝像頭),接下來就是設置了

這里寫圖片描述

在配置中最需要關注的就是流的配置了,由於是自建的流媒體服務器所以我們照這樣配置

rtmp://你的服務器ip:端口(1935)/live #URL填寫流的地址
    
    
   
   
           

這里寫圖片描述

設置完成我們就可以 開始推流了

拉流測試地址

推薦一個拉流的測試地址,里面針對各種協議都能測試拉流測試,需要注意圖中幾個地方,由於我們使用的rtmp協議,我們選擇這一欄,底下填寫我們推流的地址和我們在上面obs的設置里面配置的流的名稱,start, ok搞定!!!!

這里寫圖片描述


總結

本文用nginx作為服務器,使用rtmp協議簡述了的搭建了一個流媒體服務器的過程,並且描述了一個簡單的測試流程。其中調試端口的可用性,安裝過程服務的依賴處理,修改配置需要重啟服務,是常見的問題,需要特別注意。

筆者也是第一次搭建,不足之處,歡迎留言,一起交流!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM