孫 恒
(山東大學 外國語學院 現代教育技術實驗室,濟南 250100)
伴隨著互聯網技術的不斷發展和移動網絡服務質量的逐步改善。移動互聯網在我國快速發展、移動用戶數量迅猛增長。移動互聯網改變人們的學習生活方式,傳統PC端架構的互聯網應用逐漸向移動端轉化,用戶通過便攜式移動終端設備訪問網絡進行學習,適用于移動學習的應用逐漸增多。目前,主流網絡公開課等學習教育只提供點播和單向直播功能,教師與學生不能進行有效、實時交流互動。相比固定的直播在線課程而言,移動流媒體直播擁有更高的實時性和互動性,教師與學生之間能夠實時溝通交流,帶來更好地學習體驗[1]。
在移動流媒體直播平臺開發和建設方面,國內外學者進行大量的研究工作。趙學銘[2]設計一種基于HTML5的交互式移動學習平臺,實現交互式學習,但是無法實現師生課堂互動。吳海巍[3]實現基于流媒體技術的移動視頻直播系統,僅支持蘋果的iOS操作系統,對Android等操作系統兼容性欠缺。周東光[4]開發的基于移動終端的教學直播系統,只是單向直播并且對網絡的直播延遲沒有調整調度解決方案。
通過對以上研究工作進行整理分析,設計并實現一種基于多終端的移動流媒體直播系統。系統使用多種終端作為直播端采集信息,流媒體在云服務平臺進行編碼轉換,并向最終用戶推送,用戶可以通過各種終端觀看直播。
(1) 移動流媒體直播技術。移動流媒體直播相對于傳統的固定式錄播教室,具有易部署、直播實時性強的特點。能靈活方便地用于課程教學、專家講學、校外講學等各類教學場景。移動流媒體直播系統通常包含采集、編碼、媒體推流、網絡分發、拉流和終端用戶等六個環節。移動直播工作流程見圖1。

圖1 移動直播工作流程
采集是整個移動流媒體直播過程中的第一個環節,它從手機等移動終端的前置或后置攝像頭采集獲取原始視頻數據,將其輸出到下一個環節。編碼環節由于iOS端硬件兼容性較好,可以直接采用設備硬編;而Android系統的硬件機型較多,則使用軟編。音視頻編碼在移動終端處理完成后,通過推流協議推送至服務器端,并通過內容分發網絡(Content Delivery Network,CDN)進行分發。用戶移動終端通過從CDN拉取音視頻編碼,將不同封裝格式的音視頻進行解包和內容解碼,然后把解碼后的視頻交給操作系統進行渲染,最終讓終端用戶看到主播端的音視頻[5]。
(2) 移動流媒體直播云服務技術。傳統的流媒體直播系統開發耗費大量人力財力和時間,用戶需要購置服務器、選擇服務器托管機房,同時進行流媒體直播系統構建、轉碼和存儲等相關技術的研發,以及隨之而來的巨額帶寬使用費。在直播系統建成使用過程中,經常會出現網絡故障導致流媒體直播系統無法正常工作的情況。
隨著基于云服務的應用不斷普及,云服務平臺可以提供強大功能和高安全保障,降低運維成本和應用開發難度。目前,云服務有3種服務模式分別是基礎設施即服務(Infrastructure as a Service,IaaS)、平臺即服務(Platform as a Service,PaaS)、軟件即服務(Software as a Service,SaaS)[6]。其中,IaaS供給消費者的服務是對所有設施的利用,包括處理器、網絡和其它基本的計算資源,用戶能夠部署和運行任意軟件,包括操作系統和應用程序。PaaS實際上是指將軟件研發的平臺作為一種服務,客戶不需要管理底層的云基礎設施,包括網絡、服務器、操作系統、存儲等,但能控制部署的應用程序。SaaS提供給客戶的服務是運行在云計算基礎設施上的應用程序,用戶可以在各種設備上通過客戶端界面訪問。
系統設計開發過程中,采用云服務平臺作為基礎底層架構。移動流媒體直播系統開發人員僅對主播端和播放端進行開發。云服務平臺提供其他系統開發必須的軟硬件環境,提高系統開發效率[7]。云服務平臺采用PaaS服務模式,通過平臺提供的軟件開發工具包(Software Development Kit,SDK)可以快速搭建直播平臺及應用。移動流媒體直播云服務平臺采用“采集推流SDK—直播云服務平臺SDK—播放端SDK”模式,采集端從直播源獲取視頻并推送到服務端,服務端進行轉碼、加密、添加水印、生成縮略圖等處理,由播放端進行播放。云服務平臺架構見圖2。

圖2 云服務平臺架構
移動流媒體直播系統是一個整體的媒體傳播應用方案,采用分層模塊化設計可以保證系統架構具有良好的穩定性和擴展性[8]。模塊化設計使系統既有功能的獨立性又有接口的一致性,不斷通過升級自身性能來提高整體性能和可靠性,而不會影響到其他模塊。系統中各個模塊相對獨立地設計和發展,進行并行設計、開發和并行試驗、驗證。模塊的不同組合能滿足多樣性需求,通過模塊化設計能提供更好的業務方接入方式,解決移動流媒體直播中代碼耦合性高、出現故障不容易及時排除等問題。
整個系統自下而上分為4個模塊層次:基礎支撐層、服務層、應用層、展現層。每層提供不同的功能,通過模塊接口與相鄰層保持關聯。基礎支撐層提供系統底層的運行環境和支撐保障,實時流網絡、數據處理、存儲和深度學習是保證系統正常運行的基本條件。服務層保證各個功能實現,視頻直播模塊提供直播接入、直播管理、直播錄制、直播回看等整套的直播流程服務?;A服務模塊提供直播相關的基礎工作包含用戶資料維護、直播間管理、信令服務、連麥服務、服務調度等。業務模塊包含留言系統、業務排行、用戶推薦、關注體系等與直播直接相關聯的應用等。應用層通過引入服務層的相關模塊接口,向上一層提供系統化接口實現目錄接入、音視頻接入、通用網關接口(Common Gateway Interface,CGI)等。展現層通過移動終端APP和HTML5的自適應頁面這兩種方式,將直播顯示到最終用戶面前,真正實現自適應化的多終端直播系統[9]。系統體系見圖3。
移動流媒體直播系統的直播端和客戶端通過各種網絡與直播云服務平臺進行視頻流通信,物理架構見圖4。智能手機、平板電腦、PC攝像頭、錄像機等各種終端都可作為直播端,通過攝像頭采集直播視頻,將視頻流使用RTMP等相關協議推送至直播云服務平臺進行媒體編碼轉換等工作。在云服務平臺中,通過實時轉碼服務集群、直播API服務集群、多媒體存儲集群等實現相關媒體編碼、存儲等工作。經過處理的視頻通過云平臺CDN進行分發,可以根據直播需求自動適應高延遲和高并發、低延遲和高互動這兩種場景。用戶使用云服務器對直播過程進行創建直播、推流地址控制、播放控制和直播流授權管理等操作。平臺中的自動服務質量調度中心,保證整個直播網中的節點和線路在出現異常或者故障時,可以立刻被新的節點和線路自動替換,提高網絡的容錯性和健壯性[10]。

圖3 系統體系結構圖

圖4 移動直播系統物理架構
移動流媒體直播系統最主要的模塊是直播模塊,因此將直播模塊作為重點設計對象[11]。移動直播系統直播流程見圖5。教師主播使用手機、平板電腦等移動終端啟動直播程序,系統自動檢測移動終端的音視頻硬件配置。如果沒有發現適合直播的硬件配置,則在直播終端提示硬件檢測失敗,并退出程序;若通過硬件檢測,則啟動移動終端內置攝像頭和麥克風采集、合成音視頻,并推流至移動流媒體直播云服務平臺。如果推流失敗,則給出提示并且顯示錯誤故障代碼;若推流成功,則在移動流媒體直播云服務平臺中進行音視頻多碼率轉碼、內容智能分發、直播視頻實時錄制和存儲等工作??蛻舨シ哦藦脑品掌脚_進行拉流觀看,如果拉流失敗,則給出信息提示,并且再次重新嘗試;若拉流成功,則將從云服務平臺端處理完畢的多碼率數據流拉送至客戶播放端,由播放端自適應播放,從而完成整個移動流媒體直播流程。

圖5 移動直播系統直播流程
移動流媒體直播對于視頻傳輸的實時性有嚴格要求,在移動網絡下GPRS、3G、4G切換時,需要耗費大量網絡帶寬,導致高清晰度的內容無法發送。這時,需要根據帶寬的狀況來及時調整碼率、畫面每秒傳輸幀數(Frame Per Second,FPS)和分辨率,執行不同的編碼推流策略[12]。
為保證直播的實時性,在網絡帶寬不足或者上行速度不佳的情況下,需要在流暢度和清晰度之間做出選擇。選定分辨率后,在推流過程中分辨率不會變更,但碼率和FPS可以調節,直播效果相關聯系見圖6。每一種編碼推流策略都會被存儲在云服務平臺的策略庫中供其他用戶調用[13]。

圖6 直播效果相關聯系
直播端通過APP實現對服務器和其中的直播業務邏輯操作,首先直播采集端向業務服務器發起創建直播房間的請求。緊接著業務服務器通過服務端SDK發起創建直播流的請求,實時流網絡(LiveNet)把返回的JSON返回給業務服務器,業務服務器返回給采集端并把播放地址記錄在本地。最后,直播采集端獲取到JSON后推流給LiveNet,整個過程中業務服務器不需要承擔流媒體流量。采集端的邏輯圖見圖7。

圖7 直播采集端邏輯
具體直播調用實現代碼為:
{
"credentials": {
"accessKey": "
"secretKey": "
},
"id": "z1.Realaddress-1.class-99" //用戶直播間ID
"createdAt": "2016-11-24T14:23:33.474Z" //創建新直播間
"updatedAt": "2016-11-24T14:23:33.474Z" //直播間更新時間
"title": "class-99", //直播間名稱
"hub": "Realaddress-1",
"publishKey": "a32498a5f43a7237",
"publishSecurity": "static",
"disabled": false,
"profiles": null,
"hosts": {
"publish": {
"rtmp": "test-publish.Realaddress.cn" //發布直播推流地址
},
"live": { //直播中各種編碼格式對應的推流地址
"hdl": "test-live-hdl.Realaddress.cn",
"hls": "test-live-hls.Realaddress.cn",
"http": "test-live-hls.Realaddress.cn",
"rtmp": "test-live-rtmp.Realaddress.cn",
"snapshot": "test-live-snapshot.Realaddress.cn"
},
"playback": { //直播反饋地址
"hls": "100029c.playback1.z1.test.qiniucdn.com",
"http": "100029c.playback1.z1.test.qiniucdn.com"
},
"play": { //播放實時地址
"http": "test-live-hls.Realaddress.cn",
"rtmp": "test-live-rtmp.Realaddress.cn"
}
}
}
移動流媒體直播系統的核心功能是通過手機、平板電腦等移動終端的APP程序實現。移動流媒體直播系統界面見圖8。

圖8 系統界面
系統主要由以下9個功能組成[14]:
(1) 直播模塊。教師可以通過手機、平板電腦等移動終端進行課程直播,學生通過手機、平板電腦及PC端實時收看教師的課程直播。直播期間,教師可以設置連麥功能,在教師直播期間,允許與一位或多位學生進行實時音視頻互動,其他學生能同步觀看到該互動過程。
(2) 直播瀏覽。學生用戶瀏覽正在直播的教師列表,根據觀看人數、直播課程類別等分類方式,進行有選擇的觀看直播。在默認直播狀態下,學生在直播界面可以發送即時消息顯示與教師和其他同學進行文字交流。在直播教師開放連麥功能時,可以申請與教師現場視頻互動,參與到課程教學中。
(3) 點播課程。系統對正在直播的課程同步實時錄制,并將錄制的視頻內容存儲在移動流媒體直播系統云服務平臺的對象存儲系統中。用戶在錯過直播時,通過該功能重新回看。
(4) 個人記錄。保存學生在觀看直播時實時寫下的學習筆記、課程內容要點記錄、視頻截圖等。
(5) 交流討論。在直播課程期間,學生可以添加同時觀看該直播課程的教師和其他同學為好友,在直播結束后,仍能通過軟件內置聊天功能進行關于教師課程內容和問題的交流討論。
(6) 用戶資料。用于設置用戶個人信息資料、修改個人圖像、綁定手機、修改登錄密碼、設置關注或取消關注課程、好友分類等操作。
(7) 系統設置。用戶設置教師開播信息提醒、直播視頻截圖、清理播放緩存、網絡狀態診斷等功能。
(8) 幫助模塊。針對使用移動流媒體直播系統中可能出現的各種問題,給出相對應的解決方法,并且可以通過搜索問題的關鍵詞,進行快速解決方案查詢。
(9) 退出模塊。結束程序進程,清空數據,正常退出程序。
用戶使用終端觀看直播視頻時,首先由在終端運行的APP播放端對業務服務器發起查詢房間列表請求,獲取所有房間的播放地址;在用戶選擇指定的直播房間后,播放端根據終端的類型自動選擇相匹配的流媒體編碼格式,通過播放地址播放流媒體,業務服務器只負責房間創建及調度,不需要承擔流媒體流量,可以更好的保證直播相關業務的順利執行[15]。播放端邏輯見圖9。

圖9 直播播放端邏輯
播放端具體實現代碼如下:
{
"publish" "rtmp://test-publish.Realaddress.cn/Realaddress-1/class-1?key=0ec27ba231c0a90c",
"play": { //播放端從業務服務器中獲取到的播放地址列表
"ORIGIN": "rtmp://test-live-rtmp.Realaddress.cn/Realaddress-1/class-1"
},
"id": "z1.Realaddress-1.class-1" //獲取直播間ID
"title": "class-1" //直播間名稱
}
根據系統設計方案,對系統進行各種直播條件和網絡環境下的測試,完善移動流媒體直播系統代碼,進行推流、轉碼的相關參數調整。
教師在授課前開啟直播軟件并設置相關直播信息后,進行直播。直播中,直播界面顯示實時視頻、直播節目名稱、實時觀看人數。教師可以打開或者關閉發送文字消息功能。有選擇的查看觀眾發送的實時文字消息。直播界面見圖10。教師開啟連麥功能后,可以有選擇的與申請連麥的學生進行視頻交流,學生觀眾的視頻以小窗口模式顯示,與教師進行面對面的交流互動,該過程可以同時被其他觀看直播的同學所看到。連麥界面見圖11。
以Android平臺端為例,進行弱網優化測試。測試中使用ATC弱網測試工具,該工具能夠利用Wi-Fi網絡模擬移動網絡環境,并可以快速切換,可控制帶寬、時延抖動、丟包率、錯包率、包重排[16]。從而實現對智能手機和App在不同應用環境下的性能表現進行測試。分別模擬移動終端在3G網和好網下10%丟包率的網絡環境下進行直播,并用專用軟件SrsPlayer播放,查看播放效果、統計卡頓次數。在該測試模式下,系統流暢度為97.61%,卡頓4次。優于目前主流直播軟件的流暢度91.18%和卡頓次數9次。弱網優化測試結果界面見圖12。

圖10 直播界面圖11 連麥界面

圖12 測試模式:普通網絡模式下結果對比
本文提出的基于多終端的移動流媒體直播系統采用最新的云服務平臺技術進行開發,具有部署時間短、成本低、自適應多平臺、高實時性和交互性的特點。文章首先分析移動流媒體直播的特征以及當前移動直播存在的問題,然后探討云服務平臺環境下移動流媒體直播系統設計的依據和方法,最后根據分析設計并實現基于多終端的移動流媒體直播系統,并對平臺中的關鍵技術實現進行詳細說明。
科學技術的每一次進步都會給人們的學習和生活帶來顯著影響?;诙嘟K端的移動流媒體直播系統的發展,帶來教育技術和教育手段的革新。逐漸完善的移動流媒體直播技術將不斷地推動移動教育向前發展,將成為未來移動教育的一個重要手段。隨著校園高速無線局域網絡的建設和移動4G網絡覆蓋范圍的擴大,基于多終端的移動流媒體直播系統將具有廣闊的應用前景。