LWN: 使用BigBlueButton进行视频会议!

关注了就能看到更多这么棒的文章哦~

Video conferencing with BigBlueButton

By Jonathan Corbet
April 10, 2020

原文来自:https://lwn.net/Articles/817146/

主译:DeepL

虽然自由软件开发者多数都不是社交动物,但还是会偶尔有希望彼此交谈的时候。在无法召开聚在一起的会议的情况下,最好的选择往往是视频会议。虽然视频会议往往使用集中式(centralized)的专有(proprietary)系统,但也有免费的替代方案。LWN最近调查了Jitsi,但并没有止步于此;接下来是BigBlueButton,这是一个面向在线教育需求的系统,但它的适用范围不局限于此。

BigBlueButton并不是一个新项目,它从2007年开始开发。这段历史从很多方面都有体现;例如,实际的conferencing component最初是用Flash实现的,最近才有了基于HTML5/WebRTC的版本。该代码是在Lesser GPL下授权的;网站上没有说是哪个版本,但代码中的注释说是3或更高版本。该代码本身就是大量的Java、Scala和JavaScript(不止这些)代码的集合——差不多有1800个目录。

Installing BigBlueButton

BigBlueButton是一个重量级的系统,这一点在非常长的安装说明中就显示了出来。还有一个脚本来完成所有这些工作,可以使用传统的 "wget | bash "方法来执行。编者使用了这个脚本,但稍微看了一下(“保证”代码是安全的)后就做了如下修改。

这个系统对服务器的要求比较特殊,具体来说,只支持Ubuntu 16.04版本。BigBlueButton需要至少8GB的内存(还需要打开swap)和4个CPU。安装脚本将拒绝在任何其他发行版上运行,或者系统内存少于4GB的话安装脚本也会拒绝运行。编者屈服于Ubuntu 16.04这个要求了,但出于大家都有的吝啬心里,我调整了一下脚本,让它接受使用2GB的低端虚拟服务器。

要求使用Ubuntu 16.04,这可以说是出于稳定性考虑。很容易想到,开发者不会喜欢在多个平台上支持这种有多层软件配合构成的软件系统。但这个发行版很古老了,它在一年内就会失去官方支持;在未来的十二个月内,BigBlueButton系统将不得不进行大规模迁移。

安装脚本大约需要执行半个小时的。其中包括为需要的组件设置一些第三方资源库;例如,安装说明中准确指出 "Ubuntu 16.04中的默认版本ffmpeg太旧了",脚本就从其他地方获取一个更合适的版本。在脚本结束的时候,不仅软件已经安装好了,而且脚本还从Let's Encrypt中获得了服务器的TLS证书。自己尝试的开发者需要注意一下,BigBlueButton在启动后可能需要几分钟的时间才能真正启动;可不要过早断言安装失败了。

虽然BigBlueButton可以用来进行会议(conferencing),但它并不关心管理 "房间 "或认证用户等前端任务。相反,它提供了一组相当完善的API,供前端使用。鉴于其立足于教育领域,因此不出意料,像Moodle这样的应用程序都在使用这套API来集成BigBlueButton。对于那些不想使用其他前端程序的人来说,在使用BigBlueButton的安装脚本时,有一个可选的Greenlight前端程序可供附带安装。

Greenlight是一个Ruby-on-Rails应用程序,所以服务器上又需要支持运行一种新的预言,更加热闹了。而且,安装脚本是直接将BigBlueButton加载到服务器的,Greenlight却被安装到Docker容器里。这让管理工作变得挺有趣的;经过一番调查才发现,在服务器上创建初始管理帐户的方法是这样的命令。

    docker exec greenlight-v2 bundle exec rake \
           user:create["root","[email protected]","password","admin"]

运行这条命令后,服务器马上就出现了内存不足现象。这说明这个项目在安装时提到需要4GB内存的时候它确实是很认真的,哪怕还没建立视频会议,2GB也是不够的。克服了这个小障碍之后系统就可以正常运行了。

Then what?

连接到网络服务器的时候,会出现一个预料之中的 "about Greenlight"页面,然后可以创建账户。当然,不可避免地还有 "yes I agree to let you use cookies"的checkbox,必须得勾选。尽管HTTPS已经可以正常工作了,但默认配置也允许用户在没有加密的情况下连接,没有重定向到https。帐户创建很简单。缺省情况下,任何人都可以在网站上创建一个帐户。

登录后,用户被放置在 "home room"中。还有一个大大的蓝色(果然又是blue色的) "开始 "按钮,供在此房间里启动会议。用户可以随意创建其他房间。每个房间都可以设置房间名,但是名字对于其他想要加入该房间的会议的人来说是没有用的。而是需要发送一个特殊的 "invite URL"给其他参会者。

点击蓝色大按钮,就会在选定的房间里启动会议。与会者的第一个问题是,他们是否只想收听而已,还是也需要发送音频;显然,互动体验就需要后者。接下来的是 "echo test",在这个测试中,麦克风会被送入扬声器(如果没用耳机,会有反馈啸叫),要求用户确认它是否正常工作。这应该是作为一个一次性的功能,但系统要求每次进入会议室时都要进行这个步骤。考虑到用户已经同意了cookie,似乎可以设置一个cookie,代表"音频在过去20次中都能正常工作了,我们可以跳过测试了",但目前看来还没有这个方便用户的功能。

需要另外一个流程才能发送视频。用户可以选择使用哪个摄像头,以及要发送的视频流的分辨率;之后没什么简单方法来改变这个分辨率。值得注意的是,BigBlueButton默认的分辨率相对较低(640x480),这与Jitsi不同,Jitsi试图将尽可能多的视频数据放进来。较低的分辨率似乎完全够用了,而且肯定会降低整体的带宽要求。

会议屏幕上默认会有一个presentation窗口,与会者加入后视频会挤在一起。视频和音频质量似乎总体来说还算不错。如果你只是想一群人之间进行对话,那么就跟其他视频会议系统没什么区别。尤其是一旦把presentation窗口拿掉的话就会腾出更多的空间。BigBlueButton使用的是平铺分块视图(tiled view)来显示所有与会者的视频。人们可以 使用"focus"来关注某个特定的与会者(使他们的窗口变大),或者让一个人占据整个屏幕。但似乎没有那种自动放大当前发言人的视频的功能,当然这也不是一个非要不可的功能。

不过,BigBlueButton除了视频聊天之外还有很多其他功能。presentation窗口确实是为了演示presentation而设计的;也可以直接上传一个(例如)LibreOffice格式的演示文稿。不过,只有被指定为 "presenter"的参会者才能这样做;房间主持人可以任意指定 "主讲人"。主持人也可以在演示时使用工具来在幻灯片上现场标记。

LWN: 使用BigBlueButton进行视频会议!_第1张图片

主讲人可以打开一个 "多用户白板 "模式,能让所有与会者都可以使用绘图工具。这样每个人都可以在演示文稿的幻灯片上涂鸦。似乎没什么方法可以让共享白板独立于演示幻灯片之外;如果一个人想要的只是白板,那么答案似乎只能是上传一个单个空白页的 "演示文稿"。

在左边有一列图标,代表各个参与者;这些图标也指出他们是否在发送音频等。每个参与者可以在他们的图标中设置一个 "状态",表示悲伤或困惑,或者通过 "举手 "表示想发言。不过图标很小,状态不容易看清,如果参与者人数较多,挑出举手的那个似乎是个挑战。

房间主持人在操作这些图标时有一些额外功能,包括可以将任何参与者变成主讲人。对各个参与者可以逐个或全部静音。还有一个选项可以将其他参与者提升为主持人,但这个功能似乎没有效果。

还有一个聊天功能,就是在视频之外再提供的文本对话框;这些对话可以是公共的,也可以是私聊。主持人有能力禁止私聊,这样可以让学生们的注意力集中到课程中来,因为他们没有其他的方式来给对方发信息。还有一个单独的区域作为公用的笔记区域。BigBlueButton还支持视频字幕,可以支持多国语言的字幕。但用户中必须指定一人来输入这些字幕文字。

主持人可以点击屏幕上方的一个按钮来录制会议。此时所有与会者都会收到通知。等会议结束,服务器将启动一个可以执行很长时间的FFmpeg进程,将录制下来的内容转换为可导出的格式。最终结果最终将显示在房间主持人的屏幕上。默认情况下,录音是私有的,但也可以公开。值得注意的是,录下来的不仅仅是一个视频文件,而是像一个网络应用一样,包括会议记录、聊天文本、幻灯片缩略图等。如果想获取一个普通的视频文件用来上传到其他地方,此系统似乎并不直接支持这个功能。

有一个 "分组讨论室 "功能,版主可以选择创建若干个房间,并选择房间的持续时间。版主还可以将参与者分配到特定的房间,或者点击一个按钮将其随机分散。分配房间一旦生效,参与者就会被有效地限制在这个小会议之中,直到选定的时间段结束。似乎没有办法提前结束。在分组讨论室内似乎无法进行录制。

该系统有一个简单的 "投票功能",主持人可以使用。然后每个参与者将看到一组按钮,可以选择与他们相应答案所对应的按钮。值得注意的是,虽然参与者不能看到其他人的投票结果,但主持人可以看到。主持人可以 "发布 "结果,结束投票,并将统计后投票数(但不是具体某个人的投票内容)放在presentation窗口的顶部。

与Jitsi不同的是,BigBlueButton并没有针对移动设备设计应用程序;相反,它的网页界面自己适应小屏幕进行缩放。大多数情况下运行良好,偶尔会出现一些小问题。例如,有些选项的对话框会覆盖讨论区,此时Android用户会出于习惯而点击 "back"按钮希望让对话框,结果会很失望地发现这个操作会导致他们完全退出会议。不过总的来说,开发者们似乎在移动端支持方面做得不错。

总之,BigBlueButton提供了一个功能比较齐全、扎实的体验,不管是用做presentation还是开小组会议都很有用。

The management side

编者对Jitsi的抱怨之一就是缺乏一个总体管理工具;作为一个服务器管理员,我几乎没有什么方法可以知道系统上发生了什么,更不用说对它进行控制了。BigBlueButton在这方面似乎比较强大。

默认情况下,任何人都可以创建一个账户,任何拥有账户的人都可以创建房间,任何拥有此房间URL的人都可以加入到其中。不过这些都是可以通过配置来更改的。帐号的创建可以只邀请,也可以要求管理员批准。可根据需要赋予用户特定的权限(创建房间、管理他人创建的房间、调整系统设置等)。服务器管理员可以查看此刻所有房间及其状态,需要的话,可以进入其中的任何一个房间。

LWN: 使用BigBlueButton进行视频会议!_第2张图片

房间的所有者可以设置其访问策略。可以在房间上设置一个访问代码,就是一个六位数的数字,由系统选择(看似随机的)而不是由所有者选择。参与会议的用户可以被限制在已通过网站认证的用户中。还可以要求版主逐个批准加入房间。当然,版主也可以在必要时将参与者从房间中踢出来。

和Jitsi一样,BigBlueButton也声称能够与SIP服务器对接,实现会议的电信拨号访问;这个功能,小编就不尝试了。

最后,我们再回来讨论一下资源使用情况。最后在那个2GB的服务器上运行BigBlueButton还是成功了,在上面托管进行了一些会议(最多有十几个stream的会议)。系统在频繁进行swap操作,但还是能够撑得住。增加一个会议的参与者时多消耗的运行资源似乎并不比Jitsi高。BigBlueButton需要更高的基本资源,但两者在增加用户的时候新增的资源消耗是差不多的。它的带宽要求较低,可能是由于视频分辨率较低的缘故。(需要注意的是,可能用户规模达到一定程度上还是会有问题的,但是这需要大型会议,编者没有足够的朋友来运行这么大规模的会议)

总结一下,虽然Jitsi和BigBlueButton都是可以进行视频会议,但BigBlueButton似乎是一个更扎实、功能更完善的产品。特别是管理功能和共享白板功能非常有优势。自由软件社区经常努力创建顶级的图形化应用,这里我们有(至少)两个。看来,在这个领域,似乎没有必要使用专有(proprietary)的解决方案了。

全文完

LWN文章遵循CC BY-SA 4.0许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注LWN深度文章以及开源社区的各种新近言论~

你可能感兴趣的:(LWN: 使用BigBlueButton进行视频会议!)