手术直播最怕的不是画质差,是中途黑屏。台下站着几十号进修医生,台上主任正做到关键步骤,画面一断,这场示教基本就废了。我们做过的场次里,断流原因排前三的是:院内网出口被其他业务挤占、单路推流编码器过热、以及手术室那一段无线回传丢包。
这三个原因里,前两个能靠设备选型和链路设计规避,第三个比较麻烦,因为手术室的环境本身就特殊。下面按我们实际的处置顺序讲。
主备双路不是插两根网线就叫备份
很多医院的信息科会说,我们给你两条网,你放心。但这两条网如果最终都出同一个交换机、走同一个出口,那叫冗余不叫备份。我们一般会要求:主路走院内有线专网直连信息科的出口,备路走院外的 4G 聚合路由器,两条路径在物理层就分开。
切换逻辑上,我们不用自动切换,用半自动。自动切换的问题是它判断的只是链路通不通,判不出画面有没有花。有一次主路没断,但画面已经开始卡成 3 秒一帧,自动切换认为链路正常,硬是不切。那场直播术野机整个后半程都是幻灯片。
现在的做法是:导播台上放一个延迟 5 秒的监看画面,出现连续两个 GOP 不刷新,人工按键切备路。实测从发现异常到备路画面出图,熟练的导播能压到 3 秒以内。这个数字看着不起眼,但术野机画面走的是 1080p50,延迟窗口意味着切过去之后有一段画面需要重新同步,所以窗口不能设太大,超过 8 秒导播的注意力就很难维持了。
4G 聚合路由器的上行账要提前算
术野机单路 1080p50 按 12 Mbps 算,主讲人机位 8 Mbps,会场全景 6 Mbps,加起来 26 Mbps。如果只做导播切换后的单路输出,那么推流上行需要在 12 到 20 Mbps 之间留余量。
四卡聚合路由器标称能到 100 Mbps 以上,实际上行要看所在位置的基站负载。我们在医院新旧院区各测过一组:老院区住院楼内,四张卡同时在线,白天上行实测聚合后 28 Mbps,晚上八点后掉到 14 Mbps。新院区门诊楼相对空旷,白天 45 Mbps 上下。所以老院区的项目我们会把码率从 12 Mbps 降到 8 Mbps,或者干脆上一路有线做底。
丢包比带宽更要命。聚合路由器一般会把包分到几张卡上,如果某一张卡丢包率高,重组的时候会拖累整条流。判定标准我们用的是单卡丢包率超过 3% 就把那张卡摘掉,宁可用三张卡跑 8 Mbps。
断流重连那 20 秒里要先干什么
重连本身是秒级的,真正费时间的是确认画面有没有问题。我们的顺序是这样:先看术野机有没有恢复、再看音频表有没有跳、然后才去看推流端的状态码。反过来查的话,人容易盯着码流界面,术野那边其实早就断了。
有一个坑得说清楚。编码器在断流重连后,有一部分型号会把时间戳重置,导致播放端出现一段快进。我们遇到过某品牌编码器重连后画面以 4 倍速冲了 6 秒,正好冲过主任操作的关键两刀。后来的处理办法是重连时让导播先切到备用静帧,等时间戳稳定了再切回直播流。静帧用的是术前拍的器械台空镜,垫三五秒不违和。
重连还有个隐性成本是观众端。如果观众用的是浏览器播放器,一次断流重连会触发播放器重新缓冲,缓冲结束前观众看到的是转圈。所以每次断流,观众端的实际体验损失大约是 8 到 12 秒。这个损失没法完全避免,能做的是提前在页面上挂一条提示。
提前到场的测试要测到哪一步
我们进场测试至少提前两小时,测的不是能不能推流,是三条线:主路上行实测速率、备路聚合实测速率、以及拔掉主路后切备路的实际耗时。第三条最容易被跳过,但它才是备份链路真正的价值。
测试时还要把手术室的层流设备开起来。层流一开,室内风速上去了,如果用无线麦克风会带风噪,用无线图传偶尔也会受影响。这些都得在病人进场前跑一遍。
另外提醒一个时间上的坑。有些医院的层流系统是集中控制的,早上七点前不开。如果手术安排在第一台,测试就得跟着层流开启的时间走。我们有一次按计划提前两小时进场,结果层流还没开,测试数据全部不可信,只能等七点重测,进场时间实际上提前了三个半小时。这个要提前跟手术室护士长确认清楚。
一次差点出事的教训
去年有场胸外科的手术示教,主备都做好了,唯独没测 4G 卡的流量余量。那场做了 4 小时 20 分钟,备路跑到后半程的时候流量包用尽,直接降速到 128 kbps。所幸主路一直稳着,没切过去。但事后复盘,如果主路当时抖一下,备路是接不住的。
这之后我们的规矩是:备路流量包按最长场次时长乘以 1.5 倍预留。写进方案,不靠现场记。
还有一条不成文的做法:如果这场手术示教的主刀是初次合作,我们会在方案里多留 20 分钟的准备时间。初次合作的主任对机位位置的接受度不一样,现场调整机位的概率明显高。