編者按: 對(duì)于視頻直播來說,網(wǎng)絡(luò)延遲的問題是一個(gè)常見的痛點(diǎn)。筆者單位融媒體視頻直播平臺(tái)出現(xiàn)的延遲問題是由于從采集到發(fā)布過程產(chǎn)生的延時(shí)所造成的。
筆者單位于2018年完成構(gòu)建智慧校園基礎(chǔ)設(shè)施建設(shè)項(xiàng)目,構(gòu)建了以“一架構(gòu)、二平臺(tái)和三中心”為體系的智慧校園。該項(xiàng)目建成投入使用后,在應(yīng)用中發(fā)現(xiàn)基于Windows 2012 Server 系統(tǒng)搭建配置視頻直播服務(wù)器的融媒體視頻直播平臺(tái),在進(jìn)行視頻直播時(shí)有約15 s的網(wǎng)絡(luò)延時(shí),這對(duì)學(xué)校正常開展教育教學(xué)視頻直播任務(wù)產(chǎn)生了一定的影響。
在進(jìn)行故障排查時(shí),視頻采集電腦A(Windows Media Encoder 采集)和服務(wù)器 B(Media Server 9)數(shù)據(jù)傳輸網(wǎng)絡(luò)正常沒有丟包現(xiàn)象,網(wǎng)絡(luò)正常。但是從視頻直播到各收看終端之間的延時(shí)有約15 s。
再次分析其延時(shí)問題,可能發(fā)生在視頻采集電腦A 推流到服務(wù)器B的過程中,經(jīng)排查發(fā)現(xiàn),視頻采集電腦A 從采集到發(fā)布過程中就存在約15 s的延時(shí)。故障原因是Windows Media Encoder 采集自身到推流發(fā)布之間產(chǎn)生的延時(shí),尚沒有其他好的優(yōu)化措施。
根據(jù)故障排查原因,發(fā)現(xiàn)是視頻采集電腦A 從采集到發(fā)布過程產(chǎn)生的延時(shí)現(xiàn)象造成融媒體視頻直播系統(tǒng)的延時(shí)故障。所以,故障解決思路應(yīng)優(yōu)先解決視頻采購到發(fā)布的延時(shí)問題。
通過查詢相關(guān)技術(shù)資料,并結(jié)合單位網(wǎng)絡(luò)狀況,筆者認(rèn)為采用RTMP 協(xié)議構(gòu)建視頻直播平臺(tái)對(duì)網(wǎng)絡(luò)延時(shí)的優(yōu)化比較好。經(jīng)測試其可行性,最后采用Docker 方式搭建SRS 流媒體服務(wù),視頻采集電腦A 端運(yùn)用OBS 推流方式重新構(gòu)建融媒體視頻直播平臺(tái)系統(tǒng)。基于Docker 方式搭建SRS 流媒體服務(wù)器的具體操作步驟如下。
筆者單位的服務(wù)器采用某品牌的超融合架構(gòu)方式,在虛擬機(jī)安裝的 是CentOS 7,Linux 3.10 內(nèi)核。為了部署方便,采用CentOS 7系統(tǒng)作為服務(wù)器,運(yùn)用Docker 方式搭建SRS 流媒體系統(tǒng)?;贒ocker目前屬于基礎(chǔ)性軟件了,在本文中就不再細(xì)述如何在CentOS 7 中安裝Docker 容器。
需要對(duì)Docker 容器進(jìn)行一些參數(shù)的配置,在運(yùn)行容器之前,我們需要確認(rèn)運(yùn)行容器的一些參數(shù),例如,RTMP默認(rèn)端口是1935,HTTP 默認(rèn)端口80(為了防止和宿主機(jī)的80 端口產(chǎn)生沖突,此處建議使用8080 端口替代80 端口)。在Docker 容器運(yùn)行命令進(jìn)行參數(shù)配置,如下所示:
docker run-it-p 1935:1935-p 8080:80--rm nginx-rtmp
在搭建SRS 服務(wù)過程中,需要先解決依賴,然后安裝SRS 服務(wù),安裝完成之后需要配置服務(wù)。
(1)安裝SRS
基于SRS 官方把源碼托管在GitHub 中,建議將源碼復(fù)制出來,下載srs 執(zhí)行命令如下所示:
git clone https://gitee.com/songboy/srs.git&& ls srs
(2)啟動(dòng)SRS 服務(wù)
執(zhí)行啟動(dòng)命令如下所示:
./objs/srs-c conf/srs.conf
視頻采集電腦A 端采用OBS 進(jìn)行一個(gè)推流視頻,Docker 運(yùn)行的容器的服務(wù)器地址為192.168.1.1。因此這里筆者使用的推流地址如下:
rtmp://192.168.1.1:1935/stream
在Docker 容器中使用PHP+HTML 5 方式構(gòu)建融媒體視頻直播平臺(tái)系統(tǒng),采用HTML 5的video 元素獲取RTMP 協(xié)議的視頻流。主要代碼如下所示:
通過以上實(shí)踐,基于Docker 方式搭建SRS 流 媒體服務(wù)器融媒體視頻直播平臺(tái),在進(jìn)行教育教學(xué)視頻直播時(shí)網(wǎng)絡(luò)延時(shí)能控制在1 s以內(nèi),直播延時(shí)長問題得以解決。同時(shí),此舉有效地促進(jìn)信息技術(shù)與教育教學(xué)融合應(yīng)用。