孫 恒
(山東大學(xué) 外國語學(xué)院 現(xiàn)代教育技術(shù)實驗室,濟南 250100)
伴隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展和移動網(wǎng)絡(luò)服務(wù)質(zhì)量的逐步改善。移動互聯(lián)網(wǎng)在我國快速發(fā)展、移動用戶數(shù)量迅猛增長。移動互聯(lián)網(wǎng)改變?nèi)藗兊膶W(xué)習(xí)生活方式,傳統(tǒng)PC端架構(gòu)的互聯(lián)網(wǎng)應(yīng)用逐漸向移動端轉(zhuǎn)化,用戶通過便攜式移動終端設(shè)備訪問網(wǎng)絡(luò)進行學(xué)習(xí),適用于移動學(xué)習(xí)的應(yīng)用逐漸增多。目前,主流網(wǎng)絡(luò)公開課等學(xué)習(xí)教育只提供點播和單向直播功能,教師與學(xué)生不能進行有效、實時交流互動。相比固定的直播在線課程而言,移動流媒體直播擁有更高的實時性和互動性,教師與學(xué)生之間能夠?qū)崟r溝通交流,帶來更好地學(xué)習(xí)體驗[1]。
在移動流媒體直播平臺開發(fā)和建設(shè)方面,國內(nèi)外學(xué)者進行大量的研究工作。趙學(xué)銘[2]設(shè)計一種基于HTML5的交互式移動學(xué)習(xí)平臺,實現(xiàn)交互式學(xué)習(xí),但是無法實現(xiàn)師生課堂互動。吳海巍[3]實現(xiàn)基于流媒體技術(shù)的移動視頻直播系統(tǒng),僅支持蘋果的iOS操作系統(tǒng),對Android等操作系統(tǒng)兼容性欠缺。周東光[4]開發(fā)的基于移動終端的教學(xué)直播系統(tǒng),只是單向直播并且對網(wǎng)絡(luò)的直播延遲沒有調(diào)整調(diào)度解決方案。
通過對以上研究工作進行整理分析,設(shè)計并實現(xiàn)一種基于多終端的移動流媒體直播系統(tǒng)。系統(tǒng)使用多種終端作為直播端采集信息,流媒體在云服務(wù)平臺進行編碼轉(zhuǎn)換,并向最終用戶推送,用戶可以通過各種終端觀看直播。
(1) 移動流媒體直播技術(shù)。移動流媒體直播相對于傳統(tǒng)的固定式錄播教室,具有易部署、直播實時性強的特點。能靈活方便地用于課程教學(xué)、專家講學(xué)、校外講學(xué)等各類教學(xué)場景。移動流媒體直播系統(tǒng)通常包含采集、編碼、媒體推流、網(wǎng)絡(luò)分發(fā)、拉流和終端用戶等六個環(huán)節(jié)。移動直播工作流程見圖1。
圖1 移動直播工作流程
采集是整個移動流媒體直播過程中的第一個環(huán)節(jié),它從手機等移動終端的前置或后置攝像頭采集獲取原始視頻數(shù)據(jù),將其輸出到下一個環(huán)節(jié)。編碼環(huán)節(jié)由于iOS端硬件兼容性較好,可以直接采用設(shè)備硬編;而Android系統(tǒng)的硬件機型較多,則使用軟編。音視頻編碼在移動終端處理完成后,通過推流協(xié)議推送至服務(wù)器端,并通過內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,CDN)進行分發(fā)。用戶移動終端通過從CDN拉取音視頻編碼,將不同封裝格式的音視頻進行解包和內(nèi)容解碼,然后把解碼后的視頻交給操作系統(tǒng)進行渲染,最終讓終端用戶看到主播端的音視頻[5]。
(2) 移動流媒體直播云服務(wù)技術(shù)。傳統(tǒng)的流媒體直播系統(tǒng)開發(fā)耗費大量人力財力和時間,用戶需要購置服務(wù)器、選擇服務(wù)器托管機房,同時進行流媒體直播系統(tǒng)構(gòu)建、轉(zhuǎn)碼和存儲等相關(guān)技術(shù)的研發(fā),以及隨之而來的巨額帶寬使用費。在直播系統(tǒng)建成使用過程中,經(jīng)常會出現(xiàn)網(wǎng)絡(luò)故障導(dǎo)致流媒體直播系統(tǒng)無法正常工作的情況。
隨著基于云服務(wù)的應(yīng)用不斷普及,云服務(wù)平臺可以提供強大功能和高安全保障,降低運維成本和應(yīng)用開發(fā)難度。目前,云服務(wù)有3種服務(wù)模式分別是基礎(chǔ)設(shè)施即服務(wù)(Infrastructure as a Service,IaaS)、平臺即服務(wù)(Platform as a Service,PaaS)、軟件即服務(wù)(Software as a Service,SaaS)[6]。其中,IaaS供給消費者的服務(wù)是對所有設(shè)施的利用,包括處理器、網(wǎng)絡(luò)和其它基本的計算資源,用戶能夠部署和運行任意軟件,包括操作系統(tǒng)和應(yīng)用程序。PaaS實際上是指將軟件研發(fā)的平臺作為一種服務(wù),客戶不需要管理底層的云基礎(chǔ)設(shè)施,包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲等,但能控制部署的應(yīng)用程序。SaaS提供給客戶的服務(wù)是運行在云計算基礎(chǔ)設(shè)施上的應(yīng)用程序,用戶可以在各種設(shè)備上通過客戶端界面訪問。
系統(tǒng)設(shè)計開發(fā)過程中,采用云服務(wù)平臺作為基礎(chǔ)底層架構(gòu)。移動流媒體直播系統(tǒng)開發(fā)人員僅對主播端和播放端進行開發(fā)。云服務(wù)平臺提供其他系統(tǒng)開發(fā)必須的軟硬件環(huán)境,提高系統(tǒng)開發(fā)效率[7]。云服務(wù)平臺采用PaaS服務(wù)模式,通過平臺提供的軟件開發(fā)工具包(Software Development Kit,SDK)可以快速搭建直播平臺及應(yīng)用。移動流媒體直播云服務(wù)平臺采用“采集推流SDK—直播云服務(wù)平臺SDK—播放端SDK”模式,采集端從直播源獲取視頻并推送到服務(wù)端,服務(wù)端進行轉(zhuǎn)碼、加密、添加水印、生成縮略圖等處理,由播放端進行播放。云服務(wù)平臺架構(gòu)見圖2。
圖2 云服務(wù)平臺架構(gòu)
移動流媒體直播系統(tǒng)是一個整體的媒體傳播應(yīng)用方案,采用分層模塊化設(shè)計可以保證系統(tǒng)架構(gòu)具有良好的穩(wěn)定性和擴展性[8]。模塊化設(shè)計使系統(tǒng)既有功能的獨立性又有接口的一致性,不斷通過升級自身性能來提高整體性能和可靠性,而不會影響到其他模塊。系統(tǒng)中各個模塊相對獨立地設(shè)計和發(fā)展,進行并行設(shè)計、開發(fā)和并行試驗、驗證。模塊的不同組合能滿足多樣性需求,通過模塊化設(shè)計能提供更好的業(yè)務(wù)方接入方式,解決移動流媒體直播中代碼耦合性高、出現(xiàn)故障不容易及時排除等問題。
整個系統(tǒng)自下而上分為4個模塊層次:基礎(chǔ)支撐層、服務(wù)層、應(yīng)用層、展現(xiàn)層。每層提供不同的功能,通過模塊接口與相鄰層保持關(guān)聯(lián)?;A(chǔ)支撐層提供系統(tǒng)底層的運行環(huán)境和支撐保障,實時流網(wǎng)絡(luò)、數(shù)據(jù)處理、存儲和深度學(xué)習(xí)是保證系統(tǒng)正常運行的基本條件。服務(wù)層保證各個功能實現(xiàn),視頻直播模塊提供直播接入、直播管理、直播錄制、直播回看等整套的直播流程服務(wù)?;A(chǔ)服務(wù)模塊提供直播相關(guān)的基礎(chǔ)工作包含用戶資料維護、直播間管理、信令服務(wù)、連麥服務(wù)、服務(wù)調(diào)度等。業(yè)務(wù)模塊包含留言系統(tǒng)、業(yè)務(wù)排行、用戶推薦、關(guān)注體系等與直播直接相關(guān)聯(lián)的應(yīng)用等。應(yīng)用層通過引入服務(wù)層的相關(guān)模塊接口,向上一層提供系統(tǒng)化接口實現(xiàn)目錄接入、音視頻接入、通用網(wǎng)關(guān)接口(Common Gateway Interface,CGI)等。展現(xiàn)層通過移動終端APP和HTML5的自適應(yīng)頁面這兩種方式,將直播顯示到最終用戶面前,真正實現(xiàn)自適應(yīng)化的多終端直播系統(tǒng)[9]。系統(tǒng)體系見圖3。
移動流媒體直播系統(tǒng)的直播端和客戶端通過各種網(wǎng)絡(luò)與直播云服務(wù)平臺進行視頻流通信,物理架構(gòu)見圖4。智能手機、平板電腦、PC攝像頭、錄像機等各種終端都可作為直播端,通過攝像頭采集直播視頻,將視頻流使用RTMP等相關(guān)協(xié)議推送至直播云服務(wù)平臺進行媒體編碼轉(zhuǎn)換等工作。在云服務(wù)平臺中,通過實時轉(zhuǎn)碼服務(wù)集群、直播API服務(wù)集群、多媒體存儲集群等實現(xiàn)相關(guān)媒體編碼、存儲等工作。經(jīng)過處理的視頻通過云平臺CDN進行分發(fā),可以根據(jù)直播需求自動適應(yīng)高延遲和高并發(fā)、低延遲和高互動這兩種場景。用戶使用云服務(wù)器對直播過程進行創(chuàng)建直播、推流地址控制、播放控制和直播流授權(quán)管理等操作。平臺中的自動服務(wù)質(zhì)量調(diào)度中心,保證整個直播網(wǎng)中的節(jié)點和線路在出現(xiàn)異?;蛘吖收蠒r,可以立刻被新的節(jié)點和線路自動替換,提高網(wǎng)絡(luò)的容錯性和健壯性[10]。
圖3 系統(tǒng)體系結(jié)構(gòu)圖
圖4 移動直播系統(tǒng)物理架構(gòu)
移動流媒體直播系統(tǒng)最主要的模塊是直播模塊,因此將直播模塊作為重點設(shè)計對象[11]。移動直播系統(tǒng)直播流程見圖5。教師主播使用手機、平板電腦等移動終端啟動直播程序,系統(tǒng)自動檢測移動終端的音視頻硬件配置。如果沒有發(fā)現(xiàn)適合直播的硬件配置,則在直播終端提示硬件檢測失敗,并退出程序;若通過硬件檢測,則啟動移動終端內(nèi)置攝像頭和麥克風(fēng)采集、合成音視頻,并推流至移動流媒體直播云服務(wù)平臺。如果推流失敗,則給出提示并且顯示錯誤故障代碼;若推流成功,則在移動流媒體直播云服務(wù)平臺中進行音視頻多碼率轉(zhuǎn)碼、內(nèi)容智能分發(fā)、直播視頻實時錄制和存儲等工作??蛻舨シ哦藦脑品?wù)平臺進行拉流觀看,如果拉流失敗,則給出信息提示,并且再次重新嘗試;若拉流成功,則將從云服務(wù)平臺端處理完畢的多碼率數(shù)據(jù)流拉送至客戶播放端,由播放端自適應(yīng)播放,從而完成整個移動流媒體直播流程。
圖5 移動直播系統(tǒng)直播流程
移動流媒體直播對于視頻傳輸?shù)膶崟r性有嚴(yán)格要求,在移動網(wǎng)絡(luò)下GPRS、3G、4G切換時,需要耗費大量網(wǎng)絡(luò)帶寬,導(dǎo)致高清晰度的內(nèi)容無法發(fā)送。這時,需要根據(jù)帶寬的狀況來及時調(diào)整碼率、畫面每秒傳輸幀數(shù)(Frame Per Second,F(xiàn)PS)和分辨率,執(zhí)行不同的編碼推流策略[12]。
為保證直播的實時性,在網(wǎng)絡(luò)帶寬不足或者上行速度不佳的情況下,需要在流暢度和清晰度之間做出選擇。選定分辨率后,在推流過程中分辨率不會變更,但碼率和FPS可以調(diào)節(jié),直播效果相關(guān)聯(lián)系見圖6。每一種編碼推流策略都會被存儲在云服務(wù)平臺的策略庫中供其他用戶調(diào)用[13]。
圖6 直播效果相關(guān)聯(lián)系
直播端通過APP實現(xiàn)對服務(wù)器和其中的直播業(yè)務(wù)邏輯操作,首先直播采集端向業(yè)務(wù)服務(wù)器發(fā)起創(chuàng)建直播房間的請求。緊接著業(yè)務(wù)服務(wù)器通過服務(wù)端SDK發(fā)起創(chuàng)建直播流的請求,實時流網(wǎng)絡(luò)(LiveNet)把返回的JSON返回給業(yè)務(wù)服務(wù)器,業(yè)務(wù)服務(wù)器返回給采集端并把播放地址記錄在本地。最后,直播采集端獲取到JSON后推流給LiveNet,整個過程中業(yè)務(wù)服務(wù)器不需要承擔(dān)流媒體流量。采集端的邏輯圖見圖7。
圖7 直播采集端邏輯
具體直播調(diào)用實現(xiàn)代碼為:
{
"credentials": {
"accessKey": "
"secretKey": "
},
"id": "z1.Realaddress-1.class-99" //用戶直播間ID
"createdAt": "2016-11-24T14:23:33.474Z" //創(chuàng)建新直播間
"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" //發(fā)布直播推流地址
},
"live": { //直播中各種編碼格式對應(yīng)的推流地址
"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"
}
}
}
移動流媒體直播系統(tǒng)的核心功能是通過手機、平板電腦等移動終端的APP程序?qū)崿F(xiàn)。移動流媒體直播系統(tǒng)界面見圖8。
圖8 系統(tǒng)界面
系統(tǒng)主要由以下9個功能組成[14]:
(1) 直播模塊。教師可以通過手機、平板電腦等移動終端進行課程直播,學(xué)生通過手機、平板電腦及PC端實時收看教師的課程直播。直播期間,教師可以設(shè)置連麥功能,在教師直播期間,允許與一位或多位學(xué)生進行實時音視頻互動,其他學(xué)生能同步觀看到該互動過程。
(2) 直播瀏覽。學(xué)生用戶瀏覽正在直播的教師列表,根據(jù)觀看人數(shù)、直播課程類別等分類方式,進行有選擇的觀看直播。在默認(rèn)直播狀態(tài)下,學(xué)生在直播界面可以發(fā)送即時消息顯示與教師和其他同學(xué)進行文字交流。在直播教師開放連麥功能時,可以申請與教師現(xiàn)場視頻互動,參與到課程教學(xué)中。
(3) 點播課程。系統(tǒng)對正在直播的課程同步實時錄制,并將錄制的視頻內(nèi)容存儲在移動流媒體直播系統(tǒng)云服務(wù)平臺的對象存儲系統(tǒng)中。用戶在錯過直播時,通過該功能重新回看。
(4) 個人記錄。保存學(xué)生在觀看直播時實時寫下的學(xué)習(xí)筆記、課程內(nèi)容要點記錄、視頻截圖等。
(5) 交流討論。在直播課程期間,學(xué)生可以添加同時觀看該直播課程的教師和其他同學(xué)為好友,在直播結(jié)束后,仍能通過軟件內(nèi)置聊天功能進行關(guān)于教師課程內(nèi)容和問題的交流討論。
(6) 用戶資料。用于設(shè)置用戶個人信息資料、修改個人圖像、綁定手機、修改登錄密碼、設(shè)置關(guān)注或取消關(guān)注課程、好友分類等操作。
(7) 系統(tǒng)設(shè)置。用戶設(shè)置教師開播信息提醒、直播視頻截圖、清理播放緩存、網(wǎng)絡(luò)狀態(tài)診斷等功能。
(8) 幫助模塊。針對使用移動流媒體直播系統(tǒng)中可能出現(xiàn)的各種問題,給出相對應(yīng)的解決方法,并且可以通過搜索問題的關(guān)鍵詞,進行快速解決方案查詢。
(9) 退出模塊。結(jié)束程序進程,清空數(shù)據(jù),正常退出程序。
用戶使用終端觀看直播視頻時,首先由在終端運行的APP播放端對業(yè)務(wù)服務(wù)器發(fā)起查詢房間列表請求,獲取所有房間的播放地址;在用戶選擇指定的直播房間后,播放端根據(jù)終端的類型自動選擇相匹配的流媒體編碼格式,通過播放地址播放流媒體,業(yè)務(wù)服務(wù)器只負(fù)責(zé)房間創(chuàng)建及調(diào)度,不需要承擔(dān)流媒體流量,可以更好的保證直播相關(guān)業(yè)務(wù)的順利執(zhí)行[15]。播放端邏輯見圖9。
圖9 直播播放端邏輯
播放端具體實現(xiàn)代碼如下:
{
"publish" "rtmp://test-publish.Realaddress.cn/Realaddress-1/class-1?key=0ec27ba231c0a90c",
"play": { //播放端從業(yè)務(wù)服務(wù)器中獲取到的播放地址列表
"ORIGIN": "rtmp://test-live-rtmp.Realaddress.cn/Realaddress-1/class-1"
},
"id": "z1.Realaddress-1.class-1" //獲取直播間ID
"title": "class-1" //直播間名稱
}
根據(jù)系統(tǒng)設(shè)計方案,對系統(tǒng)進行各種直播條件和網(wǎng)絡(luò)環(huán)境下的測試,完善移動流媒體直播系統(tǒng)代碼,進行推流、轉(zhuǎn)碼的相關(guān)參數(shù)調(diào)整。
教師在授課前開啟直播軟件并設(shè)置相關(guān)直播信息后,進行直播。直播中,直播界面顯示實時視頻、直播節(jié)目名稱、實時觀看人數(shù)。教師可以打開或者關(guān)閉發(fā)送文字消息功能。有選擇的查看觀眾發(fā)送的實時文字消息。直播界面見圖10。教師開啟連麥功能后,可以有選擇的與申請連麥的學(xué)生進行視頻交流,學(xué)生觀眾的視頻以小窗口模式顯示,與教師進行面對面的交流互動,該過程可以同時被其他觀看直播的同學(xué)所看到。連麥界面見圖11。
以Android平臺端為例,進行弱網(wǎng)優(yōu)化測試。測試中使用ATC弱網(wǎng)測試工具,該工具能夠利用Wi-Fi網(wǎng)絡(luò)模擬移動網(wǎng)絡(luò)環(huán)境,并可以快速切換,可控制帶寬、時延抖動、丟包率、錯包率、包重排[16]。從而實現(xiàn)對智能手機和App在不同應(yīng)用環(huán)境下的性能表現(xiàn)進行測試。分別模擬移動終端在3G網(wǎng)和好網(wǎng)下10%丟包率的網(wǎng)絡(luò)環(huán)境下進行直播,并用專用軟件SrsPlayer播放,查看播放效果、統(tǒng)計卡頓次數(shù)。在該測試模式下,系統(tǒng)流暢度為97.61%,卡頓4次。優(yōu)于目前主流直播軟件的流暢度91.18%和卡頓次數(shù)9次。弱網(wǎng)優(yōu)化測試結(jié)果界面見圖12。
圖10 直播界面圖11 連麥界面
圖12 測試模式:普通網(wǎng)絡(luò)模式下結(jié)果對比
本文提出的基于多終端的移動流媒體直播系統(tǒng)采用最新的云服務(wù)平臺技術(shù)進行開發(fā),具有部署時間短、成本低、自適應(yīng)多平臺、高實時性和交互性的特點。文章首先分析移動流媒體直播的特征以及當(dāng)前移動直播存在的問題,然后探討云服務(wù)平臺環(huán)境下移動流媒體直播系統(tǒng)設(shè)計的依據(jù)和方法,最后根據(jù)分析設(shè)計并實現(xiàn)基于多終端的移動流媒體直播系統(tǒng),并對平臺中的關(guān)鍵技術(shù)實現(xiàn)進行詳細說明。
科學(xué)技術(shù)的每一次進步都會給人們的學(xué)習(xí)和生活帶來顯著影響?;诙嘟K端的移動流媒體直播系統(tǒng)的發(fā)展,帶來教育技術(shù)和教育手段的革新。逐漸完善的移動流媒體直播技術(shù)將不斷地推動移動教育向前發(fā)展,將成為未來移動教育的一個重要手段。隨著校園高速無線局域網(wǎng)絡(luò)的建設(shè)和移動4G網(wǎng)絡(luò)覆蓋范圍的擴大,基于多終端的移動流媒體直播系統(tǒng)將具有廣闊的應(yīng)用前景。