Slipstream Live 作者: Tail4126
自动检测 YouTube、Twitch 和 TwitCasting 直播延迟,智能调节播放速度,时刻追上最新直播画面(实时)。
扫码在 Android 版 Firefox 中打开此扩展
扩展元数据
屏幕截图
关于此扩展
主播开口说话的那一刻,和你看到画面的那一刻之间,总是存在几秒钟的延迟。这个延迟会随着网络每一次波动而不断变大,放任不管的话也不会自己缩小。
手动调成1.25倍速可以追上进度,但这样一来又得自己盯着缓冲余量,在耗尽之前把速度调回去。一忘记,画面就会卡在那个"转圈圈"的加载图标上。
Slipstream Live 这个扩展程序,替你完成这项盯梢工作,每秒大约执行50次检测。支持 YouTube Live、Twitch、TwitCasting。装好之后,你就什么都不用管了。
■ 不卡顿,不折腾。对稳定性的执念
只有在缓冲确实有余量时才会稍微加速(默认1.25倍),而在缓冲即将耗尽之前,会降到最低0.15倍,同时把音量也一起调低。由于系统的设计是必定在"转圈圈"出现前的最后一步就踩下刹车,所以能避免因加速过头而卡死。
追上之后,加速本身也会停止。直播画面只能按实际时间生成,所以追到最新进度后如果还保持倍速,播放就会赶超分段的到达,每隔几秒就卡顿一下,反而更慢。因此 Slipstream Live 会把"加速本应追回的秒数"和"实际追回的秒数"对照起来看,一旦发现加速没有效果,就先不加速。等到延迟重新累积起来,它会立刻恢复加速。
为了避免速度在临界值附近来回跳动,边界上特意留出了一点余地(滞后效应,即 hysteresis)。只要你在播放器里自己调整了速度,Slipstream Live 就会立刻把控制权交还给你(由于 Twitch 没有速度菜单,扩展转而抑制它与 Twitch 自身追帧功能之间的冲突)。音量降低(ducking)也只是临时性的调整,绝不会擅自改写你的音量设置。除了每20毫秒一次的计时器之外,还会通过视频本身的事件来确认状态,所以即便浏览器在后台标签页里精简了计时器,控制也不会中断。
■ 内核其实相当较真:用统计学预测缓冲的"谷底"
视频是以几秒钟一个的数据块(分段)送达的,因此缓冲余量会画出一条"锯齿波",忽高忽低。如果恰好测到波峰就加速,紧接着的谷底就可能让缓冲耗尽,导致画面卡住。
因此 Slipstream Live 不相信单次的测量值,而是通过短时间内的平均值和标准差,用统计学方法推算谷底本身的位置。
trough(谷底)= 平均值 − √3 × 标准差
利用均匀分布的性质,即使不知道该直播的分段时长,也能求出谷底的位置。此外,因为自身加速而导致的缓冲下降,也会被精确地从统计数据中补偿剔除,所以不会出现"加速→余量耗尽→调回→再次加速"这种自激振荡。在直播刚开始,或刚从卡顿中恢复之后这类缓冲水平本身还在变动的阶段,系统会判定为"尚未进入稳态",暂停谷底推算,避免混入被污染的数据。
room(安全余量)= 谷底平均值 − K × 谷底波动幅度
在数据不足的情况下,这个 room 会自动变为"NaN",判定也必定会倒向 false 一侧。也就是说,"不确定时什么都不做"这一点,是由逻辑本身来保证的。感兴趣的话,可以在页面控制台输入 window.__slipstreamliveDebug = true,实时查看 room、drift、calm 等内部数值。
"自动调节缓冲阈值"分为关闭/稳定/标准/积极四档。网络不稳定的直播会自然而然地减少加速;而稳定的直播则会稳稳地追到最新进度。其中最谨慎的"稳定",也很适合速度变化会直接传到耳朵里的音乐直播。
■ 连各直播平台的脾气都摸透了
YouTube、Twitch、TwitCasting 三者不论是播放器的内部结构,还是缓冲消耗的习惯都完全不同。Twitch 的视频数据有时会中断约10秒,因此它的最大减速阈值设置得比较宽松;TwitCasting 本身缓冲就比较浅,所以设置得更薄;Firefox 上报缓冲数据的方式本身就不一样,因此为它准备了专属的默认值——就是这样按平台逐一调优的。像 TwitCasting 的低延迟(WebRTC)直播这类本来就无法进行控制的直播,会被自动排除在外。VOD、剪辑、广告也一律不会碰。YouTube 的首播默认同样不在控制范围内——首播的意义在于大家一起看同一个瞬间,追上进度只会让你跑到聊天室前面,所以交给需要的人自行开启。
在 Twitch 上,播放器有时会因为"错误 #3000"这类带编号的错误而彻底停住。Slipstream Live 检测到之后,会替你按下 Twitch 自己弹出的重新加载按钮(默认开启)。由于不会重新加载页面,聊天记录和观看位置都不会丢失,大约一秒钟画面就能回来。它会先稍等一下,之后逐渐拉长间隔重试几次就收手,以免对着一场已经结束的直播反复折腾。
■ 运行期间完全不联网
在你观看直播的整个过程中,扩展程序一次都不会连接外部服务器。没有数据分析、没有遥测、没有标识符、也没有广告。所需的权限只有两项:用于把设置保存在本地的"storage",以及打开弹窗时用来判断当前标签页是不是支持站点的"activeTab"。网站访问权限同样仅限于支持的三个站点(YouTube、Twitch、TwitCasting),设置内容不会同步,只会保存在你本地设备上。唯一的例外是卸载时,浏览器会打开一份自愿填写的问卷。扩展程序只是事先登记了一个固定网址,不会附带任何标识符、设置内容或你看过的直播信息。
此外还配备了显示播放速度、延迟秒数、缓冲余量的可选徽标(默认关闭)、支持9种语言的设置界面,以及每个选项都配有的"?"帮助说明和按区块重置的按钮。
不必一直盯着,也能持续追上直播的"此刻"。欢迎试试 Slipstream Live。
手动调成1.25倍速可以追上进度,但这样一来又得自己盯着缓冲余量,在耗尽之前把速度调回去。一忘记,画面就会卡在那个"转圈圈"的加载图标上。
Slipstream Live 这个扩展程序,替你完成这项盯梢工作,每秒大约执行50次检测。支持 YouTube Live、Twitch、TwitCasting。装好之后,你就什么都不用管了。
■ 不卡顿,不折腾。对稳定性的执念
只有在缓冲确实有余量时才会稍微加速(默认1.25倍),而在缓冲即将耗尽之前,会降到最低0.15倍,同时把音量也一起调低。由于系统的设计是必定在"转圈圈"出现前的最后一步就踩下刹车,所以能避免因加速过头而卡死。
追上之后,加速本身也会停止。直播画面只能按实际时间生成,所以追到最新进度后如果还保持倍速,播放就会赶超分段的到达,每隔几秒就卡顿一下,反而更慢。因此 Slipstream Live 会把"加速本应追回的秒数"和"实际追回的秒数"对照起来看,一旦发现加速没有效果,就先不加速。等到延迟重新累积起来,它会立刻恢复加速。
为了避免速度在临界值附近来回跳动,边界上特意留出了一点余地(滞后效应,即 hysteresis)。只要你在播放器里自己调整了速度,Slipstream Live 就会立刻把控制权交还给你(由于 Twitch 没有速度菜单,扩展转而抑制它与 Twitch 自身追帧功能之间的冲突)。音量降低(ducking)也只是临时性的调整,绝不会擅自改写你的音量设置。除了每20毫秒一次的计时器之外,还会通过视频本身的事件来确认状态,所以即便浏览器在后台标签页里精简了计时器,控制也不会中断。
■ 内核其实相当较真:用统计学预测缓冲的"谷底"
视频是以几秒钟一个的数据块(分段)送达的,因此缓冲余量会画出一条"锯齿波",忽高忽低。如果恰好测到波峰就加速,紧接着的谷底就可能让缓冲耗尽,导致画面卡住。
因此 Slipstream Live 不相信单次的测量值,而是通过短时间内的平均值和标准差,用统计学方法推算谷底本身的位置。
trough(谷底)= 平均值 − √3 × 标准差
利用均匀分布的性质,即使不知道该直播的分段时长,也能求出谷底的位置。此外,因为自身加速而导致的缓冲下降,也会被精确地从统计数据中补偿剔除,所以不会出现"加速→余量耗尽→调回→再次加速"这种自激振荡。在直播刚开始,或刚从卡顿中恢复之后这类缓冲水平本身还在变动的阶段,系统会判定为"尚未进入稳态",暂停谷底推算,避免混入被污染的数据。
room(安全余量)= 谷底平均值 − K × 谷底波动幅度
在数据不足的情况下,这个 room 会自动变为"NaN",判定也必定会倒向 false 一侧。也就是说,"不确定时什么都不做"这一点,是由逻辑本身来保证的。感兴趣的话,可以在页面控制台输入 window.__slipstreamliveDebug = true,实时查看 room、drift、calm 等内部数值。
"自动调节缓冲阈值"分为关闭/稳定/标准/积极四档。网络不稳定的直播会自然而然地减少加速;而稳定的直播则会稳稳地追到最新进度。其中最谨慎的"稳定",也很适合速度变化会直接传到耳朵里的音乐直播。
■ 连各直播平台的脾气都摸透了
YouTube、Twitch、TwitCasting 三者不论是播放器的内部结构,还是缓冲消耗的习惯都完全不同。Twitch 的视频数据有时会中断约10秒,因此它的最大减速阈值设置得比较宽松;TwitCasting 本身缓冲就比较浅,所以设置得更薄;Firefox 上报缓冲数据的方式本身就不一样,因此为它准备了专属的默认值——就是这样按平台逐一调优的。像 TwitCasting 的低延迟(WebRTC)直播这类本来就无法进行控制的直播,会被自动排除在外。VOD、剪辑、广告也一律不会碰。YouTube 的首播默认同样不在控制范围内——首播的意义在于大家一起看同一个瞬间,追上进度只会让你跑到聊天室前面,所以交给需要的人自行开启。
在 Twitch 上,播放器有时会因为"错误 #3000"这类带编号的错误而彻底停住。Slipstream Live 检测到之后,会替你按下 Twitch 自己弹出的重新加载按钮(默认开启)。由于不会重新加载页面,聊天记录和观看位置都不会丢失,大约一秒钟画面就能回来。它会先稍等一下,之后逐渐拉长间隔重试几次就收手,以免对着一场已经结束的直播反复折腾。
■ 运行期间完全不联网
在你观看直播的整个过程中,扩展程序一次都不会连接外部服务器。没有数据分析、没有遥测、没有标识符、也没有广告。所需的权限只有两项:用于把设置保存在本地的"storage",以及打开弹窗时用来判断当前标签页是不是支持站点的"activeTab"。网站访问权限同样仅限于支持的三个站点(YouTube、Twitch、TwitCasting),设置内容不会同步,只会保存在你本地设备上。唯一的例外是卸载时,浏览器会打开一份自愿填写的问卷。扩展程序只是事先登记了一个固定网址,不会附带任何标识符、设置内容或你看过的直播信息。
此外还配备了显示播放速度、延迟秒数、缓冲余量的可选徽标(默认关闭)、支持9种语言的设置界面,以及每个选项都配有的"?"帮助说明和按区块重置的按钮。
不必一直盯着,也能持续追上直播的"此刻"。欢迎试试 Slipstream Live。
评分 0(1 位用户)
权限与数据
必要权限:
- 访问您用于 twitcasting.tv 域名的网站的数据
- 访问您在 www.youtube.com 的数据
- 访问您在 m.youtube.com 的数据
- 访问您在 www.youtube-nocookie.com 的数据
- 访问您在 www.twitch.tv 的数据
- 访问您在 player.twitch.tv 的数据
- 访问您在 clips.twitch.tv 的数据
- 访问您在 twitcasting.tv 的数据
收集的数据:
- 开发者称此扩展无需收集数据。
更多信息