本文來自騰訊雲技術沙龍,本次沙龍主題爲在線教育個性化教學技術實踐 web
演講嘉賓:郭卓惺 | 騰訊視頻雲終端技術中心
隨着在線教育覆蓋面的增長,互動課堂授課方式正在向多樣化發展,爲了適應新形式的發展,騰訊視頻雲推出了全平臺覆蓋的互動課堂解決方案。爲客戶打通了直播、實時音視頻、點播、存儲、白板、IM、AI等多個業務場景,提供了全方位的paas層能力。尤爲是得益於小程序和H5的快捷性,互動課堂解決方案更是在須要快速體驗課程的場景下具備獨到優點。算法
你們下午好,我叫郭卓惺,是騰訊雲互動課堂的負責人,在騰訊一直負責音視頻相關的業務。以前作過互動直播,並與新東方等教育機構有一些技術上的交流。今天我將從如下幾點講講互動課堂的方案,首先講在線教育需求原型,而後講一下騰訊給出的互動課堂方案,接下來說一下音視頻能力和白板、文檔能力,最後講一下怎麼樣用咱們的解決方案進行快速上手。小程序
首先講一下市場需求原型。由於我是技術人員,因此我只簡單列舉了一下市場上教育的原型,如點播類的教學,說簡單點就是錄一段視頻,經過一個平臺或者一個網站進行分享。咱們以爲這種方案有很差的地方,它缺少互動,沒有實時性。而如今比較好的1V1教學和小班教學,經過直播的方式去擴散,推到各個教室或者各個學生端,直接實時進行互動。還有純直播類型的萬人公開課,相似於秀場直播同樣,老師在上面講,把流所有推出去,這種互動性少一點,可是要求覆蓋率和穩定性比較高。去年雙師課堂比較火,但雙師課堂在技術上來說跟1V1和小班教學是一個類型的,實際上它是兩路流,在技術上來講並非一個新技術。我講的是雲端技術,並非硬件,硬件確定要搭不少東西。緩存
簡單來說,教師端將音視頻能力快速推到各個地方的學生,容許一路學生把本身的視頻流跟老師進行互動,這就是簡單的1V1教學。若是是小班教學和雙師課堂,教師也須要看到全部學生的視頻流,這就是騰訊雲如今所提供的能力。咱們舉個案例,不少人須要有課件,系統須要把課件分享到各個端,將PPT轉成圖片進行分享。這些原型完了以後,騰訊雲主要提供的是三個能力,實時音視頻互動能力、白板文檔能力和消息的能力。除了這三個以外,還須要回放,就是將一節課的內容記錄下了,錄成一個MP4或者其餘的音視頻類型,後期學習、評估。除了這三個大方向以外,還涉及到技術點有不少,包括白板、存儲、直播、混流、錄製等能力,咱們把這些能力抽出來,給客戶提供一個完整的解決方案。服務器
音視頻這塊,作在線教育,確定是但願將教師講課的內容迅速推到各個端,因此音視頻互動的能力是最重要的。簡單來講,老師端經過SDK,將流導入騰訊雲後臺。音視頻的數據流導到各個學生端,快速將內容分享出去。騰訊雲最近剛剛推出來的針對互動教育的一個SDK,這個SDK就是擁有了音視頻能力和白板能力,以及錄製回放的能力。若是你是一家作在線教育的公司,你如今作的事情就是綠色的部分,綠色的就是你如今要作的事情,藍色的是騰訊已經提供的能力,您拿了這個SDK之後,就會有音視頻能力、白板能力、錄製視頻能力。你推到騰訊雲,騰訊雲幫你作擴散。微信
重點介紹一下音視頻能力。咱們最先起源於QQ多人語音視頻,它服務了12億分鐘,服務了300家客戶。實時音視頻是最先針對教育行業的,由於它端對端的延遲比較低,連麥延遲也比較低。它有三大特色,第一是穩定,它已經通過了QQ的考驗了,也把能力開放出去服務了這麼多客戶,它很穩定。第二,快。如今我獲得的數據,從視頻的預處理到編碼、傳輸,經過極速模式加速推出去,到學生端看的數據最快能夠達到200毫秒左右。三,全平臺覆蓋,咱們是騰訊,自然支持小程序、H5。網絡
這是咱們開放出來以後支持的客戶,包括快手的連麥,包括本身內部的客戶、外部的客戶、作教育的客戶。強調一下實時音視頻的快區別於其餘家的快。第一,它是私有協議,而不是傳統的推流協議,而是私有UDP協議。第二,咱們自建的核心網絡,咱們有1200多個節點,200多個海外節點。第三,由於咱們是私有協議,爲了把這個流快速分享給微信,分享給標準協議,咱們作了一套轉碼系統,能夠兼容H5和小程序。這是傳統作直播須要用到的協議,有RTMP、HLS,它們都是基於TCP,因此它們有一個特色比較慢,不太適合作強互動的內容。咱們改進後的協議差很少是200毫秒的延遲左右,如今走DC直聯的話,如今經過加速鏈路的話會很是快。併發
咱們使用的是UDP的協議,它有沒有弊端?必然有的。TCP是最穩定的協議,丟包以後會大量重傳,而UDP並無這個機制,丟包就丟包了。因此若是沒有QoS質量保證,音視頻沒有辦法聽,丟了大量的數據,對面收的數據是不完整的。咱們在騰訊雲內部作了不少事情,首先咱們作了FECW前置校準,也就是在發送端先冗餘了一些包,若是接收端發現丟包了,能夠經過冗餘的包,經過差分算法,將丟失的包補出來,我不須要從新請請求一次,讓他把包發過來,這樣避免重傳。爲了質量穩定性。因此咱們在UDP的基礎上,補作了丟包重傳的機制。框架
而後是信源的保證。一個音視頻的幀是由I幀和P幀構成的,它送到編碼器以後,是從I幀、P幀送給編碼器,造成一系列的視頻動做。傳統的作法有一個巨大的弊端,其中一個P幀丟了,後面的P幀沒有辦法用了,由於這個P幀是參考前面的P幀。若是這一幀丟了,後面全部幀都沒有用。咱們作了一下改進,作了好幾個SP幀,因此單純的一個SP幀是參考前置的SP幀。若是一個SP幀丟了,是沒有影響的。後面是參考新的SP幀。因此這個對抗丟包性,作了大大的增強。佈局
當你在網絡很差的狀況下,服務器會自動下降幀率,調整本身的發動策略。經過咱們的流動策略,經過RDT協議,上傳到CDN。接收端也同樣,經過CDN擴到最近的一個節點,傳到的學生端,作延遲修正,作編碼解碼和渲染。
爲了保證客戶端達到足夠快的策略,咱們作了不少工做。咱們最核心突出的是目前快。但其餘方面咱們還作了自適應網絡抖動,當您的下行丟包率超過65%的時候,咱們保證聲音是基本穩定的。上行丟包35%也一樣如此。咱們支持25fps、720p的配置。咱們有首幀秒開功能,是指咱們在最近的服務器上面緩存了上次的數據,你再進的時候,會拉到上次的畫面,讓你感受到第一畫面不是黑屏。
咱們還作了一些避免擁塞的策略,能夠保證本身的流可以穩定地向外輸出。咱們作了不少跟質量相關的監控,能夠實時看到當前用戶的音頻質量、視頻質量、丟包率、CPU等信息。如今咱們來說講的是咱們搭建的核心節點的框架。騰訊雲這邊的音視頻是按照兩種結構走的,DC表明核心節點,OC是邊緣節點。因此DC通常部署在離三大運營商近的地方,它的連通率是4個9,而OC差一點,通常只有2個9。因此標準的直播鏈路是這樣走,先走最近OC,而後再走DC,而後經過跟相關的DC值連,而後再經過邊緣節點擴散。這樣的話鏈路很是長。咱們如今作的加速鏈路,上行的UDP的包,直接找到最近的OC,而後直通光纖,這樣速度會節省不少。在互動課堂這塊最重要的就是互動的延時比較多,不少在作在線教育的時候,傳統的問題延遲太大了。講課都講了兩三秒了,你才能看到,很難作互動。視頻和白板數據是挺快的,你給學生說,答一下如今白板的題。你的聲音尚未過去,白板的數據已通過去,徹底不一樣步,他可能還沒想到問題,這是一個徹底不一樣步的狀態。
在視頻互動這塊,A的主播剛剛經過保證上行流量的狀況下直聯到B,B的連麥用戶,也是直聯到A。可是B是連麥觀衆,優先級並無B這麼高,僅僅能保證音頻。爲了兼容分發,若是你是觀衆,你看他們兩個聊天,同時去拉這兩路流過來,這樣你的帶寬成本很高。因此咱們作了雲端混流,咱們騰訊雲內部實時把這兩路流混成一個標準協議,你能夠拉出來,只有一路流的方式。全部觀衆就能夠經過一路流來看他們兩我的的聊天。
這是一個老師經過學生端,在騰訊雲互動課堂上的解決方案。老師推流到騰訊雲,騰訊雲首先作了一個Upload集羣,轉碼,轉成標準協議,而後再CDN擴散。若不走轉碼,能夠直接走點播系統。爲了簡化設置,咱們開發了一套web配置頁面,好比你要配置它的碼率、分辨率、幀率,均可以控制。這就是實時音視頻的解決方案。
小程序這塊音視頻技術咱們自然支持,小程序在騰訊雲內部走的協議是RTP協議,webrtc走的協議是H5,H5走的協議是RPCP。咱們的協議用的是UDP,因此咱們在騰訊雲內部,實際上已經作好了轉碼。由於房間內的轉碼,就是房間內的權限、管理、狀態,騰訊已經作好了對兩個標準協議的支持。雖然是直聯協議,可是您能夠把直聯協議分享給微信,也能夠分享給H5。咱們的音視頻質量相對而言,比較穩定,抗丟包率超過了30%,抗800毫秒的網絡抖動,支持百萬級的超大規模的房間,支持千萬級的併發,如今是全平臺覆蓋。
白板和文檔如今是獨立的模塊,也就是跟音視頻沒有關係的。它走的是暗的通道,白板是畫一些座標點,如是TTP,它把先TTP轉到騰訊雲上面,把文檔上傳上去,騰訊雲給你轉碼成圖片列表,再加上你畫的線、塗鴉數據,直接在通道進行傳送。這個消息通道也是騰訊雲內部提供的,能夠分享到通道內部的全部人。爲了不後進的人沒有數據,咱們把數據保存到騰訊雲,後進人的數據能夠直接經過騰訊雲直接拉取歷史數據。
咱們的白板不只支持力度是塗鴉、文檔,提供一個獨立的通道,也支持回放。剛剛劉總問咱們白板和音視頻有沒有混在一塊兒?目前咱們在作這個事情,可是離正式商用仍是須要你們在等待一段時間。一個PPT,我能夠把PPT每頁轉成一個圖片,再分享出去。教師端主要的流程是採集、編碼、序列化,採集的點進行壓縮,經過消息通道發送出去。而學生端則是解壓、解碼、反序列化。這塊採集的點是座標點,因此咱們的JDI相對而言比較大,咱們須要作必定程度上的壓縮。
其實作白板這塊有不少技術上的問題,第一個是大小屏幕不同,由於有些用PC,有些用平板。還有單筆的連貫性,就是你畫的時候,那邊不一樣步走。還有亂序的問題,由於數據傳輸過程當中有亂序,因此咱們要作亂序重排的方案。還有文檔預覽,只有白板這塊是沒有意義的,要把文檔傳遞出去纔有意義。最重要的,若是大家本身有白板,你接別人的音視頻,你怎麼確保視頻和音頻的同步呢?因此實時性的保證也是很關鍵的。我作了座標規劃解決第一個問題,咱們取的座標點並非絕對點,而是全部點咱們都作了相對於左上中心點角的座標規劃,若是它是X軸,就除以它的寬度、除以1萬,Y軸也是同樣。全部的屏幕都是16:9。
爲了達到連貫效果,這邊畫一筆出去以後,若是畫很長時間不鬆筆,你平移,UP事件是擡起來的。以前咱們的作法在於UP的時候把採集的數據往外發。這樣會致使,第一你的數據點過大,你的解壓和壓縮、對數據通道的承壓能力有挑戰。由於畫很長的過程當中,對方看不到,你只有鬆開對方纔能看到,因此咱們作了不少處理。咱們當時把這個事件發出去,平移的過程當中,採集平移的數據點進行壓縮,定時發送。因此您基本上能夠看到是一個實時的過程,我這邊畫一點,那邊能夠看到畫一點。這邊的採集的時間定時差很少200毫秒左右。
同步性。我畫的時候,你也在畫,那白板怎麼處理呢?咱們能夠支持三五我的同時畫。咱們的處理很簡單,全部的數據到了先緩存,緩存收到以後並不馬上畫,仍是有一個定時的機制。因此數據來了先存緩存,存完緩存以後定時去拉去,就會展現的跟全部人數據都是同步的,同時咱們也把數據傳一份到騰訊雲。
文檔。文檔是藉助於內部騰訊雲的轉碼,就是COS,COS本質工做把東西傳上去。它提供了一個全部文檔的轉碼,當咱們把文檔上傳到COS,COS會通知前助處理,告訴前助處理通知轉碼服務進行轉碼。轉碼以後,它會拉這邊的PPT,進行PPT的轉碼,而後再寫回一個COS。下面有流程,上傳PPT、通知SCF,轉碼服務。
這是咱們針對教育行業學生注意力的檢測,這也是一個預研的方案,如今尚未推出來。咱們會採集學生的特徵點,根據特徵的算法,去判斷他有沒有看屏幕。全部的數據蒐集到注意力曲線進行判斷,判斷這個學生對這門課的判斷是如何。
最後講一下快速上手,只須要三步。第一步,開通騰訊雲的服務,拿到鑰匙。第二,集成TICSDK。第三,業務後臺接入騰訊雲服務。把這二者結合一下,打造你本身的在線教育課堂,由於每一個人的需求是不同的,但這是一個技術。
拿到SDK之後,四到五步,就能夠把畫面和互動的東西描述出來。首先是登陸,而後建立一個課堂,加入一個課堂。讓對方打開攝像頭,連麥過來,你把流推出去,進行一些塗鴉,最後是退出課堂。
這是一個比較簡化的解決方案。咱們把音視頻推給騰訊雲,騰訊雲幫你作轉碼和文檔的轉碼和一些錄製。把流推給對應的學生端。業務方須要取得錄製文件,直接調熱接口,這是一個簡化圖,真實狀況還要複雜。
如今SDK整合了好幾個能力,這是音視頻能力、消息能力、白板能力和文檔轉碼能力,藍色部分是咱們提供的。綠色的是如今要去解決的,首先要看怎麼拿到鑰匙,而後是課堂管理。咱們實際上是無論課堂的,咱們只有一個小羣組,咱們不維護課堂。而後佈局、登陸等等,這樣事情要作。
獲取更多詳細資料,請戳如下連接:
互動課堂的搭建實例及相關領域應用-郭卓惺.pdf
問答
如何選擇移動直播和互動直播?
相關閱讀
周錦民:騰訊在線教育視頻互動直播間技術實踐
劉連響:小程序實時音視頻在互動場景下的應用
楊婷:騰訊雲在線教育解決方案分享
此文已由做者受權騰訊雲+社區發佈,原文連接:https://cloud.tencent.com/dev...
歡迎你們前往騰訊雲+社區或關注雲加社區微信公衆號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~