林 旻
(南京審計大學,江蘇 南京 211815)
在我國互聯網帶寬大提速和5G移動網絡技術高速發展的前提下,特別是疫情嚴格防控的大背景下,國內的教育機構,特別是高等教育機構和義務教育機構開始大量采用直播的方式進行異地教學,有效拓展了教學的空間屬性。當前,直播教育能夠大面積推進并獲得成功,不僅依賴于我國網絡技術、信息技術的高速發展,也是我國近年來不斷推動教育信息化、在線課程教學所積累的優質資源和有效經驗從量變到質變的轉化結果。
本文從南京審計大學教育技術中心的實際需求出發,設計并建設一套基于開源架構的虛擬在線課程直播系統,完善課程的拍攝、制作和傳播手段,有效實現課程資源的合理整合、傳播和共享。為高校分享教育資源、提高教學質量提供了新途徑。研究內容具體包括以下方面:
(1)視頻采集模塊的設計與實施,實現課程的虛擬摳像拍攝、即時合成和實時推送。
(2)流媒體模塊設計與實施,實現將視頻采集模塊傳來的視頻流進行存儲和轉發。
(3)直播呈現平臺的設計與實施,整合課程視頻,實現全平臺(PC端和移動端)的直播功能,使學習者無論處在何地都可以進行課程學習。
本文提出的虛擬課程直播系統基于開源技術框架完成,能夠實現課程拍攝、摳像合成;同時,實現課程視頻流的推送、傳播和存儲;最終在一個安全、穩定、便利的平臺上呈現。
(1)實時消息傳輸協議(Real Time Message Protocol,RTMP)由 Adobe公司提出,基于傳輸控制協議(Transmission Control Protocol,TCP),主要用于Flash,AIR平臺的視頻和數據通信。RTMP具有低延遲、高穩定性等優勢,但缺點在于它屬于Adobe公司的私有協議,需要使用Flash播放器播放。
(2)HLS(HTTP Live Streaming)是蘋果公司提出的流媒體協議,主要應用于iOS系統,相較于其他流媒體協議,HLS不會請求完整的數據流,而是在服務器端將視頻流分割成連續但時長很短的TS文件,然后通過m3u8索引文件按序訪問。HLS具有移動端(iOS和Android)原生支持、支持HTML5播放、支持網絡分發、CDN支持良好的優勢,但缺點在于延遲高。兩種協議對比如表1所示。
NRM(Nginx Rtmp Module)即基于 Nginx的RTMP模塊,Nginx基于BSD開源協議,是一款高性能的HTTP和反向代理Web服務器軟件,具有高穩定性、占有資源少、處理數據量大等特點。RTMP模塊是github開源軟件平臺上著名的基于nginx服務器的RTMP和HLS協議擴展功能模塊。Nginx+rtmp能夠實現流媒體的文件存儲、流媒體內容的轉發、流媒體內容的更新等功能[1-2]。
OBS(Open Broadcaster Software)是一款開源的視頻錄制和視頻實時流軟件,廣泛使用在視頻采集、直播等領域。OBS軟件具有實時摳像、直播推流、錄播存儲、輸入輸出源等多種功能,支持主流的視頻格式和傳輸協議,提供插件定義功能,除核心框架以及渲染系統外,其他功能都可以通過定制開發第三方插件進行附加[3]。
Wordpress是一款基于GNU通用公共許可證授權的免費內容管理系統,其功能強大、擴展性強,通過第三方插件能夠擴充眾多功能,是全球用戶最多的內容管理系統,在全球前1 000萬個網站中占有率達30%。最近的Wordpress版本提供了Rest API接口,可以很好地實現網頁端和移動端的數據呈現。所以,Wordpress可以實現課程流媒體視頻的跨協議、跨平臺呈現,使學生學習打破距離和設備的限制。
Vidoe.js是一款開源的Web視頻播放插件,具有HTML5和Flash兩種播放方式,兼容大部分瀏覽器,工作時優先使用HTML5工作模式,在不支持的瀏覽器中自動切換至Flash模式進行播放,能很好地做到視頻流的全平臺播放。
虛擬課程直播系統的設計基于開源技術框架完成,該系統不僅能夠實現課程拍攝、摳像合成,而且可以同時實現課程視頻流的推送、傳播和存儲,最后在一個安全、穩定、便利的平臺上呈現直播內容,具體設計方案如圖1所示。

圖1 直播系統設計方案
視頻采集模塊包括3個功能:采集、摳像合成、串流。具體如下:
(1)視頻采集,是指將高清攝像機拍攝的視音頻信號輸入到PC端,并轉換成PC端能夠識別的視頻數據。
(2)摳像合成,是把畫面中某一種顏色去掉(大多是藍色或綠色),保留其他顏色的技術,然后再和其他素材疊加在一起。
(3)串流,是將視頻數據封裝成RTMP流并推送到NRM流媒體服務器的過程。
本系統視頻采集模塊的功能基于開源軟件OBS+視頻采集卡實現。首先,在采集計算機的PCIE接口安裝視頻采集卡;其次,通過視頻采集卡的SDI或者HDMI接口連接高清攝像機;再次,在采集計算機上安裝OBS軟件,在OBS軟件設置視頻捕獲設備獲得攝像機拍攝的畫面,并對該畫面設置色鍵(一般為綠色)進行摳像合成操作;最后,在OBS的串流設置里設置NRM服務器地址和串流碼,進行串流操作。
流媒體服務器模塊主要負責接收視頻采集模塊推送的視頻流,將視頻流存儲為點播資源的同時,以RTMP或者HLS流的形式為直播呈現平臺提供拉流服務。
本系統流媒體模塊的功能基于開源架構Nginx+Rtmp模塊來實現,主要配置如下:
(1)配置RTMP流。
rtmp{
server{
application lablive{#rtmp推流請求路徑
live on;
}
}
}
(2)配置HSL流。在RTMP標簽中增加HLS的相關代碼,具體代碼如下:
rtmp{
server{
汕頭海岸電臺目前承擔著覆蓋范圍內A1、A2海區的遇險、緊急、安全、日常海上無線電通信等功能,是為履行國際海事組織(IMO)公約而建設起來的集近、中、遠距離水上無線電通信功能的船岸無線電通信系統,涵蓋了HF/MF/VHF等頻段,具備了SSB/FM無線電話和NBDP/DSC無線電報等功能,承擔著船舶遇險報警、安全通信、海上安全信息播發等任務,是船舶航行安全必不可少的一套通信保障系統,它包括了收信臺、發信臺和無線電話臺,其中收信臺和無線電話臺位于汕頭海事局辦公大樓,與汕頭海事搜尋救助分中心同址,由市電、應急發電機及1臺48KVA APC英飛系列UPS供電,電力供應情況可靠穩定。
listen 1935;#監聽的端口
chunk_size 4096;
application lablive{#rtmp推流請求路徑
live on;
hls on;
hls_path/usr/local/lablive/hlsFile;#設置HLS切片文件保存路徑
hls_fragment 5s;#設置HLS分段長度
hls_playlist_length 10s;#設置HLS播放列表長度
}
}
}
在http標簽下增加一個location,具體代碼如下:
location/labhls{
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias/usr/local/lablive/hlsFile;
add_headerCache-Controlnocache;#設置緩存機制
add_header Access-Control-Allow-Origin*;#解決跨域
}
(3)配置NRM數據統計模塊。在配置文件的http標簽下加入兩個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的推流信息
直播呈現平臺負責課程視頻流的最終呈現,作為和學生直接交互的平臺,功能上不僅要實現全平臺(PC端和移動端)的視頻流直播呈現,還要滿足直播視頻多維度(課程、教師、班級等)的分類整合,能夠支持師生互動交流和分級、分權限管理直播課程。OBS直播測試如圖3所示。

圖3 OBS直播測試
本系統的直播呈現平臺基于Wordpress與Video.js來實現,為了做到全平臺(移動端和PC端)播放,本平臺移動端通過HTML5頁面配置video標簽播放HLS視頻流;PC端通過Video.js解碼.m3u8視頻,再通過
本文闡述了一個新的基于開源架構直播系統解決方案,詳細分析了各個模塊的功能需求,設計并搭建了整套直播系統平臺。通過摳像合成技術拓展了課程的表現形式,增加了課程的趣味性和吸引力,通過“直播+教育”的即時傳播方式,進一步拓展了學習的時間和空間屬性。