dmMiniPlayer icon indicating copy to clipboard operation
dmMiniPlayer copied to clipboard

Twitch 播放器卡缓冲状态

Open Mishasama opened this issue 1 year ago • 6 comments

发生条件

当串流因网络原因导致缓存不足以继续播放时。

不在 docPiP 状态时的表现(正常状态)

直播卡住一会,然后重新开始加载缓冲数据(重连),等待缓冲量达到一定时长后会自动恢复播放。

在 docPiP 状态时的表现(问题状态)

直播一直卡住,检查缓冲数据发现没有进行重新缓冲(重连)。

推测

docPiP 干扰/阻断了缓冲重连的策略,导致播放器无法触发重试缓冲。

其余网站没有测试过。 测试环境为 Edge。

Mishasama avatar Aug 04 '24 00:08 Mishasama

卡住的时候有没有试过docPIP开着和关闭的情况下,回去原网页随便点点有没有重新缓存成功。或者说重新缓存好了,但是视频被暂停了要重新播放。

apades avatar Aug 04 '24 00:08 apades

在docPIP开着的时候,并不需要离开网页(网页处于后台状态),也会出现这个问题。 只要把docPIP关掉,再等一会它就能重新播放。

这里提供一个参考信息: Twitch 在播放器卡缓冲的时候会首先尝试重连,当重连失败时会尝试切换服务器(类似B站切换线路)。 在重连的时候docPIP还能成功缓冲上,但当切换服务器的时候就不行了。

Mishasama avatar Aug 04 '24 14:08 Mishasama

这不好搞啊,我测试了下devtool的限速下,开着docPIP等一会还是可以播放的。

就是ttv那边video事件不知道怎么写的,会提前触发canPlay事件,然而他实际是没法播放的,我的播放器ui就提前把转圈圈给去掉了,这个点可能不好修

apades avatar Aug 04 '24 16:08 apades

就是ttv那边video事件不知道怎么写的,会提前触发canPlay事件,然而他实际是没法播放的

有没有一种可能,跟亚马逊说这是他们自己的BUG,让他们那些牛逼的去修?😆

Mishasama avatar Aug 06 '24 20:08 Mishasama

我才想起这个,我8月14号重构了播放器还有再出现不

apades avatar Oct 03 '24 04:10 apades

没变化,还是卡。

目前同服务器切换清晰度是可以正常进行的,但切换不同的服务器就不行了。因为用的不是同一个播放器,doc 会隔离整个播放器(包括状态信息),这样就会导致另一个播放器无法开始播放,因为它没法停止(销毁)原来的播放器。(它要避免原来的播放器成功缓冲后发生双重播放)

感觉你不能粗暴的直接把整个播放器隔离到 doc 里,得想办法把状态信息啥的复制(保留)在原页面。 也就是说必须让原网页的事件能控制到 doc 的播放器(能进行交互)才行。

这个可以简单的用第三方可以控制播放器或者与播放器相关的扩展来测试。比如说跳过缓冲、控制前进后退(缓冲控制)、播放器状态检测等,只要进入了 doc 都会全部失效。就连 edge 的 SVR 按钮都会消失掉。

我想只要 edge 的 SVR 按钮不消失,这个 bug 就算修好了……

感觉应该是与 #35 是同一个原因导致的问题。 为什么有这部分的代码,却迟迟没有推出来,甚至连 flag 都没有。明显 doc 是处于早期 dev 状态的东西,很多东西都没有完善,包括状态传递等。估计你要是能修好,都能直接合并到 chromium 里了……

Mishasama avatar Oct 05 '24 22:10 Mishasama