搭建流媒體服務(wù)的方式一般會采用nginx+rtmp和srs服務(wù)兩種,前者是nginx加上插件所用,而后者是專門為了為了流媒體而生,在這一節(jié)中我們將從頭搭建srs流媒體服務(wù)
為了此服務(wù)后期部署到生產(chǎn)環(huán)境中,筆者采用docker方式來搭建此服務(wù),docker目前屬于基礎(chǔ)性軟件了,在本文中就不再細述如何安裝,大家可以去www.docker.com
下載安裝包安裝即可;一般正式的生產(chǎn)環(huán)境中我們通常使用Linux系統(tǒng)作為服務(wù)器,所以我本文中同樣使用了Linux系統(tǒng),不過我選擇了我比較喜歡的Ubuntu系統(tǒng)來搭建,其他Linux系統(tǒng)搭建流程基本一致。
我們首先需要運行一個Ubuntu的容器,在運行容器之前,我們需要想好運行容器的一些參數(shù),比如說我們需要搭建rtmp服務(wù),rtmp默認端口是1935,這個時候我們就需要將此端口映射出去;再比如說安裝nginx后需要進行驗證Nginx是否安裝完成,需要開放一個http端口,那么同樣需要映射出去,但為了防止和宿主機的80端口產(chǎn)生沖突,這里我們使用8081端口替代80端口;最后服務(wù)搭建完成了,還需要播放視頻,因此需要將視頻文件拷貝到容器中,這時候需要掛載一個目錄將視頻文件放到容器中去,因此docker容器運行命令如下所示
docker run --name srs -v /Users/song/files:/root/files -d -i -p 1935:1935 ubuntu:18.04 && docker ps
命令很執(zhí)行完成之后,docker返回結(jié)果如下圖所示
在上圖中中可以看到已經(jīng)有一個容器運行了,接著我們需要進入容器安裝nginx和rtmp模塊,進入容器命令如下所示
docker exec -it srs bash
命令執(zhí)行完成之后,返回信息如下圖所示
在上圖中從光標位置的左側(cè)可以看到已經(jīng)顯示了root賬戶名稱,說明已經(jīng)進入容器成功;
docker的Ubuntu鏡像apt軟件源默認使用官方域名,這個域名在國內(nèi)訪問非常慢,為了后續(xù)安裝速度能夠更快,我們將apt的軟件源更換成阿里云源的地址,執(zhí)行命令如下所示
echo 'deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse' > /etc/apt/sources.list && cat /etc/apt/sources.list
命令執(zhí)行之后,返回的信息如下圖所示
從上圖中可以看到已經(jīng)執(zhí)行成功,已經(jīng)使用阿里云的軟件源替代了默認的軟件源;
接下來我們更新一下本地的軟件源信息,執(zhí)行命令如下所示
apt update
命令執(zhí)行之后,返回的信息如下圖所示
從上圖中可以看到已經(jīng)從阿里云中更新了軟件源信息,更新速度也非??欤酱宋覀円呀?jīng)完成運行環(huán)境的基礎(chǔ)準備。
在搭建SRS服務(wù)過程中,需要先解決依賴,然后安裝SRS服務(wù),安裝完成之后需要配置服務(wù)
因為我們采用源碼編譯,在編譯過程中會依賴一些其他軟件,所以我們需要提前將這些軟件編譯好,安裝依賴我們直接采用apt安裝,如下命令所示
apt install -y git gcc g++ unzip make python
命令執(zhí)行后,返回的信息如下圖所示
在上圖中我們可以看到上面的依賴已經(jīng)安裝完成,接著我們通過Git下載最新的srs源碼
srs官方把源碼托管在GitHub中,國內(nèi)訪問GitHub相對較慢,這里我通過碼云復制了一個出來,下載srs執(zhí)行命令如下所示
git clone https://gitee.com/songboy/srs.git && ls srs
命令執(zhí)行后,返回的信息如下圖所示
在上圖中我們可以看到源碼已經(jīng)克隆完成,并展示了srs項目的目錄結(jié)構(gòu),在項目中有一個trunk
的文件夾,源代碼都在這個里面,我們通過cd命令進去并查看目錄,執(zhí)行命令如下所示
cd srs/trunk/ && ls
命令執(zhí)行后,返回的信息如下圖所示
在上圖中我們可以看到configure
文件,這個文件是為了讓一個程序能夠在各種不同類型的機器上運行而設(shè)計的,在使用make編譯源代碼之前,configure會根據(jù)自己所依賴的庫而在目標機器上進行匹配,我們執(zhí)行如下命令便可以編譯
./configure && make
命令執(zhí)行完成后,返回的信息如下圖所示
在上圖中我們可以看到提示編譯已經(jīng)完成,并給出了一個啟動命令的提示
在啟動命令中有一個配置文件,我們可以通過cat命令查看一下配置文件里面的具體內(nèi)容,執(zhí)行命令如下所示
cat conf/srs.conf
命令執(zhí)行后,返回的信息如下圖所示
在上圖中我們可以看到監(jiān)聽的端口,以及日志文件存放位置等信息,這里我們就是要默認值即可,執(zhí)行啟動命令如下所示
./objs/srs -c conf/srs.conf
命令執(zhí)行后,返回的信息如下圖所示
在上圖中我們可以看到日志文件的輸出信息,此時程序以及在后臺啟動了。
我們可以使用OBS進行一個推流測試;docker運行的容器就在我本地,因此這里我使用的推流地址如下
rtmp://127.0.0.1/live/tangqingsong
啟動OBS,然后打開設(shè)置,找到推流項;服務(wù)選擇自定義,然后將上面的地址填寫進去,如下圖所示
填寫完推流地址之后,我們點擊確定按鈕,然后回到OBS的主界面,點擊開始推流按鈕,就會開始向SRS推流,如下圖所示
在上圖中我們可以看到已經(jīng)在推流當中了,下方顯示占用CPU資源很高
接著我們再使用VLC播放器進行拉流測試,拉流地址和推流地址是一樣的,拉流效果如下所示
在上圖中我們可以看到VLC已經(jīng)播放成功
聯(lián)系客服