Chimeejs / chimee

a video player framework aims to bring wonderful experience on browser
http://chimee.pyzy.net/
MIT License
2.4k stars 201 forks source link

移动端seek无效解决方案 #154

Open zzd490442757 opened 5 years ago

zzd490442757 commented 5 years ago

在使用seek快进时候,ChimeeMobilePlayer在PC端有效果,移动端无效果。代码如下: var player=new ChimeeMobilePlayer({ wrapper: '#wrapper', // video dom容器 src: 'http://cdn.toxicjohann.com/lostStar.mp4', autoplay: true, controls: true, playsInline: true, preload: 'auto', x5VideoPlayerFullscreen: true, x5VideoOrientation: 'landscape|portrait', xWebkitAirplay: true, muted: true, // removeInnerPlugins: ['chimeeMobiControlbar', 'chimeeState'] // 需要移除的插件 }); player.on('loadedmetadata', () => { player.seek(200); })

后来在大师(李猜猜)的帮助下 完美解决了。代码如下 var player=new ChimeeMobilePlayer({ wrapper: '#wrapper', // video dom容器 src: 'http://cdn.toxicjohann.com/lostStar.mp4', autoplay: true, controls: true, playsInline: true, preload: 'auto', x5VideoPlayerFullscreen: true, x5VideoOrientation: 'landscape|portrait', xWebkitAirplay: true, muted: true, // removeInnerPlugins: ['chimeeMobiControlbar', 'chimeeState'] // 需要移除的插件 }); player.on('canplay', () => { player.seek(200); }) 解决方法仅仅是把“loadedmetadata”换成了“canplay”,完美解决

toxic-johann commented 5 years ago

移动端的 seek 需要在 canplay 后才有用。

toxic-johann commented 5 years ago

安卓端需要考虑 durationchange, ios 需要考虑 canplay

crazcdll commented 5 years ago

iOS 不会主动触发 canplay 吧?

我发现只有点击了 才会触发 loadedmetedata loadeddata canplay 等回调,否则只会触发 loadstart

toxic-johann commented 5 years ago

不懂点击指的什么。。不知道你是不是指点击后才能开始播放。

crazcdll commented 5 years ago

不懂点击指的什么。。不知道你是不是指点击后才能开始播放。

点击 指的是 点击 DOM 上 video 的播放键,或者 用 API 调用 this.player.play() 方法,这么之后 我发现才会有 loadedmetedata loadeddata canplay 等的回调

toxic-johann commented 5 years ago

你是不是设置了 preload="none"

crazcdll commented 5 years ago

你是不是设置了 preload="none"

preload: 'auto' 这么设置的

toxic-johann commented 5 years ago

有几个可能

  1. 没有 preload
  2. 没有预先给 src
  3. 源特别慢
  4. iOS 某个版本把 preload 也禁止了

我觉得人第四个可能性不大,你具体看 network 定位下。到底有没有发起具体的请求。

Songkunda commented 5 years ago

iOS QQ 浏览器 9.0 以上 依然seek无效 (直接通过video dom 事件触发也无效),现象是进度条拉到跳转位置 然后又重新调到跳转前的进度位置