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

1、背景

搭建流媒體服務的方式通常會採用nginx+rtmp和srs服務兩種,前者是nginx加上插件所用,然後者是專門爲了爲了流媒體而生,在這一節中咱們將從頭搭建srs流媒體服務python

二. 運行環境

爲了此服務後期部署到生產環境中,筆者採用docker方式來搭建此服務,docker目前屬於基礎性軟件了,在本文中就再也不細述如何安裝,你們能夠去www.docker.com下載安裝包安裝便可;通常正式的生產環境中咱們一般使用Linux系統做爲服務器,因此我本文中一樣使用了Linux系統,不過我選擇了我比較喜歡的Ubuntu系統來搭建,其餘Linux系統搭建流程基本一致。nginx

2.1 docker容器

咱們首先須要運行一個Ubuntu的容器,在運行容器以前,咱們須要想好運行容器的一些參數,好比說咱們須要搭建rtmp服務,rtmp默認端口是1935,這個時候咱們就須要將此端口映射出去;再好比說安裝nginx後須要進行驗證Nginx是否安裝完成,須要開放一個http端口,那麼一樣須要映射出去,但爲了防止和宿主機的80端口產生衝突,這裏咱們使用8081端口替代80端口;最後服務搭建完成了,還須要播放視頻,所以須要將視頻文件拷貝到容器中,這時候須要掛載一個目錄將視頻文件放到容器中去,所以docker容器運行命令以下所示git

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

命令很執行完成以後,docker返回結果以下圖所示 image 在上圖中中能夠看到已經有一個容器運行了,接着咱們須要進入容器安裝nginx和rtmp模塊,進入容器命令以下所示docker

docker exec -it srs bash

命令執行完成以後,返回信息以下圖所示 image 在上圖中從光標位置的左側能夠看到已經顯示了root帳戶名稱,說明已經進入容器成功;ubuntu

2.2 國內加速源

docker的Ubuntu鏡像apt軟件源默認使用官方域名,這個域名在國內訪問很是慢,爲了後續安裝速度可以更快,咱們將apt的軟件源更換成阿里雲源的地址,執行命令以下所示bash

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

命令執行以後,返回的信息以下圖所示 image 從上圖中能夠看到已經執行成功,已經使用阿里雲的軟件源替代了默認的軟件源;服務器

2.3 更新軟件源列表

接下來咱們更新一下本地的軟件源信息,執行命令以下所示ionic

apt update

命令執行以後,返回的信息以下圖所示 image測試

從上圖中能夠看到已經從阿里雲中更新了軟件源信息,更新速度也很是快,到此咱們已經完成運行環境的基礎準備。阿里雲

3、服務搭建

在搭建SRS服務過程當中,須要先解決依賴,而後安裝SRS服務,安裝完成以後須要配置服務

3.1 安裝依賴

由於咱們採用源碼編譯,在編譯過程當中會依賴一些其餘軟件,因此咱們須要提早將這些軟件編譯好,安裝依賴咱們直接採用apt安裝,以下命令所示

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

命令執行後,返回的信息以下圖所示

image

在上圖中咱們能夠看到上面的依賴已經安裝完成,接着咱們經過Git下載最新的srs源碼

3.2 安裝SRS

srs官方把源碼託管在GitHub中,國內訪問GitHub相對較慢,這裏我經過碼雲複製了一個出來,下載srs執行命令以下所示

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

命令執行後,返回的信息以下圖所示 image

在上圖中咱們能夠看到源碼已經克隆完成,並展現了srs項目的目錄結構,在項目中有一個trunk的文件夾,源代碼都在這個裏面,咱們經過cd命令進去並查看目錄,執行命令以下所示

cd srs/trunk/ && ls

命令執行後,返回的信息以下圖所示

image

在上圖中咱們能夠看到configure文件,這個文件是爲了讓一個程序可以在各類不一樣類型的機器上運行而設計的,在使用make編譯源代碼以前,configure會根據本身所依賴的庫而在目標機器上進行匹配,咱們執行以下命令即可以編譯

./configure && make

命令執行完成後,返回的信息以下圖所示

image

在上圖中咱們能夠看到提示編譯已經完成,並給出了一個啓動命令的提示

3.3 啓動服務

在啓動命令中有一個配置文件,咱們能夠經過cat命令查看一下配置文件裏面的具體內容,執行命令以下所示

cat conf/srs.conf

命令執行後,返回的信息以下圖所示

image

在上圖中咱們能夠看到監聽的端口,以及日誌文件存放位置等信息,這裏咱們就是要默認值便可,執行啓動命令以下所示

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

命令執行後,返回的信息以下圖所示

image

在上圖中咱們能夠看到日誌文件的輸出信息,此時程序以及在後臺啓動了。

4、服務驗證

咱們可使用OBS進行一個推流測試;docker運行的容器就在我本地,所以這裏我使用的推流地址以下

rtmp://127.0.0.1/live/tangqingsong

4.1 推流測試

啓動OBS,而後打開設置,找到推流項;服務選擇自定義,而後將上面的地址填寫進去,以下圖所示

image

填寫完推流地址以後,咱們點擊肯定按鈕,而後回到OBS的主界面,點擊開始推流按鈕,就會開始向SRS推流,以下圖所示

image

在上圖中咱們能夠看到已經在推流當中了,下方顯示佔用CPU資源很高

4.2 拉流測試

接着咱們再使用VLC播放器進行拉流測試,拉流地址和推流地址是同樣的,拉流效果以下所示 image

在上圖中咱們能夠看到VLC已經播放成功


做者:湯青松

日期:2019-12-13

相關文章
相關標籤/搜索