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