聚合:五分钟把Wi-Fi和移动网络合成一路直播

在LOLS IRL里设置srtla聚合,直播时看懂每条链路的指示,也知道第一次断网时会是什么情况。

聚合会让你的直播同时走手机上所有的网络。区别在于:一种是Wi-Fi一断直播就结束,另一种是不用你动手,直播自动靠移动网络继续。设置一次,之后开播就是这样。

先准备什么

设置步骤

  1. 拿到接收端的信息。免费中继的话,就是从relay-auth.lols.gg拿的密钥,拿到时已经是Stream id的格式。用你自己的机器的话,就是主机名、UDP端口,以及你的服务器要求的Stream id。
  2. 打开Streams,添加一个目标。在应用里进入Streams,点+,在三个协议选项里选SRTLA。SRT是连到你自己接收端的单条连接,RTMP直接推到平台,SRTLA是聚合的那个。
  3. 填主机和端口。用中继的话,点你所在的区域,主机、端口和名称会自动填好。按你SIM卡所属国家,最近的区域带一颗星。用你自己的接收端的话,填公网主机名和它监听的UDP端口。
  4. 把密钥粘贴到Stream id。大家最容易填错的就是这一栏。中继密钥本身已经带了publish:前缀,所以要整串粘贴到Stream id里,不是名称里,也不是接在主机后面。
  5. 延迟先保持2000 ms。这是默认值,也是个合理的值。调高能扛住更差的信号,调低能减少延迟,但留给重传丢包的余地更小。开播后,应用会显示它实际测到的往返时间,并建议一个匹配的数值,所以等有了真实数字再调,不要现在瞎猜。
  6. 保存,并确认目标是打开的。已保存但没启用的目标,是最不声不响的“没在直播”的原因。
  7. 开播,然后展开统计。在直播界面点统计叠加层把它展开。你要看到每条链路一行:wifi和cell,各有自己的码率和往返时间。有两行就是聚合上了。只有一行就是没有,下面的常见错误会告诉你原因。

怎么读这些指示

收起时,叠加层显示一个健康状态点、你的码率、编码器帧率、往返时间,以及已经直播了多久。点一下会展开详情:

读数它告诉你什么
send buffer先行指标,也是最该盯的那个。缓冲区会在画面卡顿之前先涨满,所以数值在升,就是在警告你某条链路吃力了,而不是在报告它已经出问题。
target自适应码率当前瞄准的码率,会随情况变化自己降下去、再爬回来。
dropped和retransmit丢失的包和重发的包。移动网络上有几个重传是正常的,丢包数一路上涨就不正常。
每条链路一行标着wifi、cell或eth,各有自己的码率和往返时间,所以你能看出哪个网络在扛什么。
每条链路行上的圆点绿色是正常并在走流量,琥珀色是正在连接或卡住了,红色是断了。直播还在、这一行却是红的,说明聚合在干它该干的事。
每个目标一行带名字,所以同时推到好几个地方时,你能看出哪一个断了,其他的没事。

链路断掉时会发生什么

没什么大动静,这正是重点。出问题的链路那一行变红,剩下的链路接过流量,直播保持连着。网络恢复后,那条链路会重新向接收端注册,自己重新加入这一组。你不用停,不用重启,也不用动任何东西。

有两点值得先交代清楚。第一,剩下的那条链路得扛起整路直播,所以如果你的码率本来只有好Wi-Fi才装得下,那么移动网络顶上时自适应码率会降下来,之后再爬回去。第二,聚合带来的是稳定,不是额外的速度:你的几条链路永远不会叠加成一条更粗的管道。把码率设成一条好链路能扛住的水平,切换时你几乎感觉不到。

在需要之前,故意测一次。在家用聚合开播,等统计看起来稳了,把Wi-Fi关一分钟,看着。你会看到wifi那一行变红,cell那一行顶上来,等你打开Wi-Fi,一切又恢复。这样试十分钟,比读多少文字都管用,而且在厨房里学会,比在直播到一半时才学会好得多。

让人第一次就翻车的那些错误

指向了你自己网络里的地址

这是最大的一个。192.168.1.50上的接收端只能通过你的Wi-Fi访问到,别处都够不着,所以你的移动网络链路注册不上,你没有聚合,只是多绕了几步在走Wi-Fi。目标必须是公网主机名或地址,也就是一个中继、一台托管的机器,或者你路由器上指向你那台机器的UDP端口转发,并用路由器的公网地址来填。你桌上的笔记本也是同一条规则。

Stream id留空,或只粘贴了一半

接收端会验证推流方,所以空的或被截断的Stream id,换来的是一条哪儿也到不了的连接。把密钥整串粘贴进Stream id栏,包括它的publish:前缀。

指望码率更高

两条链路不会相加。如果你设了一个只有Wi-Fi才扛得住的码率,一旦由移动网络来扛,画面就会变差,然后你会把聚合没做的事怪到聚合头上。聚合让你保持在线。码率是另一个决定。

手机上开着VPN

VPN会接管设备上的每一个socket,所以应用没法为每个网络各开一个,也就没有东西可以聚合了。出现这种情况时,统计里会直接这么说。把VPN关掉,或者在VPN应用自己的设置里把LOLS IRL排除出去。

把srtla发给普通的SRT服务器

SRTLA需要一个运行srtla_rec的接收端,是它把链路重新拼回去。普通的SRT监听端不认识分组注册。用中继,或者像自托管指南讲的那样,在你的SRT服务器前面跑srtla_rec。

选了地球另一边的中继

距离会带来你追不回来的延迟,往返时间够长的话,连接甚至可能建立不起来。选最近的区域:应用会给匹配你SIM卡所属国家的那个标上星。

跑通之后

下一篇:使用免费中继