Elixir Logo

Cyanview:使用 Elixir 协调超级碗的视觉保真度

2025年3月25日 · 作者:Lars Wikman, José Valim · 发布于 Elixir in Production

如何协调像超级碗这样的现场活动中两百个摄像头的视觉保真度?

答案是:通过运用摄像机着色的技巧,调整每个摄像头的色彩、曝光和其他各种视觉方面,以确保它们相互匹配。目标是将直播活动转化为一个连贯且一致的体验。对于使用的每个角度,你都希望看到相同的绿色草坪和相同的肤色。所有内容都需要在各种产品和品牌之间进行非常精细的调整,包括大型广播摄像机、无人机摄像机、PTZ 摄像机、手持云台的无反相机等等。这就是 Cyanview 所做的事情。Cyanview 是一家位于比利时的小公司,销售用于直播视频广播行业的产品,其主要重点是着色。

广播行业是一个只有一次机会证明你的工具能够胜任任务的行业。可靠性至关重要。绝不能出现硬故障。

一个由三人组成的小团队开发了一种功能强大且有效的产品,该产品仅凭其功能的优势就在整个行业中传播开来。在没有任何营销的情况下,它在经验丰富的专业人士中赢得了声誉,并成为世界顶级现场活动的必备品。Cyanview 的 Remote Control Panel (RCP) 现在被专业的视频操作员用于奥运会、超级碗、NFL、NBA、ESPN、Amazon 等等。甚至巴黎的大多数时装秀都使用 Cyanview 的设备。

这些设备将 Elixir 置于严肃的广播操作的关键路径中。通过选择 Elixir,Cyanview 获得了最佳的网络功能、最先进的弹性以及一个允许快速迭代产品功能的生态系统。

使用 Cyanview 产品操作多个显示器。

为什么选择 Elixir?

Cyanview 的创始团队主要拥有嵌入式开发经验,他们生产的设备涉及大量的底层 C 代码和大量的 FPGA。这是由于色彩科学的底层细节以及非常严格的时序要求。

如果你曾经使用过相机软件,你就会知道它可能是一个混合包。即使在完全数字化之后,其中许多仍然与模拟系统相关联或依赖于专有的连接解决方案。Cyanview 从一开始就以 IP(即 Internet Protocol)为目标。这意味着 Cyanview 的软件可以在以众所周知且易于理解的方式工作的通用网络上运行。这与远程制作的增加非常吻合,部分原因是疫情,制作人员在中心位置操作,而现场人员最少。定制的射频或串行线路协议很难扩展到跨越大陆的距离。

这也为 Elixir 铺平了道路,因为 Erlang VM 旨在可靠地通过网络通信和协调数百万个设备。

Elixir 是由开发人员 Ghislain 引入的,他需要构建与摄像机的集成,并与网络上许多不同协议的其他必需视频设备进行交互。该语言附带了许多实用的功能,可用于将二进制数据编码和解码到单个位。Elixir 为他们提供了一个强大的基础和快速迭代的工具。

此后,Ghislain 一直在构建 Cyanview 的核心知识产权。虽然物理设备自然必须坚固、可靠且高质量,但许多秘诀最终在于大量的集成和大量的逆向工程。因此,该产品能够与尽可能多的专业摄像机系统和相关设备一起使用。它旨在与客户使用的任何事物兼容。此外,它还提供了一个 API,以确保与其他设备平稳集成。

Cyanview 的创始人 David Bourgeois 向我们讲述了一个故事,这些技术决策与 Elixir 如何帮助他们应对现实世界的挑战:

“在中国奥运会期间,北京的一个工作室依赖于大量的 Panasonic PTZ 摄像机。然而,他们的大部分团队都在巴黎,需要远程控制摄像机才能在一天中运行各种节目。问题是?Panasonic 的摄像机协议从未设计用于互联网使用——它们需要精确的计时和多个消息才能进行每次调整。由于网络延迟,这会导致超时、断开连接和系统故障……因此,他们最终将我们的设备放置在北京的摄像机旁边,并通过 IP 从巴黎控制它们——正如设计的那样。”

Cyanview RIO 设备安装在运动场上的摄像机上。

给定位置的设备通过自定义 MQTT 协议在网络上进行通信和协调。在单个 Remote Control Panel (RCP) 上可以无问题地连接一百多个摄像头,该 RCP 基于 Elixir 的网络堆栈实现。

技术组成

整个系统包括运行 Yocto Linux 系统的 RCP 设备,大部分逻辑是用 Elixir 和 C 构建的。虽然 Python 仍然用于脚本编写和工具,但它的作用已逐渐减弱。该设置还包括多个微控制器和摄像机上的设备,所有这些设备都通过 MQTT 进行通信。此外,云中继促进连接,而仪表板和控制器 UI 提供监督和控制。两个关键设备是提供生产端控制的 RCP 和处理摄像机低延迟操作的 RIO。两者都运行 Elixir。

配置 UI 目前是用 Elm 构建的,但 - 根据优先级 - 随着时间的推移,它可能会转换为 Phoenix LiveView,以减少使用的语言数量。控制器 Web UI 已经在 LiveView 中,并且在非常低规格的嵌入式 Linux 机器上运行良好。

系统的云部分在今天非常有限,这在 SaaS 世界中是不寻常的。有一些云中继用于分发和共享摄像机控制以及转发位置之间的网络端口和一些相关功能(也是用 Elixir 构建的),但云不是业务的核心。在位置运行 Elixir 的设备使用适合该任务的自定义 MQTT 协议通过 IP 形成一个集群,并与数百个摄像机和其他视频设备通信。

不用说,与如此多的专有设备集成带来了挑战。有些集成比其他集成更可靠。有些设备更常见,它们的怪癖通过来之不易的经验广为人知。有些甚至有你可以参考的良好文档,而另一些则提供神秘感和不断的惊喜。在这种情况下,David 强调了 Elixir 的故障恢复机制的重要性:

“如果一个摄像机连接出现故障、错误的协议或到设备的物理连接断开,那么其他一切都保持工作状态是非常重要的。而这正是 Elixir 的监督树提供关键优势的地方。”

增长与团队组成

该公司运营的 9 年里,团队不断壮大,但发展速度缓慢而稳定。平均而言,该公司每年只增加一人。在撰写本文时,Cyanview 拥有 9 名员工,为世界上一些最大的广播活动提供支持。

目前有两名 Elixir 开发人员:Daniil 专注于修改一些 UI 以及规划进入更多云功能的路线,Ghislain 负责摄像机和集成。LiveView 和 Elm 都用于驱动设备 UI 和仪表板。

有趣的是,总的来说,其他嵌入式开发人员表示他们对 Elixir 了解不多,并且在日常工作中不使用它。尽管如此,他们非常乐于使用 Elixir 实现协议和编码。他们没有完全学习该语言的主要原因只是时间问题——他们有很多其他工作需要专注于此,而且深入的 Elixir 知识不是必需的。毕竟,他们的工作不仅仅是 Elixir:设计 PCB、选择电子元件、逆向工程协议、与显示器连接、实现 FPGA、管理生产测试、实际生产和发布固件更新。

创新与客户至上

操作员在竞技场中使用 Cyanview RCP 来面对大量人群。

无论是为勒芒 24 小时耐力赛中的 40 多辆汽车提供车载摄像头、报道 Ninja Warrior、澳大利亚网球公开赛和美国网球公开赛、在卢浮宫运营工作室、安装在 NFL 标杆中,还是同时连接 200 多台摄像机——产品本身说明了一切。Cyanview 使用 Elixir(一种网络和协议深入骨髓的语言)为在 IP 之上运行的世界构建了设备。这种选择使他们能够做到两点:实现对所有设备的支持并提供其他人没有的功能。

通过从传统的本地无线电频率、串行连接和不灵活的专有协议转移到 IP 网络,Cyanview 的设备重新定义了摄像机系统的运行方式。他们的功能集在行业中闻所未闻:无限多摄像机。指示灯。平移和倾斜控制。与颜色校正器集成。覆盖全球的远程制作。

发布新功能的简便性和安全性使该公司能够非常快速地支持新功能。一个例子是在云台上越来越多地使用无反相机来捕捉人群镜头。Cyanview 能够在很短的时间内制作云台控制的原型、与客户一起测试并验证其是否有效。这种快速原型设计和功能验证得益于灵活的架构,该架构确保关键基础知识不会中断。

不生产广播着色遥控器的摄像机公司(如 Canon 或 RED)会向客户推荐 Cyanview。Cyanview 并不与大多数广播硬件公司竞争,而是认为自己是合作伙伴。一个小团队、一个高质量的产品和强大的工具的力量可能会令人惊讶。Cyanview 没有专注于营销,而是通过支持其活动的成功并提供深入的客户服务来与客户紧密合作。

回顾与展望

当被问及是否会再次选择 Elixir 时,David 回答说:

“是的。我们已经看到了 Erlang VM 可以做什么,它非常适合我们的需求。在你不得不尝试自己实现之前,你不会欣赏 Elixir 提供的所有开箱即用的东西。我们选择它并非纯粹的运气,但我们仍然很幸运。事实证明,Elixir 带来了很多我们不知道会对我们有价值的东西。我们现在清楚地看到了这些部分。”

Cyanview 希望增加团队规模,但计划随着时间的推移负责任地这样做。目前,需要做的事情远远超出这个小团队的管理能力。

开发非常活跃,与主要的 RCP 设备一起已经存在互补产品,未来在这方面将会有更多。云产品即将推出,还有令人兴奋的硬件项目建立在迄今为止吸取的经验教训之上。随着这些发展,我们将看到 Elixir 在一些世界上最大的直播中发挥越来越关键的作用。

控制室中的 Cyanview Remote Control Panels。

总结

一款高质量的产品,在正确的时间在集成良好的行业中提供正确的创新。Elixir 为开发大量集成提供了强大的杠杆作用,具有高度的信心和一致的可靠性。在生产力和精益高效的团队至关重要的时代,Cyanview 是 Elixir 如何使小团队能够产生巨大影响的一个典型例子。