Ubuntu 安裝nginx 來搭建推流伺服器

LinXunFeng發表於2017-12-14

安裝nginx

安裝兩個依賴庫

sudo apt-get install autoconf automake
sudo apt-get install libpcre3 libpcre3-dev
複製程式碼

安裝zlib庫

sudo apt-get install openssl
sudo apt-get install libssl-dev
複製程式碼

如果安裝命令回車之後出現如下資訊,請參考【Ubuntu “無法獲得鎖”解決方案】解決,但是我親測對我沒用,直接重啟搞定

E: 無法獲得鎖 /var/lib/dpkg/lock - open (11: 資源暫時不可用)
E: 無法鎖定管理目錄(/var/lib/dpkg/),是否有其他程式正佔用它?
複製程式碼

進入家目錄,新建一個資料夾,這裡以lxf為例

cd ~
mkdir lxf
複製程式碼

下載所需原始碼

// 下載nginx-rtmp原始碼
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
// 修改壓縮包的名字
mv master.zip module.zip
複製程式碼
// 下載nginx
wget https://github.com/nginx/nginx/archive/master.zip
複製程式碼
// 下載nginx的依賴pcre原始碼
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
複製程式碼

下載完成之後使用unzip命令進行解壓

unzip master.zip 
unzip module.zip
tar -zxvf pcre-8.39.tar.gz
複製程式碼

配置編譯檔案,準備編譯安裝

// 先進入nginx-master目錄
cd nginx-master/
複製程式碼

在nginx-master目錄下有一個auto資料夾,裡面有一個名為configure的配置檔案,我們先來通過它進行一些配置

// prefix:指定安裝目錄
// add-module:指定模組資料夾
auto/configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.39 --with-http_ssl_module --with-http_v2_module --with-http_flv_module --with-http_mp4_module --add-module=../nginx-rtmp-module-master/
複製程式碼

配置好之後會多出一個Makefile檔案(一種配置檔案,定義了一系列的規則來指定編譯操作)與objs資料夾

Ubuntu 安裝nginx 來搭建推流伺服器

// 編譯
make
// 安裝
sudo make install
複製程式碼

當你make後,看到則代表編譯成功

make成功
再執行【sudo make install】,看到這個則代表安裝完成
安裝完成

現在我們去測試一下

 cd /usr/local/nginx/sbin/
sudo ./nginx -t
複製程式碼

看到successful說明配置檔案正確!,如果是failed的話看看你是不是沒加sudo

配置檔案正確

啟動nginx伺服器

sudo ./nginx
複製程式碼

預設埠是80,所以直接到瀏覽器中直接敲入本地地址 127.0.0.1,顯示【Welcome to nginx!】就代表nginx已經成功安裝

Ubuntu 安裝nginx 來搭建推流伺服器

配置nginx

建立推流存放資料夾

// 為裡以 /usr/local/var/www/hls 為例
cd /usr/local
sudo mkdir -p var/www/hls
複製程式碼

進入nginx的conf目錄,使用vim編輯nginx.conf檔案

cd /usr/local/nginx/conf
sudo vim nginx.conf
複製程式碼

配置Nginx,支援http協議拉流

location /hls {
  types {
    application/vnd.apple.mpegurl    m3u8;
    video/mp2t ts;
  }
  root /usr/local/var/www;
   add_header Cache-Control    no-cache;
}
複製程式碼

配置Nginx,支援rtmp協議推流

rtmp {
    server {
        listen 1935;
        application rtmplive {
            live on;
            max_connections 1024;
        }
        application hls{
            live on;
            hls on;
            hls_path /usr/local/var/www/hls;
            hls_fragment 1s;
        }
    }
}
複製程式碼

hls

rtmp

重啟nginx伺服器

cd /usr/local/nginx/sbin/
sudo ./nginx -s reload
複製程式碼

如果執行【sudo ./nginx -s reload】出現下面這個問題

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
複製程式碼

就使用nginx -c的引數指定nginx.conf檔案的位置,接著再reload一下就好了

sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
複製程式碼

我Ubuntu地址為192.168.123.191

推流至RTMP到伺服器 rtmp://192.168.123.191:1935/rtmplive/lxf

ffmpeg -re -i 異形.契約.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://192.168.123.191:1935/rtmplive/lxf
複製程式碼

推流至HLS到伺服器 http://192.168.123.191/hls/lxf.m3u8

ffmpeg -re -i 異形.契約.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://192.168.123.191:1935/hls/lxf
複製程式碼

如果出現如下錯誤說明你的電腦沒安裝ffmpeg

-bash: ffmpeg: command not found
複製程式碼

使用Homebrew來安裝FFmpeg

// 安裝Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
// 安裝FFmpeg
brew install ffmpeg
複製程式碼

開始推流,終端上就開始不斷的重新整理推流資訊

開始推流

我們可以用電腦上的VLC這個軟體來測試是否推流成功

VLC

開啟流

OK,rmtp開啟正常,hls就不演示了,一樣的

rmtp開啟成功

微信公眾號

相關文章