TIMERS STUDIO
MASTER YOUR FLOW

服务器端演出时钟:零漂移在广播中的关键意义

客户端时钟会漂移,服务器端时钟不会。这种区别如何定义了你的演出可靠性。

· 技术解析 · 8 min read

每个在主控室工作过的广播工程师都有一个关于时钟的故事。我的故事发生在一场为期三天的企业峰会上。客户租了一面3.6米的LED大屏,要求显示一个对观众和制作团队都可见的演出时钟。到第二天下午,LED墙上的时钟比制作人笔记本电脑上的时钟快了14秒。直到一个节目段"提前"结束,演讲者站在舞台上无话可说,这种漂移才被发现。 导播发现问题出在架构上。那款计时器软件在客户端计算时间,使用每个设备本地的JavaScript Date对象。每个浏览器标签、每个连接的屏幕、每部运行控制器的手机都在维护各自独立的时钟。随着时间推移,这些时钟逐渐漂移,因为没有两个设备能保持完全一致的计时。消费级硬件的晶体振荡器精度约为百万分之二十,换算下来每天约漂移1.7秒。再乘以连接设备的数量,你就有了一场每个屏幕都在讲述略有不同故事的演出。 Timers Studio的演出时钟通过在服务器端计算时间来解决这个问题。你屏幕上显示的时钟值不是由浏览器生成的。它由服务器计算,并通过承载传输命令的同一WebSocket通道广播到每个连接的设备。你的浏览器是显示表面,而非计时器。这意味着无论是2个还是50个屏幕,它们都显示相同的时间,因为它们都从同一来源接收相同的时间。 演出时钟显示三项关键信息。第一,当前时间,以广播专业人员一眼就能识别的Wharton风格模拟与数字组合格式渲染。第二,Cue Ends,即当前计时器段归零的预计时钟时间。第三,Show Ends,即基于剩余段时长整个运行表将完成的预计时钟时间。当各段运行超时或不足时,这些预测会实时更新。 超时追踪是演出时钟变得真正不可或缺的地方。当一个段超出其分配的时长时,计时器显示切换为红色并开始带正号向上计数。Cue Ends和Show Ends预测立即调整,在每个时间戳下方以红色显示累积超出时间。制作人瞥一眼演出时钟就能看到当前段超时3分钟,整场演出预计将延迟47秒结束。无需任何心算就能获得的这些信息,就是主动应对的制作人与事后才发现问题的制作人之间的区别。 类似提示灯的状态指示器提供额外的上下文。演出在容差范围内运行时显示绿色"ON TIME"徽章。没有活动计时器时显示"IDLE"。计时器正在运行且会话处于直播状态时,带有动画绿点的"ON AIR"指示器提供确认。这些是小的视觉细节,但在注意力分散于多个系统的控制室中,一个从房间对面就能读取的彩色编码状态徽章具有真实的运营价值。 将此与客户端演出时钟进行比较,这是大多数竞品的标准做法。客户端时钟在本地计算一切。按下播放时启动一个JavaScript计时器,逐帧递增。在最初几分钟内运行完美。但JavaScript计时器不是精密仪器。它们可能因垃圾回收而延迟,在浏览器标签进入后台时被节流,或因系统睡眠事件而偏斜。在四小时的会议日程中,累积的漂移会达到运营层面不可忽视的程度。 一些工具试图通过定期与服务器时间戳重新同步来减轻漂移。这种方法减少了问题但没有消除它。在同步间隔之间,时钟仍在本地漂移。而同步本身可能引入可见的跳跃:时钟在校正时向前或向后跳动一个分数秒,这在广播显示上显得不够专业。 服务器端方法避免了这两个问题。没有本地计算,所以没有本地漂移。值在到达的那一刻就是权威的,所以没有可见的跳跃。浏览器渲染服务器发送的内容,服务器是所有连接设备的单一信任源。 对于跨越多个小时的制作,这种区别变得至关重要。一场从早到晚包含八小时节目的会议,任何客户端时钟都会累积有意义的漂移。依赖漂移时钟的制作团队将基于不正确的信息做出日程安排决策。向演讲者告知的剩余时间将多于或少于实际时间。收尾提示将在错误的时刻触发。这些失败单独来看并非灾难性的,但合在一起会创造出一场感觉略微不可靠、略微不精确、略微业余的制作。 如果你正在运营一场时间管理至关重要的演出(如果你在读这篇文章,那几乎可以肯定是这样),你的时钟架构不是技术细节,而是制作决策。[打开工作室] 你可以打开一个工作室,在多个设备上观察演出时钟数小时来自行验证。数字将完全匹配,因为数学运算发生在一个地方,显示在多个地方。 广播行业几十年前就学到了主时钟的重要性。每个专业设施都运行在一个将时间分配给信号链中每个设备的单一参考时钟上。Timers Studio将同样的原则应用于基于网页的制作工具。一个服务器,一个时钟,零漂移。[立即体验] [查看控制台]