CarGuo / GSYVideoPlayer

视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS,16k page size,支持弹幕,外挂字幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,rtsp、concat、mpeg。
https://juejin.cn/user/817692379985752/posts
Apache License 2.0
20.25k stars 4.2k forks source link

循环播放LOOP 动态设置,无法取消 循环, #4010

Closed GuoFeilong closed 4 months ago

GuoFeilong commented 4 months ago

(!!!!请务必务必按照issue模板,修改 后提交问题!!!!,不按模板提Isuue删除处理)

(ps 首页问题集锦和demo请先了解一下!)

⚠️提问前建议先看看: https://mp.weixin.qq.com/s/HjSdmAsHuvixCH_EWdvk3Q

问题描述:

播放视频的时候,设置播放器为循环播放,当前视频开始循环播放, 然后动态的修改播放器为取消循环,但是播放器,loop变量修改之后,没有生效,一直还在循环。

出现问题的视频流

问题机型/系统:

三星

GSY依赖版本

gsy_video_player_version = "v8.6.0-release-jitpack"

Demo中的复现步骤

demo中没有类似的操作。

image

点击小节循环,此时播放器变成循环播放,没有问题,

我再次点击取消 循环的时候,循环状态无法退出,一直在循环。

问题代码:(如果有)

<img width="1013" alt="image" src="https://github.com/CarGuo/GSYVideoPlayer/assets/12525861/b4572e69-b42a-46f7-be1c-ebc039663256">
继承了 标准播放器,自定义了一个 循环,按钮,点击循环按钮,动态切换播放器循环状态。

取消循环无法生效

问题log(如果有)


xxxxxxx
GuoFeilong commented 4 months ago

动态修改了loop之后,必须重新调用prepare 才能把参数 更新到播放器的实现类里面,要不然该外面的变量 ,他只改的是上层的 值,播放器内部的值是没有刷新的。

GuoFeilong commented 4 months ago

但是如果 手动调用 prepare的话,会刷新播放器,体验不是太好。比如博到一半,从头开始了。

GuoFeilong commented 4 months ago

内部GSY GSYModel 的值 无法修改。如果不调用 startPrepare

GuoFeilong commented 4 months ago
image

如何动态修改 GSY model 中的值,且不用重新初始化呢。

GuoFeilong commented 4 months ago
image

看了下源码,没有找到合适的刷新 GSY 的时机,所以只能通过这种非正规的模式,去修改 EXO底层 播放器 真正的播放模式,

如果作者看到了请回复下,是不是我使用的姿势有问题,还是说这块 确实有问题,就是先开启循环,后 在取消循环,取消不了。 我目前用 反射 暂时解决了这个问题。

CarGuo commented 4 months ago

非常简单···· Player.getGSYVideoManager().getPlayer().getMediaPlayer() 这样去设置

GuoFeilong commented 4 months ago

谢谢 老歌。。我删除反射的代码。。。