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

一劲弦、背景

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

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

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

2.1 docker容器

我們首先需要運(yùn)行一個(gè)Ubuntu的容器渐裸,在運(yùn)行容器之前巫湘,我們需要想好運(yùn)行容器的一些參數(shù),比如說(shuō)我們需要搭建rtmp服務(wù)昏鹃,rtmp默認(rèn)端口是1935尚氛,這個(gè)時(shí)候我們就需要將此端口映射出去;再比如說(shuō)安裝nginx后需要進(jìn)行驗(yàn)證Nginx是否安裝完成洞渤,需要開(kāi)放一個(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賬戶(hù)名稱(chēng)湿酸,說(shuō)明已經(jīng)進(jìn)入容器成功婿屹;

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

docker的Ubuntu鏡像apt軟件源默認(rèn)使用官方域名,這個(gè)域名在國(guó)內(nèi)訪(fǎng)問(wèn)非常慢推溃,為了后續(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 更新軟件源列表

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

apt update

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


image

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

三寒砖、服務(wù)搭建

在搭建SRS服務(wù)過(guò)程中,需要先解決依賴(lài)嫉拐,然后安裝SRS服務(wù)哩都,安裝完成之后需要配置服務(wù)

3.1 安裝依賴(lài)

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

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

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

image

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

3.2 安裝SRS

srs官方把源碼托管在GitHub中,國(guó)內(nèi)訪(fǎng)問(wèn)GitHub相對(duì)較慢几晤,這里我通過(guò)碼云復(fù)制了一個(gè)出來(lái)约炎,下載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è)里面,我們通過(guò)cd命令進(jìn)去并查看目錄狸捕,執(zhí)行命令如下所示

cd srs/trunk/ && ls

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

image

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

./configure && make

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

image

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

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

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

cat conf/srs.conf

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

image

在上圖中我們可以看到監(jiān)聽(tīng)的端口,以及日志文件存放位置等信息炮姨,這里我們就是要默認(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,然后打開(kāi)設(shè)置洪乍,找到推流項(xiàng)眯杏;服務(wù)選擇自定義,然后將上面的地址填寫(xiě)進(jìn)去壳澳,如下圖所示

image

填寫(xiě)完推流地址之后岂贩,我們點(diǎn)擊確定按鈕,然后回到OBS的主界面巷波,點(diǎn)擊開(kāi)始推流按鈕萎津,就會(huì)開(kāi)始向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)系作者
  • 序言:七十年代末髓考,一起剝皮案震驚了整個(gè)濱河市部念,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖儡炼,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妓湘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡乌询,警方通過(guò)查閱死者的電腦和手機(jī)榜贴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)妹田,“玉大人唬党,你說(shuō)我怎么就攤上這事」碛叮” “怎么了驶拱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)晶衷。 經(jīng)常有香客問(wèn)我蓝纲,道長(zhǎng),這世上最難降的妖魔是什么晌纫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任税迷,我火速辦了婚禮,結(jié)果婚禮上锹漱,老公的妹妹穿的比我還像新娘箭养。我一直安慰自己,他們只是感情好哥牍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布毕泌。 她就那樣靜靜地躺著,像睡著了一般砂心。 火紅的嫁衣襯著肌膚如雪懈词。 梳的紋絲不亂的頭發(fā)上蛇耀,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天辩诞,我揣著相機(jī)與錄音,去河邊找鬼纺涤。 笑死译暂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的撩炊。 我是一名探鬼主播外永,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拧咳!你這毒婦竟也來(lái)了伯顶?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎祭衩,沒(méi)想到半個(gè)月后灶体,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掐暮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年蝎抽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片路克。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡樟结,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出精算,到底是詐尸還是另有隱情瓢宦,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布灰羽,位于F島的核電站刁笙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谦趣。R本人自食惡果不足惜疲吸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望前鹅。 院中可真熱鬧摘悴,春花似錦、人聲如沸舰绘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捂寿。三九已至口四,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秦陋,已是汗流浹背蔓彩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驳概,地道東北人赤嚼。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像顺又,于是被迫代替她去往敵國(guó)和親更卒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一稚照、背景 本篇文章是繼上一篇文章《Ubuntu中使用Nginx+rtmp模塊搭建流媒體視頻點(diǎn)播服務(wù)》文章而寫(xiě)蹂空,在上...
    湯青松daxia閱讀 368評(píng)論 0 0
  • 在爬蟲(chóng)開(kāi)發(fā)過(guò)程中俯萌,你肯定遇到過(guò)需要把爬蟲(chóng)部署在多個(gè)服務(wù)器上面的情況。此時(shí)你是怎么操作的呢上枕?逐一SSH登錄每個(gè)服務(wù)器...
    Java大生閱讀 767評(píng)論 0 6
  • 兩日姿骏,“大黑盘巧”李晨向我們范爺求婚的消息占據(jù)了微博的熱搜,很多人喜歡范爺都是因?yàn)樗拿烂卜质荩吘顾娴氖敲婪颂煺盒海?..
    雨桐雪湘閱讀 282評(píng)論 0 0
  • 集體性自我主要體現(xiàn)關(guān)系無(wú)界限,服從權(quán)威嘲玫,權(quán)利者悦施,一般大家庭多為奶奶或者姥姥。在學(xué)校去团,我們期待老師的注意抡诞,在社會(huì),我...
    伊涵crystal閱讀 86評(píng)論 0 0
  • 今天是陽(yáng)光明媚的日子,太陽(yáng)暴曬鬼雀。南京作為十大火爐之一顷窒,今日已經(jīng)29攝氏度了。今天我家親愛(ài)的去浦口石佛寺模擬去了源哩,結(jié)...
    青春獻(xiàn)給老酒桌閱讀 114評(píng)論 0 0