天天看點

docker中使用源碼方式搭建SRS流媒體服務

一、背景

搭建流媒體服務的方式一般會采用nginx+rtmp和srs服務兩種,前者是nginx加上插件所用,而後者是專門為了為了流媒體而生,在這一節中我們将從頭搭建srs流媒體服務

二. 運作環境

為了此服務後期部署到生産環境中,筆者采用docker方式來搭建此服務,docker目前屬于基礎性軟體了,在本文中就不再細述如何安裝,大家可以去

www.docker.com

下載下傳安裝包安裝即可;一般正式的生産環境中我們通常使用Linux系統作為伺服器,是以我本文中同樣使用了Linux系統,不過我選擇了我比較喜歡的Ubuntu系統來搭建,其他Linux系統搭建流程基本一緻。

2.1 docker容器

我們首先需要運作一個Ubuntu的容器,在運作容器之前,我們需要想好運作容器的一些參數,比如說我們需要搭建rtmp服務,rtmp預設端口是1935,這個時候我們就需要将此端口映射出去;再比如說安裝nginx後需要進行驗證Nginx是否安裝完成,需要開放一個http端口,那麼同樣需要映射出去,但為了防止和主控端的80端口産生沖突,這裡我們使用8081端口替代80端口;最後服務搭建完成了,還需要播放視訊,是以需要将視訊檔案拷貝到容器中,這時候需要挂載一個目錄将視訊檔案放到容器中去,是以docker容器運作指令如下所示

docker run  --name srs -v /Users/song/files:/root/files -d -i  -p 1935:1935  ubuntu:18.04 && docker ps           

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

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

docker exec -it srs bash           

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

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

2.2 國内加速源

docker的Ubuntu鏡像apt軟體源預設使用官方域名,這個域名在國内通路非常慢,為了後續安裝速度能夠更快,我們将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           

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

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

2.3 更新軟體源清單

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

apt update           

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

三、服務搭建

在搭建SRS服務過程中,需要先解決依賴,然後安裝SRS服務,安裝完成之後需要配置服務

3.1 安裝依賴

因為我們采用源碼編譯,在編譯過程中會依賴一些其他軟體,是以我們需要提前将這些軟體編譯好,安裝依賴我們直接采用apt安裝,如下指令所示

apt install -y git gcc g++ unzip make  python           

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

在上圖中我們可以看到上面的依賴已經安裝完成,接着我們通過Git下載下傳最新的srs源碼

3.2 安裝SRS

srs官方把源碼托管在GitHub中,國内通路GitHub相對較慢,這裡我通過碼雲複制了一個出來,下載下傳srs執行指令如下所示

git clone https://gitee.com/songboy/srs.git && ls srs           

在上圖中我們可以看到源碼已經克隆完成,并展示了srs項目的目錄結構,在項目中有一個

trunk

的檔案夾,源代碼都在這個裡面,我們通過cd指令進去并檢視目錄,執行指令如下所示

cd srs/trunk/ && ls           

在上圖中我們可以看到

configure

檔案,這個檔案是為了讓一個程式能夠在各種不同類型的機器上運作而設計的,在使用make編譯源代碼之前,configure會根據自己所依賴的庫而在目标機器上進行比對,我們執行如下指令便可以編譯

./configure && make           

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

在上圖中我們可以看到提示編譯已經完成,并給出了一個啟動指令的提示

3.3 啟動服務

在啟動指令中有一個配置檔案,我們可以通過cat指令檢視一下配置檔案裡面的具體内容,執行指令如下所示

cat conf/srs.conf           

在上圖中我們可以看到監聽的端口,以及日志檔案存放位置等資訊,這裡我們就是要預設值即可,執行啟動指令如下所示

./objs/srs -c conf/srs.conf           

在上圖中我們可以看到日志檔案的輸出資訊,此時程式以及在背景啟動了。

四、服務驗證

我們可以使用OBS進行一個推流測試;docker運作的容器就在我本地,是以這裡我使用的推流位址如下

rtmp://127.0.0.1/live/tangqingsong           

4.1 推流測試

啟動OBS,然後打開設定,找到推流項;服務選擇自定義,然後将上面的位址填寫進去,如下圖所示

填寫完推流位址之後,我們點選确定按鈕,然後回到OBS的主界面,點選開始推流按鈕,就會開始向SRS推流,如下圖所示

在上圖中我們可以看到已經在推流當中了,下方顯示占用CPU資源很高

4.2 拉流測試

接着我們再使用VLC播放器進行拉流測試,拉流位址和推流位址是一樣的,拉流效果如下所示

在上圖中我們可以看到VLC已經播放成功

作者:湯青松

日期:2019-12-13