作者 | mind_programmonkey 責(zé)編 | 伍杏玲 出品 | CSDN博客 本次用Ngix+RTMP+FFmpeg搭建一個(gè)流媒體服務(wù)器,,實(shí)現(xiàn)簡(jiǎn)單的直播效果,。 Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,。nginx-rmtp-module是Nginx服務(wù)器的流媒體插件,。Nginx通過RTMP模塊提供RTMP服務(wù),,F(xiàn)Fmpeg推送一個(gè)RTMP流到Nginx, 然后客戶端通過訪問Nginx來收看實(shí)時(shí)視頻流。 不管怎么樣,,還是要微笑的面對(duì)呀,! 目前直播產(chǎn)品的種類
花椒,、映客等娛樂主播,,還有斗魚等游戲直播
音視頻會(huì)議、教育直播等,,像釘釘,,騰訊會(huì)議 1.目前泛娛樂化直播架構(gòu) 2.實(shí)時(shí)互動(dòng)直播架構(gòu) 補(bǔ)充知識(shí):CDN網(wǎng)絡(luò) 1.網(wǎng)站的一般訪問模式 首先看一下網(wǎng)站的一般訪問模式,。 當(dāng)一個(gè)用戶想訪問一個(gè)網(wǎng)站的時(shí)候,指定這個(gè)網(wǎng)站的域名,,DNS 就會(huì)將這個(gè)域名解析為地址,,然后用戶請(qǐng)求這個(gè)地址,,返回一個(gè)網(wǎng)頁。就像你要買個(gè)東西,,首先要查找商店的位置,,然后去商店里面找到自己想要的東西,最后拿著東西回家,。 CDN:Content Delivery Network,,內(nèi)容提供(分發(fā))網(wǎng)。 2.使用“中間倉庫”來優(yōu)化 例如你去電商網(wǎng)站下單買個(gè)東西,,這個(gè)東西一定要從電商總部的中心倉庫送過來嗎,?原來基本是這樣的,每一單都是單獨(dú)配送,,所以你可能要很久才能收到你的寶貝,。但是后來電商網(wǎng)站的物流系統(tǒng)學(xué)聰明了,他們?cè)谌珖?guó)各地建立了很多倉庫,,而不是只有總部的中心倉庫才可以發(fā)貨,。 電商網(wǎng)站根據(jù)統(tǒng)計(jì)大概知道,北京,、上海,、廣州、深圳,、杭州等地,,每天能夠賣出去多少書籍、衛(wèi)生紙,、包,、電器等存放期比較長(zhǎng)的物品。這些物品用不著從中心倉庫發(fā)出,,所以平時(shí)就可以將它們分布在各地倉庫里,,客戶一下單,就近的倉庫發(fā)出,,第二天就可以收到了。 這樣,,用戶體驗(yàn)大大提高,。 3.網(wǎng)絡(luò)中的“就近配送” 全球有這么多的數(shù)據(jù)中心,無論在哪里上網(wǎng),,臨近不遠(yuǎn)的地方基本上都有數(shù)據(jù)中心,。是不是可以在這些數(shù)據(jù)中心里部署幾臺(tái)機(jī)器,形成一個(gè)緩存的集群來緩存部分?jǐn)?shù)據(jù),,那么用戶訪問數(shù)據(jù)的時(shí)候,,就可以就近訪問了呢,? 當(dāng)然是可以的。這些分布在各個(gè)地方的各個(gè)數(shù)據(jù)中心的節(jié)點(diǎn),,就稱為邊緣節(jié)點(diǎn),。 由于邊緣節(jié)點(diǎn)數(shù)目比較多,但是每個(gè)邊緣節(jié)點(diǎn)的集群規(guī)模比較小,,不可能緩存下來所有東西,,因而可能無法命中。這樣就會(huì)在邊緣節(jié)點(diǎn)之上,,會(huì)有區(qū)域節(jié)點(diǎn),,規(guī)模就要更大,緩存的數(shù)據(jù)會(huì)更多,,命中的概率也就更大,。在區(qū)域節(jié)點(diǎn)之上是中心節(jié)點(diǎn),規(guī)模更大,,緩存數(shù)據(jù)更多,。如果還不命中,就只好回源網(wǎng)站訪問了,。 Ngix+RTMP+FFmpeg搭建簡(jiǎn)單的流服務(wù)器 Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,。nginx-rmtp-module是Nginx服務(wù)器的流媒體插件,。Nginx通過RTMP模塊提供RTMP服務(wù), FFmpeg推送一個(gè)RTMP流到nginx, 然后客戶端通過訪問Nginx來收看實(shí)時(shí)視頻流。 那么,,接下來就是搭建環(huán)境了,,go,go,,go?。。,?! 為了快速下載,可替換一下鏡像源,。Ubuntu apt-get 國(guó)內(nèi)鏡像源替換 https://blog.csdn.net/qq_21095573/article/details/99736630 1.基于Nginx的Linux RTMP服務(wù)搭建 a.下載nginx
b.解壓nginx tar xvf nginx-1.15.3.tar.gz c.下載Nginx rtmp模塊
d.解壓
e.安裝編譯 nginx 所需要的庫
f.進(jìn)行nginx目錄
g.執(zhí)行 #–add-module 指向rtmp模塊目錄
h.編譯安裝在當(dāng)前目錄的bin目錄下
在當(dāng)前目錄 執(zhí)行 bin/sbin/nginx 即可啟動(dòng)
在瀏覽器輸入 【IP】:8080 注意: 需要注意的是目錄與端口是否被占用,比如如果8080端口被占用,,可改為8081,,然后需要開放端口。 端口占用檢查:lsof -i:8080 2.FFmpeg FFmpeg的安裝有兩種方式:一種是簡(jiǎn)單的,,另外一種是稍微復(fù)雜點(diǎn),。 a.簡(jiǎn)單安裝方式 先來簡(jiǎn)單的,,三步走 第一步:添加源。
第二步:更新源,。
第三步:下載安裝,。
b.復(fù)雜安裝方式 第一步,支持庫的安裝
apt install libavformat-dev 第二步,,x264 gir clone https://github.com/qupai/x264 第三步,,F(xiàn)Fmpeg 官網(wǎng)下載:http://www./download.html tar -jxvf ffmpeg-4.1.tar.bz2 如果遇到這個(gè)問題: ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory - sudo find / -name libavdevice.so.58 # 找到文件對(duì)應(yīng)地址 重新運(yùn)行ffmpeg -encoders | grep x264會(huì)發(fā)現(xiàn)安裝成功 安裝成功之后,,驗(yàn)證一下效果,ffmpeg -version 3.推流拉流開始 推流,,指的是把采集階段封包好的內(nèi)容傳輸?shù)椒?wù)器的過程,主播端把本地采集的語音視頻流推送到媒體服務(wù)器,。就是將現(xiàn)場(chǎng)的視頻信號(hào)傳到網(wǎng)絡(luò)的過程,。 接下來演示一下: 將主機(jī)Windows中的媒體文件1.mp4推流到虛擬機(jī)Ubuntu的流媒體服務(wù)器Nginx中,然后在ubuntu下拉流通過ffplayer播放出來這一流程,。 Windows下推流:
ubuntu開啟Nginx服務(wù) 在nginx.conf文件中新增加的下面的內(nèi)容,,增加RTMP功能以及使Nginx能具有直播狀態(tài)監(jiān)聽的功能: 之后,,啟動(dòng)服務(wù)
ubuntu拉流播放
即可大功告成!??! 那這次就先這樣了,。 原文鏈接:https://blog.csdn.net/Mind_programmonkey/article/details/104584444 |
|