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

一、背景

搭建流媒體服務(wù)的方式一般會(huì)采用nginx+rtmp和srs服務(wù)兩種,前者是nginx加上插件所用,而后者是專門為了為了流媒體而生,在這一節(jié)中我們將從頭搭建srs流媒體服務(wù)

二. 運(yùn)行環(huán)境

為了此服務(wù)后期部署到生產(chǎn)環(huán)境中,筆者采用docker方式來搭建此服務(wù),docker目前屬于基礎(chǔ)性軟件了,在本文中就不再細(xì)述如何安裝,大家可以去www.docker.com下載安裝包安裝即可;一般正式的生產(chǎn)環(huán)境中我們通常使用Linux系統(tǒng)作為服務(wù)器,所以我本文中同樣使用了Linux系統(tǒng),不過我選擇了我比較喜歡的Ubuntu系統(tǒng)來搭建,其他Linux系統(tǒng)搭建流程基本一致。

2.1 docker容器

我們首先需要運(yùn)行一個(gè)Ubuntu的容器,在運(yùn)行容器之前,我們需要想好運(yùn)行容器的一些參數(shù),比如說我們需要搭建rtmp服務(wù),rtmp默認(rèn)端口是1935,這個(gè)時(shí)候我們就需要將此端口映射出去;再比如說安裝nginx后需要進(jìn)行驗(yàn)證Nginx是否安裝完成,需要開放一個(gè)http端口,那么同樣需要映射出去,但為了防止和宿主機(jī)的80端口產(chǎn)生沖突,這里我們使用8081端口替代80端口;最后服務(wù)搭建完成了,還需要播放視頻,因此需要將視頻文件拷貝到容器中,這時(shí)候需要掛載一個(gè)目錄將視頻文件放到容器中去,因此docker容器運(yùn)行命令如下所示

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

命令很執(zhí)行完成之后,docker返回結(jié)果如下圖所示


image

在上圖中中可以看到已經(jīng)有一個(gè)容器運(yùn)行了,接著我們需要進(jìn)入容器安裝nginx和rtmp模塊,進(jìn)入容器命令如下所示

docker exec -it srs bash

命令執(zhí)行完成之后,返回信息如下圖所示


image

在上圖中從光標(biāo)位置的左側(cè)可以看到已經(jīng)顯示了root賬戶名稱,說明已經(jīng)進(jìn)入容器成功;

2.2 國(guó)內(nèi)加速源

docker的Ubuntu鏡像apt軟件源默認(rèn)使用官方域名,這個(gè)域名在國(guó)內(nèi)訪問非常慢,為了后續(xù)安裝速度能夠更快,我們將apt的軟件源更換成阿里云源的地址,執(zhí)行命令如下所示

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

命令執(zhí)行之后,返回的信息如下圖所示


image

從上圖中可以看到已經(jīng)執(zhí)行成功,已經(jīng)使用阿里云的軟件源替代了默認(rèn)的軟件源;

2.3 更新軟件源列表

接下來我們更新一下本地的軟件源信息,執(zhí)行命令如下所示

apt update

命令執(zhí)行之后,返回的信息如下圖所示


image

從上圖中可以看到已經(jīng)從阿里云中更新了軟件源信息,更新速度也非???,到此我們已經(jīng)完成運(yùn)行環(huán)境的基礎(chǔ)準(zhǔn)備。

三、服務(wù)搭建

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

3.1 安裝依賴

因?yàn)槲覀儾捎迷创a編譯,在編譯過程中會(huì)依賴一些其他軟件,所以我們需要提前將這些軟件編譯好,安裝依賴我們直接采用apt安裝,如下命令所示

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

命令執(zhí)行后,返回的信息如下圖所示

image

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

3.2 安裝SRS

srs官方把源碼托管在GitHub中,國(guó)內(nèi)訪問GitHub相對(duì)較慢,這里我通過碼云復(fù)制了一個(gè)出來,下載srs執(zhí)行命令如下所示

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

命令執(zhí)行后,返回的信息如下圖所示


image

在上圖中我們可以看到源碼已經(jīng)克隆完成,并展示了srs項(xiàng)目的目錄結(jié)構(gòu),在項(xiàng)目中有一個(gè)trunk的文件夾,源代碼都在這個(gè)里面,我們通過cd命令進(jìn)去并查看目錄,執(zhí)行命令如下所示

cd srs/trunk/ && ls

命令執(zhí)行后,返回的信息如下圖所示

image

在上圖中我們可以看到configure文件,這個(gè)文件是為了讓一個(gè)程序能夠在各種不同類型的機(jī)器上運(yùn)行而設(shè)計(jì)的,在使用make編譯源代碼之前,configure會(huì)根據(jù)自己所依賴的庫(kù)而在目標(biāo)機(jī)器上進(jìn)行匹配,我們執(zhí)行如下命令便可以編譯

./configure && make

命令執(zhí)行完成后,返回的信息如下圖所示

image

在上圖中我們可以看到提示編譯已經(jīng)完成,并給出了一個(gè)啟動(dòng)命令的提示

3.3 啟動(dòng)服務(wù)

在啟動(dòng)命令中有一個(gè)配置文件,我們可以通過cat命令查看一下配置文件里面的具體內(nèi)容,執(zhí)行命令如下所示

cat conf/srs.conf

命令執(zhí)行后,返回的信息如下圖所示

image

在上圖中我們可以看到監(jiān)聽的端口,以及日志文件存放位置等信息,這里我們就是要默認(rèn)值即可,執(zhí)行啟動(dòng)命令如下所示

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

命令執(zhí)行后,返回的信息如下圖所示

image

在上圖中我們可以看到日志文件的輸出信息,此時(shí)程序以及在后臺(tái)啟動(dòng)了。

四、服務(wù)驗(yàn)證

我們可以使用OBS進(jìn)行一個(gè)推流測(cè)試;docker運(yùn)行的容器就在我本地,因此這里我使用的推流地址如下

rtmp://127.0.0.1/live/tangqingsong

4.1 推流測(cè)試

啟動(dòng)OBS,然后打開設(shè)置,找到推流項(xiàng);服務(wù)選擇自定義,然后將上面的地址填寫進(jìn)去,如下圖所示

image

填寫完推流地址之后,我們點(diǎn)擊確定按鈕,然后回到OBS的主界面,點(diǎn)擊開始推流按鈕,就會(huì)開始向SRS推流,如下圖所示

image

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

4.2 拉流測(cè)試

接著我們?cè)偈褂肰LC播放器進(jìn)行拉流測(cè)試,拉流地址和推流地址是一樣的,拉流效果如下所示


image

在上圖中我們可以看到VLC已經(jīng)播放成功


作者:湯青松

日期:2019-12-13

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、背景 本篇文章是繼上一篇文章《Ubuntu中使用Nginx+rtmp模塊搭建流媒體視頻點(diǎn)播服務(wù)》文章而寫,在上...
    湯青松daxia閱讀 434評(píng)論 0 0
  • 在爬蟲開發(fā)過程中,你肯定遇到過需要把爬蟲部署在多個(gè)服務(wù)器上面的情況。此時(shí)你是怎么操作的呢?逐一SSH登錄每個(gè)服務(wù)器...
    Java大生閱讀 807評(píng)論 0 6
  • 兩日,“大黑?!崩畛肯蛭覀兎稜斍蠡榈南⒄紦?jù)了微博的熱搜,很多人喜歡范爺都是因?yàn)樗拿烂?,畢竟她真的是美翻了天,?..
    雨桐雪湘閱讀 320評(píng)論 0 0
  • 集體性自我主要體現(xiàn)關(guān)系無界限,服從權(quán)威,權(quán)利者,一般大家庭多為奶奶或者姥姥。在學(xué)校,我們期待老師的注意,在社會(huì),我...
    伊涵crystal閱讀 110評(píng)論 0 0
  • 今天是陽(yáng)光明媚的日子,太陽(yáng)暴曬。南京作為十大火爐之一,今日已經(jīng)29攝氏度了。今天我家親愛的去浦口石佛寺模擬去了,結(jié)...
    青春獻(xiàn)給老酒桌閱讀 161評(píng)論 0 0

友情鏈接更多精彩內(nèi)容