天天看點

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

鏡像下載下傳、域名解析、時間同步請點選

阿裡巴巴開源鏡像站

作者:湯青松

一、運作環境

為了此服務後期部署到生産環境中,我們将采用docker方式來搭建此服務,并且一般在生産環境中我們通常使用Linux系統作為伺服器,是以接下來我們将以Ubuntu這個系統為例進行講解,其他系統搭建流程基本類似。

1. docker 容器

rtmp服務預設端口是1935,另外安裝nginx後需要進行驗證,需要開放一個http端口,為了防止和主控端沖突,這裡我們使用8081端口;我們需要将視訊檔案拷貝到容器中,是以還需要挂載一個目錄,docker容器運作指令如下所示:

docker run --name video -v /Users/tangqingsong/files:/root/videos -d -i -p 8081:8081  -p 1935:1935 ubuntu:18.04 && docker ps           

指令很執行完成之後,docker傳回結果如下圖所示:

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

在上圖中中可以看到已經有一個容器運作了,接着我們需要進入容器安裝nginx和rtmp子產品,進入容器指令如下所示:

docker exec -it video bash           

指令執行完成之後,傳回資訊如下圖:

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

在上圖中從光标位置的左側可以看到已經顯示了root賬戶名稱,說明已經進入容器成功。

2. 國内加速源

我們将apt的軟體源更換成阿裡雲源的位址,執行指令如下:

echo 'deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
' > /etc/apt/sources.list  && cat /etc/apt/sources.list           

指令執行之後,傳回的資訊如下圖所示:

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

從上圖中可以看到已經執行成功,已經使用阿裡雲的軟體源替代了預設的軟體源。

3. 更新軟體源清單

接下來我們更新一下本地的軟體源資訊,執行指令如下所示

apt update           

指令執行之後,傳回的資訊如下圖所示

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

從上圖中可以看到已經從阿裡雲中更新了軟體源資訊,更新速度也非常快,到此我們已經完成運作環境的基礎準備。

二、Nginx 安裝

1. 安裝 Nginx 依賴

在我們更新apt軟體源完成之後,就可以安裝Nginx等一些軟體的依賴環境,執行的指令如下所示:

apt-get install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev gcc  wget unzip vim make curl           
Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

從上圖中可以看到依賴已經安裝完成,接下來我們開始安裝nginx,nginx不能使用apt安裝,需要源碼編譯安裝才可以,因為需要我們編譯一個子產品進去。

2. 下載下傳源碼

我們首先将需要的子產品下載下傳下來,這裡我不準備使用

nginx-rtmp-module

,而是使用

nginx-http-flv-module

來替代,因為後者是基于前者開發的,前者擁有的功能後者都有,後者是國内的開發開發,有中文文檔,是以就采用它了,首先将它下載下傳下來并解壓,執行的指令如下所示:

wget https://github.com/winshining/nginx-http-flv-module/archive/master.zip ; unzip master.zip           

指令執行之後,傳回的資訊如下圖所示:

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

從上圖中可以看出已經下載下傳并解壓完成,接着我們還需要下載下傳nginx本身的源碼,下載下傳Nginx源碼并解壓的指令如下所示:

wget http://nginx.org/download/nginx-1.17.6.tar.gz  && tar -zxvf nginx-1.17.6.tar.gz           
Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

下載下傳并解壓完成,到此我們兩個所需要的源碼都準備完成

3. 編譯安裝

接着我們進入編譯安裝環節,首先進入剛才解壓的nginx目錄當中,執行的指令如下所示:

cd  nginx-1.17.6 && ls           
Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

從上圖中可以看到解壓出來的目錄結構,我們執行

./configure

便可以配置編譯參數,這個地方我們需要将剛才下載下傳的插件

nginx-http-flv-module

加入進來,執行的指令如下所示:

./configure --add-module=../nginx-http-flv-module-master           
Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

在上圖中可以看到準備編譯已經完成,但在編譯的過程當中有可能會出現一些意外因素,nginx預設編譯非常嚴格,隻要遇到一些意外就會中斷編譯,是以我們将一些非緻命的意外設定為警告模式,執行指令如下所示:

vim objs/Makefile           

在目前檔案夾下有一個

objs/Makefile

檔案,我們将裡面的

-Werror

删除,用vim打開檔案後如下所示

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

删除之後,儲存并退出,接着就可以進行編譯Nginx了,編譯的過程稍微有點長,執行的指令如下所示

make           
Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

在上圖中可以看到一些Nginx的一些日志存放路徑資訊,當我們執行安裝指令後,就會往這些檔案裡寫入相應資訊,執行安裝指令如下所示

make install           

安裝指令執行之後,傳回的資訊如下圖所示

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

在上圖中可以可以看到安裝過程大緻執行了哪些指令,安裝完成後接下來需要進行一些簡單的配置就可以使用了。

三、配置 rtmp 服務

1. 添加 rtmp 服務

我們直接使用

vim

指令去編輯Nginx的配置檔案,執行指令如下所示

vim /usr/local/nginx/conf/nginx.conf           

vim指令執行之後,打開的編輯視窗如下所示

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

我們将以下配置資訊複制并粘貼到配置檔案資訊裡面,放在http配置上面

rtmp {                #RTMP服務
   server {
       listen 1935;  #//服務端口
        chunk_size 4096;   #//資料傳輸塊的大小
        application vod {
                play /opt/video/vod; #//視訊檔案存放位置。
        }
   }
}           

2. 驗證配置

粘貼完成并儲存之後,我們在終端執行

nginx -t

指令,來測試一下配置檔案是否有異常,執行指令如下所示

/usr/local/nginx/sbin/nginx -t           
Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

在上圖中可以看出Nginx提示我們配置檔案沒有異常,說明我們配置沒有文法錯誤,我們啟動一下Nginx并使用curl指令來測試啟動是否成功,執行指令如下所示

/usr/local/nginx/sbin/nginx && curl http://127.0.0.1           
Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

從上圖中Nginx傳回的資訊可以看出我們Nginx服務已經啟動成功。

四、視訊播放

1. 添加視訊檔案

接着我們建立一個存放視訊的檔案夾,并将權限設定設定為777,防止因為權限問題導緻無法播放,執行指令如下所示

mkdir -p /opt/video/vod  && chmod -R 777 /opt/video/vod           
Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

在上圖中可以看出,建立檔案夾和設定權限指令已經執行完成,接着我們需要将我們準備好的視訊檔案複制到我們之前配置指定的目錄下,執行指令如下所示

cp /root/videos/out.mp4 /opt/video/vod &&  ls /opt/video/vod           
Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

在上圖中可以看出,已經将視訊檔案

out.mp4

檔案複制到此目錄中,接着我們就可以測試播放了;不過在測試播放之前我們需要安裝一個視訊播放器,因為浏覽器是不支援

rtmp

協定。

2. 安裝 VLC 播放器

一般用于調試流媒體我們習慣使用vlc播放器,我們去官網下載下傳一下他,官網位址如下

https://www.videolan.org/           

使用浏覽器打開官網後,我們在首頁能看到下載下傳按鈕,同時也可以看出支援各種平台,預設下載下傳目前系統的版本,如下圖所示

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

下載下傳并安裝vlc播放器完成後,我們需要在菜單中找到

File

->

Open Network

,如下圖所示

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

點選

Open Network

選項後,會打開一個新的視窗,在這個視窗中我們可以輸入我們的播放位址,我剛才複制過去的視訊播放位址對應如下所示

rtmp://localhost/vod/out.mp4           
Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

在上圖中可以看到視窗中有一個輸入框,将播放位址複制進去之後,點選右下方的

open

按鈕,就可以開始播放了,點選後成功播放效果下圖所示

Ubuntu 中使用 Nginx+rtmp 子產品搭建流媒體視訊點播服務

到此,通過Nginx+rtmp子產品搭建點播服務已經成功了。

提供全面,高效和穩定的系統鏡像、應用軟體下載下傳、域名解析和時間同步服務。”