分享

一场全在线虚拟毕业典礼的实现

 高校信息化 2022-07-28 发布于北京

受奥密克戎变异毒株影响,上海各高校不得不在2022年春季学期以线上授课的方式开展教学活动。随着毕业季的到来,按照传统方式开展线下毕业典礼及相关活动已不现实,因此线上的虚拟毕业典礼成为首选。

本文将以上海纽约大学为例,介绍在疫情管控期间采用Zoom研讨会方式实现全线上虚拟毕业典礼的方案设计和技术实现。

方案设计

与传统的现场毕业典礼直播不同,全线上虚拟毕业典礼的开展面临很多挑战。例如,无法为演讲嘉宾准备专业的灯光、音效及背景设置等。

活动的内容和规模

在策划虚拟毕业典礼时,首先需要确定活动内容。

相较于传统现场毕业典礼,虚拟毕业典礼没有毕业生入场、教师代表入场和学位颁发等现场环节。同时,活动的参与人员包括待毕业学生及家长、学校教职工及低年级学生。根据往年现场参加毕业典礼的人数和在线观看毕业典礼直播的人数,预计虚拟毕业典礼参与人数约为 5000 左右。学校传统现场毕业典礼环节如图1所示。

图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./closedcaption?id=200610693&ns=GZHkEA==&expire=86400&sparams=id%2Cns%2Cexpire&signature=n YtXJqRKCW&seq=192&lang=zh-CN

其中,参数的含义及要求如表1所示。

表1 URL参数添加要求及含义

名称

要求

含义

id

必填项

Zoom的会议号

ns

必填项

会议host授权的唯一通行标识,同一host对多个会议的授权参数值相同

expire

必填项

完整Token的有效时间

sparams

必填项

表示需要指定id,ns和expire参数

signature

必填项

对以上参数通过特定算法的签名,用于完整性校验

seq

必填项

表示字幕计数器,每发送一次应增加一,如果为重传则应保持不变,类似于TCP传输中的序列号,最后一次成功发送的seq号可以通过API获取到

Lang、zh-CN

必填项

语言和ISO国家代码

除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 直播的实现

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节点分布更广的内容分发商。

作者:常潘(上海纽约大学信息技术部)

责编:陈永杰

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多