Eanya-Tonic / CCTV_Viewer

电视浏览器,一款基于tv.cctv.com和央视频的简易电视直播收看软件,用于方便的在机顶盒上收看电视节目
https://www.bilibili.com/video/BV1Gc41187D6
1.15k stars 103 forks source link

1.5_X5版bug:自动全屏后会暂停一下,然后再播放 #41

Open zbby1987 opened 5 months ago

zbby1987 commented 5 months ago

进去节目后, 自动全屏前就会播放起来, 但自动全屏后,会卡一下或者是暂停一下, 然后就又自动播放起来了 (第一次用时就感觉到了,但当时没特别在意,但发现每次打开都是这样。。。) . 这是啥原因!? 是卡了一下,还是代码逻辑问题!?

Eanya-Tonic commented 5 months ago

这个问题是上古时期的遗留问题,问题的来源是这样: 在调用系统Webview的时候,央视官网会出现一个很坑的bug,就是他大概率会拒绝自动播放视频,让视频处于暂停状态,并且如果使用js的click()函数点击播放键,他还会不要脸的报错提示play()只能由user gesture(用户手势)触发,拒绝响应播放的指令。唯一的办法是向网页发出一个模拟的触摸操作信号,激活网页的user gesture判定之后就会开始播放视频,并且也可以使用js控制播放键了。 央视官网在这里又挖了第二个坑,就是当他接收到触摸操作信号之后,会判定一次暂停/播放操作,对于系统webview来说,这正好实现了播放,不存在问题。但是当加载了x5之后,央视官网的这个自动播放又恢复了,也没有那个坑爹的错误提示,但是这个时候之前我为了在系统webview上实现播放写的那个模拟触摸就会把它给暂停掉。这就是为什么他会先暂停再播放,也是为什么菜单键出现的下菜单里有一个没有用的播放按钮,都是因为央视官网这个神奇的bug。 解决办法也并不复杂,只要在触摸前判断一下是不是加载了x5内核就行,我只是忘记写了...也不是不能修复,就是一个判断的事😂 下次更新时我会把这个判断加上。

zbby1987 commented 5 months ago

解决办法也并不复杂,只要在触摸前判断一下是不是加载了x5内核就行,我只是忘记写了...也不是不能修复,就是一个判断的事😂 下次更新时我会把这个判断加上。

. 我测了一下, 确实是其他用webview的播放器需要手动点播放器界面才播放! 而用x5的qq浏览器是自动播放,应该是x5内核自己加了一些体验优化代码的结果!(自动播放更方便但也容易更费流量!) . 大佬能分析的这么透彻,明显是已研究过,但1.5版忘了写进去。

zbby1987 commented 5 months ago

这个问题是上古时期的遗留问题,问题的来源是这样: 在调用系统Webview的时候,央视官网会出现一个很坑的bug,就是他大概率会拒绝自动播放视频,让视频处于暂停状态

今晚安了最新版的Chrome浏览器,tv.cctv.com也是能自动播放的。 这也是用的浏览器自带的最新版webview内核吧!?居然也开始自动播放了