B站m9 BAS“跳转视频按钮”代码

随着flash播放器的逐步淘汰,B站的高级弹幕在经历了M7和M8之后,进入了m9 BAS高级弹幕时期。
作为跟目前的html5播放器适配的高级弹幕,m9 BAS也具有“显示一个按钮,点击按钮后可以跳转到相应目标视频”的功能。
现在UP主可以在自己的视频里发m9 BAS了,像是“系列视频”或者“相关视频”之类的,都可以加上这个按钮,方便视频之间的联动。

以下是这个功能的(写给比我还新的新手们看的、可以复制下来自己改的)代码,自己搞的注释,以及在一些场合里的(奇怪)应用方式。

打开m9 BAS代码模式的方法

注意:以下步骤可能因未来播放器改版而出现错误或失效。

  1. 打开b站视频网页,点击右上角“弹幕列表”处后面的三个点,打开菜单,选择“BAS弹幕”。
  2. 在BAS弹幕菜单的右上角,选择“代码模式”。
  3. 播放器下方弹出BAS弹幕的代码模式输入框,可以在里面写代码后发送。

单个跳转按钮适用代码

av号版本

def button b {
  text = "av1714157"
  x = 30%
  y = 37%
  fontSize = 5%
  textColor = 0xffffff
  fillColor = 0xFF9100
  fillAlpha = 0.8
  zIndex = 1
  target = av {
    av = 1714157
    page = 1
    time = 20.5s500ms
  }
  duration = 2s
}

解说:

def button b

定义按钮b,b可以随便改成你想起的按钮的名字。

text = “av1714157”

显示文字:把你想显示在按钮上的文字写在引号里面。

x = 30% y = 37%

按钮(左上角)所在的坐标。X是横坐标,Y是纵坐标。
不加百分号的话是绝对坐标(像素?),加百分号的时候是以播放器显示区域的宽度和高度为1,坐标为百分比。
无法确定坐标时,可以展开BAS弹幕的代码模式输入框,点击“坐标拾取”键,选择你想要放置按钮的地方,记下相应的百分比坐标。
因播放器大小与个人电脑屏幕设置有关,使用绝对坐标可能导致按钮错位,建议使用百分比坐标。

fontSize = 5%

按钮上的文字(就是上面那个text的内容)的字号。
同样是可以使用绝对字号和百分比字号,也同样建议使用百分比字号。
由于没有对按钮宽度高度的设置,字号的大小间接决定了按钮的大小,请注意。

textColor = 0xffffff
fillColor = 0xFF9100

textColor:按钮上的文字的颜色。fillColor:填充按钮本身的颜色。
例:textColor = 蓝色,fillColor = 白色,生成的按钮会是白色按钮,同时上面写着蓝色的字。
0xffffff和0xFF9100是html颜色代码,0x是固定前缀。
寻找颜色时可以展开BAS弹幕的代码模式输入框,点击“颜色拾取”键,鼠标挑选你想要的颜色并记下代码,或者搜索关键字【html颜色代码】。

fillAlpha = 0.8

按钮的透明度。完全透明是0,完全不透明是1。请根据自己需要填写。

zIndex = 1

层数。写在这里的数值越大,则该条弹幕在越上层。
……但是仅限于m9 bas的弹幕内部比较,其他弹幕全都在bas上面……

target = av {
av = 1714157
page = 1
time = 20.5s500ms
}

对跳转的目标视频进行设置。
av = 1714157 :在这里写上目标视频的av号。
page = 1 :当视频有多个分P时,指定跳转到第几P。
time = 20.5s500ms :指定跳转到该视频的第几分钟。时间单位支持s(秒)和ms(毫秒)。

duration = 2s

持续时间。按钮的存活时间。
在不设置“持续时间”时,默认的按钮存活时间是4s。
需要对按钮的特性进行改变时,建议删除duration条目,改为设置简单动画。见下条。

set b{} 7s then set b{x = 5%} 1s

简单动画。在需要改变按钮的部分设置时使用。
根据个人需求,可以写出不同的动作。具体写法可见下方【BV号版本】。
例:
set b{} 7s then set b{x = 5%} 1s
设定按钮b(在前面的设置不改变的情况下)存活7s,然后移动至横坐标x=5%,移动耗时1s。

以上代码的条目(属性)先后顺序对效果没有影响。
在搞清楚各条目(属性)对应的含义后,可以根据自身要求对相应部分的代码进行删减或添加。
写好之后点“测试效果”测试一下,没有问题的话,在需要按钮的时间点暂停,点击“发送弹幕”发出代码弹幕。
注意:代码部分务必用英文字母和半角符号来写,一定要让括号闭合,误用了全角字母空格和符号、缺少半截括号等情况会使代码无法正常执行。

BV号版本

def button b {
  text = "BV1i7411M7N9"
  x = 30%
  y = 37%
  fontSize = 5%
  textColor = 0xffffff
  fillColor = 0xFF9100
  fillAlpha = 0.8
  zIndex = 1
  target = av {
    bvid = BV1i7411M7N9
    page = 1
    time = 20.5s500ms
  }
}
set b{
   x = 30%
} 7s
then set b{
    x = 5%
} 1s

解说:除了把“av = 12345”换成了“bvid = BVQWERT”之外,没有区别……

多个跳转按钮适用代码

在为周刊类或者推荐刊类视频制作跳转弹幕时,以上代码就会显得比较麻烦了。
周刊类视频通常会有十多个甚至数十个视频推荐,一个一个发的话就要输入十几遍几十遍,次数一多就很容易出错。
但是因为按钮本身的部分属性限制,一般的写法难以起效。
在此提供一个可行的处理方式,特别感谢:想出了这个点子的hello80。

//东方推荐刊跳转弹幕示例by冰火混合物,感谢hello80协助
def button BT1 {
  text = " \n                               "
  x = -1000%
  y = -1000%
  fontSize = 2.5%
  textColor = 0xffffff
  fillColor = 0xFFffff
  fillAlpha = 0.2
  zIndex = 1
  target = av {
    bvid = BV1bs411r7Z6  
    page = 1
    time = 0ms
  }
}
def button BT2 {
  text = " \n                               "
  x = -1000%
  y = -1000%
  fontSize = 2.5%
  textColor = 0xffffff
  fillColor = 0xFFffff
  fillAlpha = 0.2
  zIndex = 1
  target = av {
    bvid = BV12E411A7Rd  
    page = 1
    time = 0ms
  }
}
def button BTX以下省略

set BT1{} 71150ms then set BT1{x = 20% y = 87%}0ms then set BT1{x = 20% y = 87%} 11000ms
set BT2{} 107210ms then set BT2{x = 20% y = 87%}0ms then set BT2{x = 20% y = 87%} 11000ms
set BTX{}以下省略

解说:
主催要求:推荐刊视频内有每个被推荐视频的标题,让观众点击标题就能直接跳转到对应视频。

  1. 选定按钮左上角所在的百分比坐标,调整字号、使用空格占位、\n进行换行(text和fontsize),扩充按钮的覆盖面积,使之完全遮盖住视频内的标题区域,方便观众点击。
  2. 将按钮底色设为白色(fillColor = 0xFFffff),透明度调整为0.2(fillAlpha = 0.2),覆盖的同时透出视频上的标题内容。
  3. 使用了简单动画,实现“一条弹幕发几十个按钮”的需求。
    • 首先,将该按钮的坐标设置到播放器外面去(x = -1000% y = -1000%,负数坐标,按钮已经在播放器外面了所以不会被看到)。
    • 动画第一步设置为“该按钮在屏幕外等待M秒”(set BT1{} Mms),M = 这个按钮需要出现在视频的第几秒。在第M秒,需要该按钮上场的时间段,进行动画第二步。
    • 第二步:让屏幕外面的按钮飞到它该在的位置上,这个“飞”的动作耗时0秒。(then set BT2{x = 正确坐标 y = 正确坐标}0ms)
    • 第三步:让按钮在正确的位置上存活N秒,消失。(then set BT2{x = 正确坐标 y = 正确坐标} Nms)
  4. 因为视频里的标题并不是一直存在,所以按钮也不是一直都在的。后来我用另外一组按钮代码,在右上角补充了一波按钮。
  5. 按照这个格式把整个推荐刊的视频全部在本地写完(写的时候记得随时保存),复制到BAS弹幕的代码模式输入框,在0秒处点“测试效果”测试一下是否有错误。
  6. 确认无误后,设置弹幕出现时间为“0毫秒”,点击“发送弹幕”。发送后要稍微等一两分钟,直接关掉的话可能没发出去……
  7. 为了不影响观看,覆盖标题的按钮透明度很低,以至于一般观众都注意不到233所以我在按钮上方补了一条颜色鲜亮的滚动提示“↓点击视频标题直接跳转”,这样比较能引起注意。
  8. 个人推荐使用notepad++或者是其他专门写代码的程序来写代码,用记事本来写的话太折磨了……

希望这个乱七八糟的总结能起到一点小小的作用,作为弱鸡我只能帮大家到这里了_(X3」∠)_

关联阅读:
m9 BAS代码参考文档:https://bilibili.github.io/bas/#/guide
m9 BAS内测情况及使用记录:https://binghuohunhewu.com/2019/02/08/m9%20BAS

文章目录
  1. 1. 打开m9 BAS代码模式的方法
  2. 2. 单个跳转按钮适用代码
    1. 2.1. av号版本
    2. 2.2. BV号版本
  3. 3. 多个跳转按钮适用代码
|