文/常潘
受奧密克戎變異毒株影響,上海各高校不得不在2022年春季學期以線上授課的方式開展教學活動。隨著畢業季的到來,按照傳統方式開展線下畢業典禮及相關活動已不現實,因此線上的虛擬畢業典禮成為首選。
本文將以上海紐約大學為例,介紹在疫情管控期間采用Zoom研討會方式實現全線上虛擬畢業典禮的方案設計和技術實現。
與傳統的現場畢業典禮直播不同,全線上虛擬畢業典禮的開展面臨很多挑戰。例如,無法為演講嘉賓準備專業的燈光、音效及背景設置等。
在策劃虛擬畢業典禮時,首先需要確定活動內容。
相較于傳統現場畢業典禮,虛擬畢業典禮沒有畢業生入場、教師代表入場和學位頒發等現場環節。同時,活動的參與人員包括待畢業學生及家長、學校教職工及低年級學生。根據往年現場參加畢業典禮的人數和在線觀看畢業典禮直播的人數,預計虛擬畢業典禮參與人數約為5000左右。學校傳統現場畢業典禮環節如圖1所示。
傳統的現場畢業典禮由畢業典禮籌備辦公室組織。在全線上虛擬畢業典禮中,上海紐約大學中美兩位校長、教務長以及特邀嘉賓致辭將采用線上直播方式,其他環節將采用預錄制的方式,整個活動由信息技術部門(以下簡稱IT)承擔虛擬導演角色并進行統一編排。
活動的形式決定了活動編排的重點是嘉賓直播以及各環節間的銜接。因此,我們為9位嘉賓都配備了IT服務人員,協助其進行麥克風和攝像頭的開或關,并為其編制了操作手冊。同時,在直播過程中,不同嘉賓會以中文或者英文發言,并且活動觀眾來自世界各地,因此我們基于演講稿在直播中通過字幕管理系統提供實時的翻譯字幕。除了這些預先的安排,在舉行活動時,所有支持人員還通過另一套電話會議服務進行溝通和協作,以進一步保障各環節的銜接。
考慮到師生日常使用Zoom進行在線教學和遠程會議,我們也選擇其作為虛擬畢業典禮的平臺。虛擬畢業典禮重點內容為嘉賓線上直播,還需要中美雙方校長在開幕式和閉幕式時同屏,因此我們推薦使用Zoom研討會(Webinar)方式。這種方式不僅可以有效分割演講嘉賓(Panelist)及觀眾(attendee),還能動態調整觀眾所見的嘉賓數量及視圖(View),從而提供良好的觀看效果。
我們通過開源軟件自建推流服務,將Zoom中的內容以直播的方式推送給虛擬畢業典禮的觀眾。因觀眾分布在全球多個國家及地區、帶寬情況各有不同,而Zoom在低帶寬環境中不能很好地處理高清視頻,所以我們采用將Zoom的觀眾界面推送到云端進行直播的方案。結合多年現場畢業典禮直播的經驗,IT選擇阿里云作為直播云平臺,在CDN(內容分發網絡)的支撐下,能為全球各地區的觀眾提供流暢的觀看體驗。
在全線上虛擬畢業典禮的實現方案中,IT除了扮演虛擬導演角色,還需要承擔制定技術路線并實施的任務。重點技術細節如下。
在Zoom中,可以通過人工或API輸入字幕。由于人工輸入存在速度、正確率等問題,我們選擇通過API輸入字幕。使用API向Zoom發送字幕時,需要在發送的HTTP POST請求中添加URL參數進行認證,其認證信息形如:
https://wmcapi.zoom.us/closedcaption?id=200610693&ns=GZHkEA==&expire=86400&sparams=id%2Cns%2Cexpire&signature=n YtXJqRKCW&seq=192&lang=zh-CN
其中,參數的含義及要求如表1所示。
真正的大數據是全面數據,全面數據的采集成本和采集難度會變大。大數據到底大到什么程度,只有掌握大數據的機構最清楚。大數據變化快,流動性強,這意味著大數據的采集需要頻繁進行,而頻繁采集同時又必然面臨隱私問題,每次采集都需要獲得用戶的同意。如果用戶不同意,數據采集質量就會受損,強行采集則面臨倫理困境。大數據是混亂的材料,大數據中真正有價值的還是經過提取之后的數據。

表1 URL參數添加要求及含義
除seq和lang參數外,其他參數都可以從Zoom的host管理配置界面中拷貝,也可以通過Zoom的API獲取。
在確定HTTP POST請求地址的基礎上,將字幕放到請求的body中,當Zoom接收到請求并認證成功后,研討會中的Panelist和Attendee的Zoom界面下方將會出現發送的字幕。
為實現字幕的動態推送,IT基于上述接口開發了字幕管理系統。該系統采用B/S架構,B端主要供字幕操作員輸入,包含Zoom房間管理、稿件管理和字幕操作三個模塊;S端負責接受并管理B端房間、翻譯稿件、字幕等信息,并向Zoom的API發送字幕。字幕管理系統流程如圖2所示。

圖2 字幕管理系統流程示意
另外,S端還負責保持多個B端之間的數據同步和發送字幕請求的一致性。為了避免單個字幕操作員存在的單點故障,系統允許在活動中配備多個字幕操作員,當他們發送同一條字幕時,因其序列號相同,S端將過濾掉重復的字幕發送請求。
為了給所有字幕操作員展示實時狀態信息,并且避免操作沖突,我們還對B端與S端的交互進行了優化,將B端和S端關于房間、稿件、字幕列表、緩存等數據的交互方式,由HTTP輪詢調整為WebSocket。在任意房間的操作員進行了數據操作時,S端會向所有該房間的操作員的B端發送廣播,收到消息的B端通過OnMessage方法調用前端JavaScript代碼更新這些操作員的B端,展示字幕操作狀態。
Zoom提供了一個測試版的直播服務,但該服務的推流并不穩定且目前沒有技術支持,因此我們采用自行搭建推流服務的方式。
受居家辦公場地、設施和設備的限制,我們無法使用導播臺或視頻捕捉卡等高級設施和設備來進行視頻抓取、視頻切換及廣播流發送,因此只能以軟件的方式搭建推流服務。我們使用開源的視頻捕捉及廣播軟件(Open Broadcaster Software,OBS),以Webinar中Attendee的窗口作為直播源往直播服務器推流。
我們為安裝了OBS的筆記本添加一個外置顯示器并設置其為擴展顯示模式,然后將作為Attendee加入Webinar的Zoom客戶端窗口在外置顯示器中顯示,在筆記本原顯示器中操作OBS。在這種推流模式中,需要設置一些細節參數。
設置Zoom客戶端“始終顯示會議控制欄”,以便于在OBS中進行有效屏蔽,避免捕捉的畫面出現研討會操作按鈕,例如靜音、舉手、字幕選擇等。
為致辭嘉賓設置Zoom虛擬背景,以突出活動主題、烘托氣氛。在這個前提下,為了平衡Zoom的圖像處理、視頻放映上行帶寬、音視頻流暢度及觀看效果,我們采用了1080P的分辨率。
設置OBS采集源為顯示器而不是窗口,由于Zoom字幕是通過圖層疊加的方式顯示,僅選擇Zoom窗口將無法有效抓取字幕。
設置編碼器為X264,此編碼器為使用CPU編碼的H264編碼器,CPU編碼的畫面細膩度通常會比硬件GPU編碼更好,同時還可防止各種GPU硬件編碼的H264視頻流的兼容性問題。
設置碼率為固定速率編碼(Constant Bit Rate, CBR),以使直播服務器視頻流切片大小基本一致,從而減少用戶端出現網絡擁堵的可能性。由于我們使用1080P的分辨率,建議視頻比特率不超過3000Kbps,我們選用了2.5Mbps的比特率(在使用720P時,可以選擇不超過2000Kbps的視頻比特率)。
設置關鍵幀間隔為第二選項,使H264編碼時每隔2s產生一個I幀(Frame),此時單個切片的時長會趨向于一個確定值,從而使直播平臺的HLS延時控制在20~40s。
設置視頻分發協議為HLS而不是RTMP、HTTPFLV,前者可以使所有用戶能在H5頁面中直接播放。
全線上虛擬畢業典禮需要很多技術小組的無縫協作,包括字幕組、播放組、音視頻控制組、直播組、網絡保障組、導演組以及會議控制組,在大家的通力協作下,我們于2022年5月26日晚圓滿完成了全線上虛擬畢業典禮的組織和實施。
通過下載阿里云后臺數據,當天共有4541個不同用戶觀看了學校在線畢業典禮,CDN峰值帶寬消耗約10.5G,按照2.5M的碼流推算,最高并發用戶約4200人,所有觀眾中大陸用戶共計3062人,占比67.4%;境外用戶共計1479人,占比32.6%。根據多個監測點反饋,直播當天國內部分城市如常州、成都出現不超過1秒的卡頓,其他國內城市及國際觀眾未感覺到明顯的聲音或圖像卡頓,觀看延時為國內用戶約25秒,國際用戶約30秒,如果后期有大量的境外用戶訪問需求,可能需要考慮采用CDN節點分布更廣的內容分發商。