可以在iOS设备上强制HTML5视频预加载吗?

时间:2016-01-17 11:57:52

标签: android ios video-streaming html5-video preload

我发现大量网站和参考资料确认在Android和iOS移动设备上,HTML5视频preload='auto'标签被故意忽略,浏览器会等待用户手动按下播放按钮。< / p>

有没有办法可以推翻这种行为?

我们的情况是,我们计划让iPad在封闭的内联网WiFi系统上运行,其中蜂窝网络数据收费肯定不会成为问题。我们有视频文件,一旦页面加载,需要自动跳转到特定的播放位置。它在Windows,Linux或MacOS上的Chrome上运行得非常出色,但iOS却没有。

iOS或Android中是否有允许“预加载”的设置?表现得像在其他平台上一样?

或者,我已经在页面上进行了JavaScript和jQuery。是否存在可以说服浏览器预加载视频的电话,即使preload='auto'没有?

我已在http://www.stuartbruce.co.uk/editreader/javascript_video_test放置测试页以显示会发生什么。在Chrome上,在除iOS之外的所有平台上,视频会自动跳到镜头3.在iOS上,没有任何反应。

Apple在这个问题上的专线在这里: User Control of Downloads Over Cellular Networks 但事实上他们已经称之为“用户控制下载”#34;暗示这是用户可以选择更改的内容。但是,我无法看到任何证据。可能吗?用户或iPad是否可以选择加入&#39;允许preload='auto'正常工作?

1 个答案:

答案 0 :(得分:1)

根据以下更新/信息,您应该可以执行此操作,只要您设置了mute属性:

video.play();
video.addEventListener('canplay', function() {
    this.currentTime = 5;
});

New Policies for iOS文章表明:

  

默认情况下,WebKit将具有以下策略:

     
      
  • 元素现在将遵循autoplay属性,对于满足以下条件的元素:      
        如果元素源媒体不包含音轨,
    • 元素将被允许自动播放而无需用户手势。
    •   
    • 元素也可以在没有用户手势的情况下自动播放。
    •   
    • 如果元素获得音轨或在没有用户手势的情况下变为静音,则播放将暂停。
    •   
    • 元素仅在屏幕上可见时开始播放,例如当它们滚动到视口中时,才会生成   通过CSS可见,并插入DOM。
    •   
    • 如果元素变得不可见,则会暂停,例如滚出视口。
    •   
  •   
  • 元素现在将遵循play()方法,对于满足以下条件的元素:      
        
    • 元素将被允许播放()而没有用户手势,如果他们的源媒体不包含音轨,或者他们的静音   property设置为true。
    •   
    • 如果元素在没有用户手势的情况下获得音轨或变为非静音,则播放将暂停。元素将是   允许在屏幕上或在屏幕外不可见时播放()   视口。
    •   
    • video.play()将返回Promise,如果不满足任何条件,将拒绝承诺。
    •   
    • 在iPhone上,现在允许元素内联播放,并且在播放时不会自动进入全屏模式   播放开始。
    •   
    • 没有playinline属性的元素将继续需要全屏模式才能在iPhone上播放。
    •   
    • 使用捏合手势退出全屏时,没有playinline的元素将继续以内联方式播放。
    •   
  •