weizhenye/Danmaku

不知道为什么 某些b站视频会跳错误

a1018148046 opened this issue · 15 comments

InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable
http://www.bilibili.com/video/av6525542/ 2分多的时候
使用的弹幕解析器是用的你的

你是在 B 站的页面上用油猴脚本替换成 Danmaku 吗?我没法测试啊。
错误是哪丢出来的?查了下,估计是视频本身的原因,与弹幕无关。

在你的测试页面用这个视频(只是使用了那视频的弹幕)也是跳错误 我这边初步测试了一下 不是弹幕文字部分错误(要修这个bug赶紧修。。。过一会说不定这视频弹幕文件刷新后就不会复现了) 好吧 刚刚又测试了一下 这问题没法复现了。。。。看起来弹幕文件已经刷新

你之后遇到这个情况的话把 B 站的 xml 弹幕文件下载下来提供一下吧

嗯 下次遇到得保存xml了 这次有点蒙逼居然没第一时间保存xml

http://share.weiyun.com/5041a1690d909bd229e7a32c1d549548
40多秒后 有时候会跳有时候没跳 canvas模式 edge和火狐下测试都会跳错误 世界之窗7没事 ie懒得测试

Edge 14 和 Firefox 48 都无法复现。
这个错误是报在哪个文件第几行?是进度条跳转到某一秒后报错还是正常播放到某一秒报错?
你提供下完整的复现方法。

错误是在this.stage.context.drawImage(cmt.canvas, cmt.x, cmt.y); 这一行 复现我这边一直能复现啊。。。可以的话要不要加个qq远程看看(1018148046)

不想用 QQ。
,应该能确定是 cmt.canvas 的宽或高为 0 导致的,你在 drawImage 这行前面加句 if (!cmt.width || !cmt.height) console.log(cmt); 输出看下是什么鬼,那个 xml 文件里似乎也没有空字符串啊……

顺便说下 之前我把所有弹幕文字换成'a' 也还是会跳错 应该不是文字部分的问题

我这边始终无法复现,可能要你帮忙调试了。
找到 measureText 那行,在 ctx.font = font; 之后输出看下会报错的那条 ctx.font, cmt.text, ctx.measureText(cmt.text).width 分别是什么。
另外,仅仅是猜测,你把 Firefox 浏览器默认字体调成系统的默认字体再试一下。

qq 20161006174400我火狐的字体本来就没调过

看上去不是 measureText 的问题就放心了,不然都不知道怎么解决了。
你传网盘的那个文件里没有这条弹幕,cmt.canvasStyle 长什么样?xml 中这条弹幕长什么样?估计是转换脚本的问题。

http://share.weiyun.com/e68908132c755f13b47a9a2a82a47ca1 我把localStorage里的数据提取出来了

转换过来后 font-size 就是 0px 了,估计是 xml 里面就是 0 了,感觉是 B 站输出的问题。