IRL 直播老是断线?信号不好也能持续直播的方法
2026年10月09日 · 阅读 2 分钟
目录
如果 IRL 直播总是断线,可靠的办法是别再把画面直接推到平台。先推到服务器,由 OBS 从那里推流到 Twitch、YouTube 或其他平台,再用自动场景切换,在手机离线时显示备用场景。
移动网络永远无法完全预测,断线迟早会发生。本文说明断线对直接推流意味着什么,以及哪些措施能让你持续直播。
IRL 直播断线时会发生什么
手机或编码器直接推流到平台时,这一条连接就是整场直播。连接一断,平台就收不到视频。观众会看到画面卡住或频道离线,直播随之结束。信号恢复后,你得重新开播,中途离开的观众要自己找回来。平台上的录像也会被拆成好几段。
平台会给一点容错。比如 Twitch 有一项叫Disconnect Protection的功能。你重连期间,它最多 90 秒向观众显示一条提示,并让录制的 VOD 保持连续。如果 90 秒内没有重连,直播就会照常结束。Twitch 列出的支持编码器有 OBS Studio、Streamlabs OBS、XSplit、Twitch Studio 和它的移动应用,并建议你用自己的设置快速测试一下。
这对短暂的卡顿有用。在隧道或信号盲区里,90 秒很快就过去了,其他平台的表现也可能不同。
IRL 直播为什么会断线
大多数断线源于以下几个原因:
- 信号盲区:隧道、地下通道、厚墙、地下室和偏远路段,信号弱或者根本没有。
- 基站切换:乘车、坐火车或骑车移动时,手机会在不同基站之间切换,可能造成短暂中断或延迟飙升。
- 活动现场基站过载:人群中很多手机共用同一个基站。信号格看起来正常,可分给你直播的上传带宽却变小了。
- 码率太高:直播码率必须低于你实际能拿到的上传速度,并留出余量。移动网络的上传速度会波动,在沙发上没问题的码率,到了街上可能撑不住。
- 电量和发热:手机在太阳下编码视频会发烫、变慢。电量耗尽则会让直播毫无征兆地结束。
发送端能做什么
降低码率并让它自适应
选一个边走边能稳住的码率,而不是手机允许的最大值。对观众来说,稳定的 720p 画面比卡顿的 1080p 更好。很多 IRL 应用还提供自适应码率,网络变差时会自动降低码率。比如免费的 iOS 应用Moblin就列出了对 SRT(LA)、RIST 和 RTMP 的自适应码率支持。
聚合多条连接
聚合是把多条连接(比如不同运营商的 SIM 卡)合并成一路推流。SRTLA 就是为此设计的开放协议:根据它的GitHub 项目,它是带链路聚合功能的 SRT 传输代理,用于聚合移动调制解调器。聚合在多条连接不会同时断开时最有用。如果它们都在同一个信号盲区,聚合也帮不上忙。
使用能容忍丢包的协议
SRT(Secure Reliable Transport)是为不稳定网络设计的。它的项目页面介绍了通过重传请求从丢包中恢复,并适应不断变化的网络状况。它能改善差网络下的质量,但无法凭空变出带宽。为了稳定,建议在编码器里把关键帧间隔设为 2 秒,SRT 延迟也设为 2 秒(根据硬件或软件,填写为 2000 毫秒或 2000000 微秒)。也可以设得更低,但 2 秒更利于稳定。
| 措施 | 针对的问题 | 局限 |
|---|---|---|
| 降低码率或自适应码率 | 拥塞、信号弱 | 完全断网时无济于事 |
| 聚合(SRTLA) | 单条链路弱、基站切换 | 所有链路在同一个盲区时无济于事 |
| 用 SRT 代替普通 RTMP | 丢包、抖动 | 无法凭空变出带宽 |
| 中间加服务器和 OBS | 完全断线、VOD 被拆分 | 需要服务器和 OBS |
前三项能减少信号中断的次数。最后一项决定信号还是断了的时候,观众看到什么。
缺少的一环:手机和平台之间的服务器与 OBS
与其让手机到平台只靠一条脆弱的连接,不如把路径拆成两段。手机把画面推到服务器。OBS 从服务器拉取画面,再通过稳定的连接推到平台。手机信号一丢,平台这一段不受影响,因为 OBS 一直在推流。观众会继续看着 OBS 当时显示的场景。
有两种运行方式:
- 用IRL 端点服务器,OBS 运行在你自己的电脑上,比如家里的电脑。编码器和 OBS 都是主动向外连接服务器,所以你不需要开放端口,也不用改路由器设置。
- 用IRL 直播服务器,完整的 OBS Studio 在云端运行,家里不需要高性能电脑。你通过客户中心用远程桌面连接,还可以用网页版控制面板管理直播,用手机浏览器也行。
两者都支持 RTMP、SRT 和 SRTLA 输入,最高支持 1080p 60 fps 的直播。
自动场景切换的工作原理
服务器能保住平台上的直播,但不会告诉观众发生了什么。输入的视频消失后,除非有东西切换场景,否则 OBS 会显示冻结的画面或黑屏。这正是自动场景切换要做的事。
自动场景切换使用 OBS 里的三个场景。在我们的服务器上,它们叫 Start、Live 和 Low:
- Start:一张静态图片,也可以配上音乐,在服务器收不到信号时显示。
- Live:正常场景,包含摄像头画面和叠加层,里面有接收输入流的来源。
- Low:码率低于阈值时显示,例如同一路画面加上“连接不佳”之类的提示。
一个小工具在服务器上监测输入流的码率。码率低于阈值,它就把 OBS 切到 Low。完全收不到信号时,切到 Start。流恢复稳定后,再切回 Live。
自己搭建时的开源示例:NOALBS
如果你想自己搭建,这类工具里最知名的开源项目是NOALBS(MIT 许可证)。它是独立的项目:下文介绍的我们服务器上的工具是自主开发的,与 NOALBS 不兼容。根据 NOALBS 的文档,它是适用于 Windows、macOS 和 Linux 的单个可执行文件,根据从推流接收服务器统计数据中读取的码率来切换 OBS 场景。它同时处理低码率和完全断线两种情况,支持 Nginx、Node-Media-Server、SRT Live Server、BELABOX cloud 和 MediaMTX 等多种推流接收服务器,并通过 OBS WebSocket 5 与 OBS 通信。
它的示例配置里最重要的设置如下:
| 设置 | 含义 |
|---|---|
| switchingScenes | 你在 OBS 中的正常场景、低码率场景和离线场景的名称 |
| triggers.low / triggers.offline | 切换到 low 场景和 offline 场景的码率阈值,单位 kbps |
| triggers.rtt / rttOffline | 针对 SRT 的可选延迟阈值,单位毫秒 |
| retryAttempts | 切换前连续检查的次数。NOALBS 每秒检查一次,所以 5 大约是 5 秒 |
| instantlySwitchOnRecover | 码率恢复时跳过等待时间 |
| offlineTimeout | 可选:在离线场景停留设定的分钟数后,停止 OBS 的推流 |
NOALBS 还为 Twitch 提供可选的聊天指令,你或管理员可以在聊天里切换场景或调整 low 阈值。它只会在 OBS 停留在它配置中的某个场景时才切换,所以片头之类的场景不会被覆盖。
我们的 IRL 服务器包含什么
我们的两款 IRL 服务器都包含自动场景切换,你不必自己搭建这套环境。它是我们自主开发的,不是 NOALBS,使用上面介绍的三个场景:服务器收不到信号时是 Start,推流稳定时是 Live,码率低于阈值时是 Low。具体运行方式因服务器而异:
- IRL 端点服务器:你在客户中心生成并下载这个工具。它在你自己的电脑(Windows 或 macOS)上与 OBS Studio 并行运行,需要 OBS 28 起内置的 OBS WebSocket 功能。启用该功能,按附带说明把工具连接到 OBS Studio,开播前启动它。出现连接问题时它会切换场景,连接重新稳定后再切回 Live。它只能与 OBS Studio 搭配使用,不支持 vMix 或 Streamlabs OBS。
- IRL 直播服务器:场景切换直接在服务器上运行,场景已预先配置好。云端服务器还额外有 Break、End 和 Refresh 场景。在网页控制面板里,你可以手动切到 Break 或 End,自动切换会暂停,直到你切回 Live。
如果你在下单时提供了 Twitch 频道,两款服务器还提供可选的 Twitch 聊天机器人。它会在聊天里预告自动场景切换。观众可以用 !bitrate 查询当前输入码率,管理员可以用 !refresh 短暂重新加载直播流。你和管理员还可以通过聊天指令启动、停止、更新或切换场景。
码率显示以浏览器来源的形式提供,你可以把当前输入码率作为叠加层显示在 OBS 里。
场景切换能让观众在你断线期间了解情况,但它不会让信号恢复,所以前面这些措施依然重要。
如何选择阈值
没有通用的数值,因为合适的阈值取决于你的硬件和移动网络。我们 IRL 服务器上的场景切换默认在码率低于 800 kbps 时从 Live 切到 Low。这个值可以修改,例如用 Twitch 聊天指令 !trigger 500。作为对比,NOALBS 文档的示例配置里,low 是 500 kbps,offline 是 450 kbps。
要找到自己的数值,可以在网络差的地方走一圈测试。记下画面开始卡顿时的码率,把阈值设在比它略高的位置。走的过程中也要确认场景不会在 Live 和 Low 之间来回跳。
开播前检查清单
- 在你要直播的时段,沿路线或在场馆里走一圈测试,使用你打算用的码率。
- 把码率设在持续上传速度以下并留出余量,如果应用支持,就开启自适应码率。
- 应用支持的话,用 SRT 或 SRTLA 代替普通 RTMP。
- 在编码器里把关键帧间隔设为 2 秒,SRT 延迟也设为 2 秒。
- 条件允许的话,用两家不同运营商的 SIM 卡或聚合设备,并选择离你直播地点最近的服务器位置。
- 在 OBS 里创建 Start、Live 和 Low 场景,并严格按这个名称命名。如果你用的是其他工具,就让名称与它的配置一致。
- 如果 OBS 运行在家里的电脑上,确认那条网络既能承受传入的直播流(下载),也能承受推往平台的直播流(上传)。
- 测试整条链路:关闭移动数据或开启飞行模式 30 秒,观察场景是否切换、之后是否切回。
- 满电出发,带上充电宝,让手机保持通风,并确认省电模式不会干扰你的直播应用。
- 开启 Twitch Disconnect Protection 这类平台保护功能作为额外保障,并向管理员说明聊天指令。
如果想先了解如何选择硬件、应用和设置,我们的IRL 直播指南有更详细的介绍。
FAQ
我的 IRL 直播为什么总是断线?
常见原因有:信号弱或没有信号、移动时的基站切换、活动现场基站过载、码率高于你的实际上传速度,以及手机过热或没电。用你计划的设置走一圈测试,就能看出是哪一种。
平台的断线保护能持续多久?
在 Twitch 上,Disconnect Protection 会显示提示并让你的直播保持在线,最长 90 秒。如果到时还没重连,直播就会结束。中间加了 OBS 的服务器方案没有这个限制,因为平台会持续收到来自 OBS 的不间断直播流。
用了服务器,还需要聚合吗?
它们解决的是不同的问题。聚合让手机到服务器的连接更可靠。服务器加 OBS 则保证,即使这条连接还是断了,平台上的直播也能撑住。两者配合,保护最充分。
码率降到多少该切换到 Low 场景?
这取决于你的硬件和移动网络。我们 IRL 服务器上的默认值是 800 kbps,可以修改,例如用 Twitch 聊天指令 !trigger 500。这个数值要靠走一圈测试来确定,不要照抄别人的数字:把阈值设在比画面明显开始卡顿的码率略高的位置。
自动场景切换适用于任何直播软件吗?
我们 IRL 端点服务器的场景切换工具只能与 Windows 或 macOS 上的 OBS Studio 搭配使用,不支持 vMix 或 Streamlabs OBS。NOALBS 是另一个独立的开源工具,同样通过 OBS WebSocket 5 配合 OBS Studio 工作。vMix 等其他软件仍可以用来接收直播流,但没有自动切换。