Skip to content

2024.10.1

Latest
Compare
Choose a tag to compare
@xmcp xmcp released this 27 Sep 17:12
· 16 commits to master since this release

pakku 2024.10.1 版本主要增加了针对B站最近频繁更新的弹幕智能云屏蔽功能的相关选项。

以下是 2024.10.1 版本相比于 2024.7.1 的变化。

新功能

阻止弹幕云屏蔽

B站近期灰度测试了多个版本的 弹幕智能云屏蔽 功能。此功能将隐藏部分权重较低的弹幕,且在播放器设置中无法完全关闭。

已有很多用户反馈此功能效果欠佳,且与 pakku 的 “自动弹幕优选” 功能互相干扰。因此,pakku 2024.10.1 版本增加了选项来阻止此功能生效。

image

如果你希望回退到播放器原先的可以设定等级的屏蔽功能,可以在勾选此选项的同时,添加以下 全局用户脚本。同时也可以尝试 pakku 的自动弹幕优选功能作为代替。

const FILTER_LEVEL = 3; // 仅保留权重大于等于此值的弹幕,权重范围一般为1到11

tweak_after_pakku(c=>{
  let orig_len = c.objs.length;
  c.objs = c.objs.filter(d => d.weight >= FILTER_LEVEL);
  console.log('weight filtering:', orig_len, '->', c.objs.length);
});

自动弹幕优选的逻辑改进

pakku 2024.10.1 版本重写了自动弹幕优选的逻辑。之前的逻辑只会丢弃权重为 1 且未被合并的弹幕,因此对于个别弹幕实在过多的视频,弹幕密度依然会远超设置的阈值。 目前的逻辑将灵活处理这种情况,从效果上优于之前的版本,应该也优于播放器的弹幕智能云屏蔽功能。

如果你真的想知道目前的逻辑,以下是详细解释:

首先,对于一条弹幕,我们计算它的字符串长度 L,其中 ₍₁₂₃₎ 等角标数字记为 0.3 个字符。设它的字号为 S(默认为 25),则这条弹幕对弹幕密度的贡献定义为:

$\sqrt{L} \times \text{max}(\text{min}(\frac{S}{25}, 2.5), 0.7)^{1.5}$ (此公式对应 dispval 函数)

某个时间点 t 的弹幕密度定义为 t 减去 4.5 秒到 t 之间这段时间内所有弹幕的贡献之和。这就是打开 “弹幕密度分析图” 之后在图表上看到的数字。

如果自动弹幕优选的阈值设置为 T,那么 pakku 会从前到后依次遍历每条弹幕,若此时弹幕密度 V 大于 T,设当前弹幕由 n 个弹幕合并而成,其权重的最大值为 w(介于 1 到 11 之间),则按以下公式计算丢弃此弹幕的概率:

$p = \frac{V-T}{T} - \frac{w-1}{10} - \frac{\sqrt{n}-1}{2}$ (此公式对应 judge_drop 函数)

pakku 将按照概率 p 丢弃这条弹幕(如果大于 1,将一定丢弃此弹幕;如果小于 0,则不会丢弃此弹幕)。如果此弹幕被丢弃,则它不再计入后续的弹幕密度计算。

由于目前的逻辑会丢弃更多的弹幕,在更新之后你可能需要把阈值稍微调高一些,来维持与之前相近的效果。被此功能删除的弹幕数量可以在统计信息面板中查看。

image

角标可以显示最大弹幕密度

此前,pakku 可以在角标上显示过滤掉的弹幕数量或百分比。现在可以设置为显示最大弹幕密度。

image

已知情况 1:只有打开了 “自动减小字号” 或 “自动弹幕优选” 时 pakku 才会计算弹幕密度。因此如果这两个功能都没有打开,角标将显示为 0。此问题将在下一个版本修复。

已知情况 2:如果你打开了 “自动减小字号” 功能,则角标显示的数值可能大于在弹幕密度分析图上看到的数值。这是因为前者是在缩小前计算的,后者是在缩小后计算的。

其他改进

  • (2024.10.1)改进了对个别视频获取弹幕分段数量的逻辑
  • (2024.10.1)调整了 “自动减小字号” 功能的预设强度

Bug 修复

  • (2024.8.1)弹幕信息显示框的快捷键功能与新版播放器不兼容
  • (2024.10.2)从旧版本迁移设置可能出错
  • (2024.10.1)输出XML格式时maxlimit字段有误