Nginx+OBS+rtmp+VLC實現視頻直播網站

介紹

本文使用阿里雲服務器搭建,基於rtmp(Real Time Message Protocol)協議的,以OBS爲推流載體,在VLC播放器上實現直播功能。初步實踐,如有遺漏或錯誤請留言。

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

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

注意事項

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

安裝nginx

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

步驟如下:

創建源碼目錄

cd /root #進入到此路徑下(千萬不能在其他路徑,權限問題會有影響)
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

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包源碼

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

附一張目錄結構圖

在這裏插入圖片描述
找到nginx源碼包中 configure 所在的目錄,以下腳本就是基於configure來實現的,本機上configure 命令就在nginx/auto 目錄下,在/root/source/nginx這個目錄下編寫腳本。
vim config.sh #腳本內容如下:

#!/bin/sh
./auto/configure --prefix=/usr/local/source/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/

命令模式下也就是按esc後使用shift+zz保存後,給文件賦予操作權限,再執行。

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

檢查配置沒有問題

在這裏插入圖片描述

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

顯示如下則編譯成功

在這裏插入圖片描述

make install  #安裝

在這裏插入圖片描述
看到以上截圖就是編譯成功

改變防火牆模式

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

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

然後啓動nginx服務,如下

在這裏插入圖片描述

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

在這裏插入圖片描述

配置RTMP

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

vim /usr/local/source/nginx/conf/nginx.conf #修改配置文件
注意:此處的nginx是bash腳本里面的nginx路徑

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

# 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/source/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 命令測試端口是否通

在這裏插入圖片描述

使用OBS推流

博主下載資源處去下載OBS文件

在這裏插入圖片描述
在這裏插入圖片描述
設置完成我們就可以 開始推流了
在這裏插入圖片描述

拉流測試

在這裏插入圖片描述
下載VLC播放器
在這裏插入圖片描述
在這裏插入圖片描述

桌面捕獲成功

在這裏插入圖片描述

黑屏問題:

如果OBS出現添加顯示器捕獲後,黑屏狀態。解決辦法如下:
1、桌面圖標右鍵屬性
在這裏插入圖片描述

若還是出現黑屏再使用如下方法:

在這裏插入圖片描述

總結:

本文用Nginx作爲服務器,使用rtmp協議簡述了阿里雲上搭建流媒體服務器的過程,並且描述了vlc拉流測試的流程。其中調試端口的可用性,安裝過程服務的依賴處理,修改配置後需要重啓服務,是常見的問題,需要特別注意。

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