恢复Bilibili旧版页面,为了那些念旧的人。
< Spätná väzba na Bilibili 旧播放页
@wly5556 说道: 下午2点B站上线了4k清晰度 用旧播放器试了试之后发现,解码播放4k完全正常,但是清晰度切换会出现问题 --如果打开视频时默认加载1080+ ,选择切换到4k时会提示“切换失败”。并且切换到其他清晰度之后,“4k”的选项会消失
--如果打开视频时默认加载4k,播放器加载的实际上是非大会员1080P画质下的视频。需要手动在页面内切换到其他清晰度 再切换回4k才能正常加载 (显示4k实际1080P)
--同时观看人数上千的4k视频,大概率4k选项会消失。同时观看人数较少的视频不会出现这个问题
能用上旧播放器已经很满足了。这些新功能带来的问题,无论能不能解决掉,都很感谢作者!
为什么会这样了,明明B站整新花样是好事……
喜欢这样不断创新的Bilibili,却还是不希望旧播放器被抛弃
说话回来,能提列举下类似的av(BV)号供测试吗,消息闭塞如我并没有找到相关的信息?
@"Motoori Kashin" 说道:
@wly5556 说道: 下午2点B站上线了4k清晰度 用旧播放器试了试之后发现,解码播放4k完全正常,但是清晰度切换会出现问题 --如果打开视频时默认加载1080+ ,选择切换到4k时会提示“切换失败”。并且切换到其他清晰度之后,“4k”的选项会消失
--如果打开视频时默认加载4k,播放器加载的实际上是非大会员1080P画质下的视频。需要手动在页面内切换到其他清晰度 再切换回4k才能正常加载 (显示4k实际1080P)
--同时观看人数上千的4k视频,大概率4k选项会消失。同时观看人数较少的视频不会出现这个问题
能用上旧播放器已经很满足了。这些新功能带来的问题,无论能不能解决掉,都很感谢作者!
为什么会这样了,明明B站整新花样是好事……
喜欢这样不断创新的Bilibili,却还是不希望旧播放器被抛弃
说话回来,能提列举下类似的av(BV)号供测试吗,消息闭塞如我并没有找到相关的信息?
av412878419 (同时播放人数最多,但是貌似现在不会出现4k选项消失的问题了,前两个问题依然存在) av837857904 av795289523 av925374962 av925302005 av667832969 4k大概还在测试,只有几个up在同一时间放出了4k视频 (av710415477 一个up尝试投稿4k没有成功) 还是挺惊讶不加修改的旧播放器能直接上4k的
@wly5556 说道:
@"Motoori Kashin" 说道:
@wly5556 说道: 下午2点B站上线了4k清晰度 用旧播放器试了试之后发现,解码播放4k完全正常,但是清晰度切换会出现问题 --如果打开视频时默认加载1080+ ,选择切换到4k时会提示“切换失败”。并且切换到其他清晰度之后,“4k”的选项会消失
--如果打开视频时默认加载4k,播放器加载的实际上是非大会员1080P画质下的视频。需要手动在页面内切换到其他清晰度 再切换回4k才能正常加载 (显示4k实际1080P)
--同时观看人数上千的4k视频,大概率4k选项会消失。同时观看人数较少的视频不会出现这个问题
能用上旧播放器已经很满足了。这些新功能带来的问题,无论能不能解决掉,都很感谢作者!
为什么会这样了,明明B站整新花样是好事……
喜欢这样不断创新的Bilibili,却还是不希望旧播放器被抛弃
说话回来,能提列举下类似的av(BV)号供测试吗,消息闭塞如我并没有找到相关的信息?
av412878419 (同时播放人数最多,但是貌似现在不会出现4k选项消失的问题了,前两个问题依然存在) av837857904 av795289523 av925374962 av925302005 av667832969 4k大概还在测试,只有几个up在同一时间放出了4k视频 (av710415477 一个up尝试投稿4k没有成功) 还是挺惊讶不加修改的旧播放器能直接上4k的
感谢!
能播放我倒是不意外,毕竟旧版播放器配合修车插件还能播放本地视频
我会测试一下问题所在,但不敢承诺可以解决,毕竟重写网页框架容易,添加功能于我而言还是太难了(首页还有几个问题至今无从下手)
@wly5556
当前已主动配置了playinfo数据,至少av页会正常出现4k选项,不过会不会切换失败未知(非大会员的我切换不到4K画质进行测试……)
Bangumi和稍后再看不会有4K选项,因为播放器在请求视频地址时服务器默认不会返回4k地址,新播放器是通过添加fourk
这个参数服务器才返回了4k地址,旧播放器已失去维护肯定不会主动添加上fourk
参数。
目前能想到的解决办法是通过xhr钩子修改播放器playurl请求并主动添加上fourk
参数(这可能也是以后旧版接口失效的话可能的解决办法)
xhr钩子将代理也页面所有xhr链接,贸然引进会不会引发隐私和安全方面的问题?毕竟脚本还为处理失效视频信息开起了跨域权限……
除了xhr钩子,不知道是不是有别的办法添加参数。
不过我在想灰度测试完成后,B站应该会大力推广4K,那时应该不带fourk
参数也会默认返回4k地址吧,但愿!
@"Motoori Kashin" 说道: @wly5556
当前已主动配置了playinfo数据,至少av页会正常出现4k选项,不过会不会切换失败未知(非大会员的我切换不到4K画质进行测试……)
Bangumi和稍后再看不会有4K选项,因为播放器在请求视频地址时服务器默认不会返回4k地址,新播放器是通过添加
fouk
这个参数服务器才返回了4k地址,旧播放器已失去维护肯定不会主动添加上fouk
参数。目前能想到的解决办法是通过xhr钩子修改播放器playurl请求并主动添加上
fouk
参数(这可能也是以后旧版接口失效的话可能的解决办法)xhr钩子将代理也页面所有xhr链接,贸然引进会不会引发隐私和安全方面的问题?毕竟脚本还为处理失效视频信息开起了跨域权限……
除了xhr钩子,不知道是不是有别的办法添加参数。
不过我在想灰度测试完成后,B站应该会大力推广4K,那时应该不带
fouk
参数也会默认返回4k地址吧,但愿!
感谢!
不过这个问题还存在
打开视频时默认加载清晰度为4k,播放器加载的实际上是非大会员1080P画质下的视频源,需要手动在页面内切换到其他清晰度,再切换回4k才能实际加载4k源
花了时间在video.min.js之中找到由G = (Object.defineProperty(j, "details", {
开始的一段代码
(大概是用来判断会员观看权限的数据)
于是添加4k有关信息之后,播放器能够正常自动加载4k,不需要手动切换一次清晰度,基本修复了这个问题
相信有更好的解决办法,发上论坛来看看大家的意见 (这问题几乎不影响使用,现版本已经够用了。感谢作者一直以来的努力)
@wly5556 说道:
3.0版本用上xhr钩子之后解决了大部分4k相关问题,赞
不过这个问题还存在
打开视频时默认加载清晰度为4k,播放器加载的实际上是非大会员1080P画质下的视频源,需要手动在页面内切换到其他清晰度,再切换回4k才能实际加载4k源
花了时间在video.min.js之中找到由
G = (Object.defineProperty(j, "details", {
开始的一段代码 (大概是用来判断会员观看权限的数据)于是添加4k有关信息之后,播放器能够正常自动加载4k,不需要手动切换一次清晰度,基本修复了这个问题
相信有更好的解决办法,发上论坛来看看大家的意见 (这问题几乎不影响使用,现版本已经够用了。感谢作者一直以来的努力)
哇,感谢,阁下也是厉害,看别人的源码已经够难的,看这种压缩过的源码简直头皮发麻。修改video.min.js源码的确是个办法。不过我很好奇但无法测试番剧那边也有video.min.js,为什么几个人都反馈番剧那边测试没问题,不知道你那边测试是不是这样?
@MotooriKashin 说道: 哇,感谢,阁下也是厉害,看别人的源码已经够难的,看这种压缩过的源码简直头皮发麻。修改video.min.js源码的确是个办法。不过我很好奇但无法测试番剧那边也有video.min.js,为什么几个人都反馈番剧那边测试没问题,不知道你那边测试是不是这样?
是的,番剧页面中没有这个问题
番剧页请求视频分段的脚本是bilibiliPlayer.min.js?lastModified=2019-10-31T07:38:36.004Z
,普通视频页的是video.min.js
,大概内部逻辑不同
video.min.js
中有一段画质上限判断代码
原本4k的值不存在,就会被改成非会员下最高的画质1080P
在bilibiliPlayer.min.js?lastModified=2019-10-31T07:38:36.004Z
还暂时没找到类似的操作
@wly5556 说道: 在
bilibiliPlayer.min.js?lastModified=2019-10-31T07:38:36.004Z
还暂时没找到类似的操作感谢辛苦测试,这样的话,看起来只能修改
video.min.js
了,可不到万不得已我真的不想修改b站原生脚本 我注意到av页video.min.js
也是会请求bilibiliPlayer.min.js?lastModified=2019-10-31T07:38:36.004Z
,只是在请求playurl
之后,那是不是对于多p的4k(应该有这样的视频吧),切p的话是可以正常加载4k画质呢? 另外我还有一个想法没法验证:把一个4k视频加入一个单独的收藏夹,并在收藏页面点击“播放全部”,这样会重定向到av页(可能需要打开设置里的medialist项),这种情况下是否能正常加载4k视画质呢? 4k画质我真的没办法测试,所以只能再次拜托了。
切p的话是可以正常加载4k画质呢? 切p后能自动加载4k 把一个4k视频加入一个单独的收藏夹,并在收藏页面点击“播放全部”,这样会重定向到av页(可能需要打开设置里的medialist项),这种情况下是否能正常加载4k视画质呢? 这个情况下也是正常的
@wly5556 说道:
切p的话是可以正常加载4k画质呢? 切p后能自动加载4k 把一个4k视频加入一个单独的收藏夹,并在收藏页面点击“播放全部”,这样会重定向到av页(可能需要打开设置里的medialist项),这种情况下是否能正常加载4k视画质呢? 这个情况下也是正常的
那我可能有办法……
@MotooriKashin 说道: 那我可能有办法…… 感谢,
v3.0.5
完全解决了问题
另一个讨论串有提到 @yjceyy 说道: 3.0.4番剧正常 异常生物见闻录 但是 某些UP的 4K视频依然黑屏 只有声音 3.0.3 3.0.5番剧不正常 4K 视频 也一样
我是win8.1+69 内核百分浏览器 在我这里没有出现相同的问题... 刷新一遍播放器也不应该把画面弄没啊= =
@wly5556 说道: 感谢,
v3.0.5
完全解决了问题 应该也没有解决,刷新播放器其实请求了第二次链接,但这个链接是flv的,而flv是不提供4k画质的,所以从其他画质切换到4k会失败,我这里测试是这个样子。 而又不该直接hook所有flv到dash,因为无法区分什么时候真的需要flv 想了一下还是提供一个设置选项,开启二次初始化播放器并hook flv到dash,默认不启用
@MotooriKashin 说道:
@wly5556 说道: 感谢,
v3.0.5
完全解决了问题 应该也没有解决,刷新播放器其实请求了第二次链接,但这个链接是flv的,而flv是不提供4k画质的,所以从其他画质切换到4k会失败,我这里测试是这个样子。 而又不该直接hook所有flv到dash,因为无法区分什么时候真的需要flv 想了一下还是提供一个设置选项,开启二次初始化播放器并hook flv到dash,默认不启用
原来是这样= =
发现脚本video.b1b7706abd590dd295794f540f7669a5d8d978b3.js
中负责切p的调用简介有力,可以用来刷新播放器
this.setP(t + 1), window.GrayManager && window.GrayManager.reload(e), window.BiliCm && window.BiliCm.Core && window.BiliCm.Core.reset()
不知道这样算不算个办法...
@wly5556 说道: 发现脚本
video.b1b7706abd590dd295794f540f7669a5d8d978b3.js
中负责切p的调用简介有力,可以用来刷新播放器
的确简洁有力,这样刷新播放器直接请求的就是dash链接,没有要hook flv的烦恼 这一串代码我是看不太懂了,尤其两个指令之间不用分号而是逗号是什么鬼,逗号编辑器会提示语法有问题,改成分号似乎也没什么不妥。 再次感谢你的辛苦研究。
另外你的发现让我想到了另一个未解决的问题,不知道有没有刷新评论区的简洁而有力的调用。要知道av页切p是不会刷新评论区的,番剧页是会的,而我借用av页实现的“播放全部收藏”的功能,切p时其他信息我可以手动更新,评论区实在太复杂。如果有一个调用传入几个参数就能直接刷新评论区就好了。但也可能并不存在吧。
@MotooriKashin 说道:
@wly5556 说道: 发现脚本
video.b1b7706abd590dd295794f540f7669a5d8d978b3.js
中负责切p的调用简介有力,可以用来刷新播放器的确简洁有力,这样刷新播放器直接请求的就是dash链接,没有要hook flv的烦恼 这一串代码我是看不太懂了,尤其两个指令之间不用分号而是逗号是什么鬼,逗号编辑器会提示语法有问题,改成分号似乎也没什么不妥。 再次感谢你的辛苦研究。
另外你的发现让我想到了另一个未解决的问题,不知道有没有刷新评论区的简洁而有力的调用。要知道av页切p是不会刷新评论区的,番剧页是会的,而我借用av页实现的“播放全部收藏”的功能,切p时其他信息我可以手动更新,评论区实在太复杂。如果有一个调用传入几个参数就能直接刷新评论区就好了。但也可能并不存在吧。
试着找了找,同样是在video.b1b7706abd590dd295794f540f7669a5d8d978b3.js
里,这部分用来初始化评论
$(".comment").find("*").off(),
$(".comment").html(""),
$(".comment ~ .b-head .results").html("");
var e, i = "";
(e = window.location.href.match(/#fb,([0-9]+),([0-9]+),([0-9]+),(.+)$/)) ? i = e[3] : (e = window.location.href.match(/#reply([0-9]+)$/)) && (i = e[1]),
new bbComment(".comment",this.aid,1,t,i)
其中bbComment的参数t是用户账号信息,可用unsafeWindow.UserStatus.userInfo代替
@wly5556 说道:
@MotooriKashin 说道:
@wly5556 说道: 发现脚本
video.b1b7706abd590dd295794f540f7669a5d8d978b3.js
中负责切p的调用简介有力,可以用来刷新播放器的确简洁有力,这样刷新播放器直接请求的就是dash链接,没有要hook flv的烦恼 这一串代码我是看不太懂了,尤其两个指令之间不用分号而是逗号是什么鬼,逗号编辑器会提示语法有问题,改成分号似乎也没什么不妥。 再次感谢你的辛苦研究。
另外你的发现让我想到了另一个未解决的问题,不知道有没有刷新评论区的简洁而有力的调用。要知道av页切p是不会刷新评论区的,番剧页是会的,而我借用av页实现的“播放全部收藏”的功能,切p时其他信息我可以手动更新,评论区实在太复杂。如果有一个调用传入几个参数就能直接刷新评论区就好了。但也可能并不存在吧。
试着找了找,同样是在
video.b1b7706abd590dd295794f540f7669a5d8d978b3.js
里,这部分用来初始化评论
$(".comment").find("*").off(), $(".comment").html(""), $(".comment ~ .b-head .results").html(""); var e, i = ""; (e = window.location.href.match(/#fb,([0-9]+),([0-9]+),([0-9]+),(.+)$/)) ? i = e[3] : (e = window.location.href.match(/#reply([0-9]+)$/)) && (i = e[1]), new bbComment(".comment",this.aid,1,t,i)
其中bbComment的参数t是用户账号信息,在header.js里请求/x/web-interface/nav得到,不用做修改
哇!这也太强了!我一直以为在comment.min.js
里!
其中bbComment的参数t是用户账号信息,在header.js里请求/x/web-interface/nav得到,不用做修改 window.UserStatus.userInfo可以直接用作参数t
触发评论审核机制了,不能及时回复... 也没多强啦,花时间翻调用栈能发现很多
video.b1b7706abd590dd295794f540f7669a5d8d978b3.js
肯定有更多东西可以找出来 b站的开发没有把混淆拉满,真是好事
@wly5556 说道:
其中bbComment的参数t是用户账号信息,在header.js里请求/x/web-interface/nav得到,不用做修改 window.UserStatus.userInfo可以直接用作参数t
触发评论审核机制了,不能及时回复... 也没多强啦,花时间翻调用栈能发现很多
video.b1b7706abd590dd295794f540f7669a5d8d978b3.js
肯定有更多东西可以找出来 b站的开发没有把混淆拉满,真是好事
感谢。调试什么的我真不会,bilibiliPlayer
调用是直接在网页源代码里找到的=>范例
var player = new bilibiliPlayer({
aid: GetUrlValue('aid'),
cid: GetUrlValue('cid'),
bvid: GetUrlValue('bvid'),
show_bv: window.show_bv,
danmaku: GetUrlValue('danmaku') !== null ? (GetUrlValue('danmaku') == 0 ? false : true) : true,
autoplay: GetUrlValue('autoplay') ? true : false,
as_wide: GetUrlValue('as_wide') ? 1 : false,
player_type: GetUrlValue('player_type') || 0,
pre_ad: GetUrlValue('pre_ad') || 0,
lastplaytime: GetUrlValue('lastplaytime'),
enable_ssl: GetUrlValue('enable_ssl') || 1,
enable_ssl_resolve: GetUrlValue('enable_ssl_resolve') !== null ? (GetUrlValue('enable_ssl_resolve') == 0 ? false : true) : true,
enable_ssl_stream: GetUrlValue('enable_ssl_stream') !== null ? (GetUrlValue('enable_ssl_stream') == 0 ? false : true) : true,
extra_params: GetUrlValue('urlparam') ? decodeURIComponent(GetUrlValue('urlparam')) : null,
seasonId: GetUrlValue('seasonId'),
episodeId: GetUrlValue('episodeId'),
season_type: GetUrlValue('season_type'),
pb: GetUrlValue('pb'),
last_ep_id: GetUrlValue('last_ep_id'),
has_next: GetUrlValue('has_next'),
b: GetUrlValue('b'),
p: GetUrlValue('p') || 1,
t: GetUrlValue('t'),
d: GetUrlValue('d'),
record: record
});
阅读video.b1b7706abd590dd295794f540f7669a5d8d978b3.js
那种函数名只有一个两个字母的实在头疼。也曾试过直接在js文件里添加debugger
命令,step两下就不知道跑哪里去了。
4k清晰度切换问题
下午2点B站上线了4k清晰度 用旧播放器试了试之后发现,解码播放4k完全正常,但是清晰度切换会出现问题 --如果打开视频时默认加载1080+ ,选择切换到4k时会提示“切换失败”。并且切换到其他清晰度之后,“4k”的选项会消失
--如果打开视频时默认加载4k,播放器加载的实际上是非大会员1080P画质下的视频。需要手动在页面内切换到其他清晰度 再切换回4k才能正常加载 (显示4k实际1080P)
--同时观看人数上千的4k视频,大概率4k选项会消失。同时观看人数较少的视频不会出现这个问题怀疑原因跟网络请求有关,希望有通过脚本修复的可能 不过能用上旧播放器已经很满足了。这些新功能带来的问题,无论能不能解决掉,都很感谢作者!