林 旻
(南京審計(jì)大學(xué),江蘇 南京 211815)
在我國(guó)互聯(lián)網(wǎng)帶寬大提速和5G移動(dòng)網(wǎng)絡(luò)技術(shù)高速發(fā)展的前提下,特別是疫情嚴(yán)格防控的大背景下,國(guó)內(nèi)的教育機(jī)構(gòu),特別是高等教育機(jī)構(gòu)和義務(wù)教育機(jī)構(gòu)開始大量采用直播的方式進(jìn)行異地教學(xué),有效拓展了教學(xué)的空間屬性。當(dāng)前,直播教育能夠大面積推進(jìn)并獲得成功,不僅依賴于我國(guó)網(wǎng)絡(luò)技術(shù)、信息技術(shù)的高速發(fā)展,也是我國(guó)近年來(lái)不斷推動(dòng)教育信息化、在線課程教學(xué)所積累的優(yōu)質(zhì)資源和有效經(jīng)驗(yàn)從量變到質(zhì)變的轉(zhuǎn)化結(jié)果。
本文從南京審計(jì)大學(xué)教育技術(shù)中心的實(shí)際需求出發(fā),設(shè)計(jì)并建設(shè)一套基于開源架構(gòu)的虛擬在線課程直播系統(tǒng),完善課程的拍攝、制作和傳播手段,有效實(shí)現(xiàn)課程資源的合理整合、傳播和共享。為高校分享教育資源、提高教學(xué)質(zhì)量提供了新途徑。研究?jī)?nèi)容具體包括以下方面:
(1)視頻采集模塊的設(shè)計(jì)與實(shí)施,實(shí)現(xiàn)課程的虛擬摳像拍攝、即時(shí)合成和實(shí)時(shí)推送。
(2)流媒體模塊設(shè)計(jì)與實(shí)施,實(shí)現(xiàn)將視頻采集模塊傳來(lái)的視頻流進(jìn)行存儲(chǔ)和轉(zhuǎn)發(fā)。
(3)直播呈現(xiàn)平臺(tái)的設(shè)計(jì)與實(shí)施,整合課程視頻,實(shí)現(xiàn)全平臺(tái)(PC端和移動(dòng)端)的直播功能,使學(xué)習(xí)者無(wú)論處在何地都可以進(jìn)行課程學(xué)習(xí)。
本文提出的虛擬課程直播系統(tǒng)基于開源技術(shù)框架完成,能夠?qū)崿F(xiàn)課程拍攝、摳像合成;同時(shí),實(shí)現(xiàn)課程視頻流的推送、傳播和存儲(chǔ);最終在一個(gè)安全、穩(wěn)定、便利的平臺(tái)上呈現(xiàn)。
(1)實(shí)時(shí)消息傳輸協(xié)議(Real Time Message Protocol,RTMP)由 Adobe公司提出,基于傳輸控制協(xié)議(Transmission Control Protocol,TCP),主要用于Flash,AIR平臺(tái)的視頻和數(shù)據(jù)通信。RTMP具有低延遲、高穩(wěn)定性等優(yōu)勢(shì),但缺點(diǎn)在于它屬于Adobe公司的私有協(xié)議,需要使用Flash播放器播放。
(2)HLS(HTTP Live Streaming)是蘋果公司提出的流媒體協(xié)議,主要應(yīng)用于iOS系統(tǒng),相較于其他流媒體協(xié)議,HLS不會(huì)請(qǐng)求完整的數(shù)據(jù)流,而是在服務(wù)器端將視頻流分割成連續(xù)但時(shí)長(zhǎng)很短的TS文件,然后通過(guò)m3u8索引文件按序訪問(wèn)。HLS具有移動(dòng)端(iOS和Android)原生支持、支持HTML5播放、支持網(wǎng)絡(luò)分發(fā)、CDN支持良好的優(yōu)勢(shì),但缺點(diǎn)在于延遲高。兩種協(xié)議對(duì)比如表1所示。
NRM(Nginx Rtmp Module)即基于 Nginx的RTMP模塊,Nginx基于BSD開源協(xié)議,是一款高性能的HTTP和反向代理Web服務(wù)器軟件,具有高穩(wěn)定性、占有資源少、處理數(shù)據(jù)量大等特點(diǎn)。RTMP模塊是github開源軟件平臺(tái)上著名的基于nginx服務(wù)器的RTMP和HLS協(xié)議擴(kuò)展功能模塊。Nginx+rtmp能夠?qū)崿F(xiàn)流媒體的文件存儲(chǔ)、流媒體內(nèi)容的轉(zhuǎn)發(fā)、流媒體內(nèi)容的更新等功能[1-2]。
OBS(Open Broadcaster Software)是一款開源的視頻錄制和視頻實(shí)時(shí)流軟件,廣泛使用在視頻采集、直播等領(lǐng)域。OBS軟件具有實(shí)時(shí)摳像、直播推流、錄播存儲(chǔ)、輸入輸出源等多種功能,支持主流的視頻格式和傳輸協(xié)議,提供插件定義功能,除核心框架以及渲染系統(tǒng)外,其他功能都可以通過(guò)定制開發(fā)第三方插件進(jìn)行附加[3]。
Wordpress是一款基于GNU通用公共許可證授權(quán)的免費(fèi)內(nèi)容管理系統(tǒng),其功能強(qiáng)大、擴(kuò)展性強(qiáng),通過(guò)第三方插件能夠擴(kuò)充眾多功能,是全球用戶最多的內(nèi)容管理系統(tǒng),在全球前1 000萬(wàn)個(gè)網(wǎng)站中占有率達(dá)30%。最近的Wordpress版本提供了Rest API接口,可以很好地實(shí)現(xiàn)網(wǎng)頁(yè)端和移動(dòng)端的數(shù)據(jù)呈現(xiàn)。所以,Wordpress可以實(shí)現(xiàn)課程流媒體視頻的跨協(xié)議、跨平臺(tái)呈現(xiàn),使學(xué)生學(xué)習(xí)打破距離和設(shè)備的限制。
Vidoe.js是一款開源的Web視頻播放插件,具有HTML5和Flash兩種播放方式,兼容大部分瀏覽器,工作時(shí)優(yōu)先使用HTML5工作模式,在不支持的瀏覽器中自動(dòng)切換至Flash模式進(jìn)行播放,能很好地做到視頻流的全平臺(tái)播放。
虛擬課程直播系統(tǒng)的設(shè)計(jì)基于開源技術(shù)框架完成,該系統(tǒng)不僅能夠?qū)崿F(xiàn)課程拍攝、摳像合成,而且可以同時(shí)實(shí)現(xiàn)課程視頻流的推送、傳播和存儲(chǔ),最后在一個(gè)安全、穩(wěn)定、便利的平臺(tái)上呈現(xiàn)直播內(nèi)容,具體設(shè)計(jì)方案如圖1所示。
圖1 直播系統(tǒng)設(shè)計(jì)方案
視頻采集模塊包括3個(gè)功能:采集、摳像合成、串流。具體如下:
(1)視頻采集,是指將高清攝像機(jī)拍攝的視音頻信號(hào)輸入到PC端,并轉(zhuǎn)換成PC端能夠識(shí)別的視頻數(shù)據(jù)。
(2)摳像合成,是把畫面中某一種顏色去掉(大多是藍(lán)色或綠色),保留其他顏色的技術(shù),然后再和其他素材疊加在一起。
(3)串流,是將視頻數(shù)據(jù)封裝成RTMP流并推送到NRM流媒體服務(wù)器的過(guò)程。
本系統(tǒng)視頻采集模塊的功能基于開源軟件OBS+視頻采集卡實(shí)現(xiàn)。首先,在采集計(jì)算機(jī)的PCIE接口安裝視頻采集卡;其次,通過(guò)視頻采集卡的SDI或者HDMI接口連接高清攝像機(jī);再次,在采集計(jì)算機(jī)上安裝OBS軟件,在OBS軟件設(shè)置視頻捕獲設(shè)備獲得攝像機(jī)拍攝的畫面,并對(duì)該畫面設(shè)置色鍵(一般為綠色)進(jìn)行摳像合成操作;最后,在OBS的串流設(shè)置里設(shè)置NRM服務(wù)器地址和串流碼,進(jìn)行串流操作。
流媒體服務(wù)器模塊主要負(fù)責(zé)接收視頻采集模塊推送的視頻流,將視頻流存儲(chǔ)為點(diǎn)播資源的同時(shí),以RTMP或者HLS流的形式為直播呈現(xiàn)平臺(tái)提供拉流服務(wù)。
本系統(tǒng)流媒體模塊的功能基于開源架構(gòu)Nginx+Rtmp模塊來(lái)實(shí)現(xiàn),主要配置如下:
(1)配置RTMP流。
rtmp{
server{
application lablive{#rtmp推流請(qǐng)求路徑
live on;
}
}
}
(2)配置HSL流。在RTMP標(biāo)簽中增加HLS的相關(guān)代碼,具體代碼如下:
rtmp{
server{
汕頭海岸電臺(tái)目前承擔(dān)著覆蓋范圍內(nèi)A1、A2海區(qū)的遇險(xiǎn)、緊急、安全、日常海上無(wú)線電通信等功能,是為履行國(guó)際海事組織(IMO)公約而建設(shè)起來(lái)的集近、中、遠(yuǎn)距離水上無(wú)線電通信功能的船岸無(wú)線電通信系統(tǒng),涵蓋了HF/MF/VHF等頻段,具備了SSB/FM無(wú)線電話和NBDP/DSC無(wú)線電報(bào)等功能,承擔(dān)著船舶遇險(xiǎn)報(bào)警、安全通信、海上安全信息播發(fā)等任務(wù),是船舶航行安全必不可少的一套通信保障系統(tǒng),它包括了收信臺(tái)、發(fā)信臺(tái)和無(wú)線電話臺(tái),其中收信臺(tái)和無(wú)線電話臺(tái)位于汕頭海事局辦公大樓,與汕頭海事搜尋救助分中心同址,由市電、應(yīng)急發(fā)電機(jī)及1臺(tái)48KVA APC英飛系列UPS供電,電力供應(yīng)情況可靠穩(wěn)定。
listen 1935;#監(jiān)聽的端口
chunk_size 4096;
application lablive{#rtmp推流請(qǐng)求路徑
live on;
hls on;
hls_path/usr/local/lablive/hlsFile;#設(shè)置HLS切片文件保存路徑
hls_fragment 5s;#設(shè)置HLS分段長(zhǎng)度
hls_playlist_length 10s;#設(shè)置HLS播放列表長(zhǎng)度
}
}
}
在http標(biāo)簽下增加一個(gè)location,具體代碼如下:
location/labhls{
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias/usr/local/lablive/hlsFile;
add_headerCache-Controlnocache;#設(shè)置緩存機(jī)制
add_header Access-Control-Allow-Origin*;#解決跨域
}
(3)配置NRM數(shù)據(jù)統(tǒng)計(jì)模塊。在配置文件的http標(biāo)簽下加入兩個(gè)location,具體代碼如下:
location/livestat{
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location/stat.xsl{
root/download/NRM/;
}
使用瀏覽器打開http://172.24.200.46/livestat,即可看到NRM的推流信息,如圖2所示。
圖2 NRM的推流信息
直播呈現(xiàn)平臺(tái)負(fù)責(zé)課程視頻流的最終呈現(xiàn),作為和學(xué)生直接交互的平臺(tái),功能上不僅要實(shí)現(xiàn)全平臺(tái)(PC端和移動(dòng)端)的視頻流直播呈現(xiàn),還要滿足直播視頻多維度(課程、教師、班級(jí)等)的分類整合,能夠支持師生互動(dòng)交流和分級(jí)、分權(quán)限管理直播課程。OBS直播測(cè)試如圖3所示。
圖3 OBS直播測(cè)試
本系統(tǒng)的直播呈現(xiàn)平臺(tái)基于Wordpress與Video.js來(lái)實(shí)現(xiàn),為了做到全平臺(tái)(移動(dòng)端和PC端)播放,本平臺(tái)移動(dòng)端通過(guò)HTML5頁(yè)面配置video標(biāo)簽播放HLS視頻流;PC端通過(guò)Video.js解碼.m3u8視頻,再通過(guò)
本文闡述了一個(gè)新的基于開源架構(gòu)直播系統(tǒng)解決方案,詳細(xì)分析了各個(gè)模塊的功能需求,設(shè)計(jì)并搭建了整套直播系統(tǒng)平臺(tái)。通過(guò)摳像合成技術(shù)拓展了課程的表現(xiàn)形式,增加了課程的趣味性和吸引力,通過(guò)“直播+教育”的即時(shí)傳播方式,進(jìn)一步拓展了學(xué)習(xí)的時(shí)間和空間屬性。