Context

我试图一个接一个地循环几个HTML5视频 . 这是通过Javascript实现的,事件监听器正在监听“已结束” - 视频结束 . 此时,视频的URL将被更改,并为新URL执行video.play() .

为简单起见,假设有2个视频要播放.2394640_ . 在第二个视频播放结束后,它将返回到第一个视频并播放该视频(并且循环继续) . 首次播放后,视频将缓存在用户的设备上 .

TL-DR: Now what I want to achieve is to code a HTML5 video to be 'mobile friendly', in respect to mobile data plans.

  • I want the video to either stream when the page loads or buffer only a few seconds from after the point from where the user is watching. 因此,如果用户进入视频5秒钟,则缓冲区延伸到视频的15秒(因此,如果网络连接较弱,则缓冲10秒的视频) . 如果用户暂停视频,视频将停止缓冲 . 虽然用户无权访问控件;他们将无法前进,后退或暂停 . 我只给出了用户更改视频点的示例,以强调我希望控制视频缓冲和缓冲的程度 .

  • Alternatively, I want the video to stream to the user’s device. 并且只下载需要立即播放的内容 . 这是不太理想的选项,并且可能不像保留视频标签那样可取,因为如果用户有狡猾的连接,视频将播放,停止,播放等 .

我想要实现这一点的原因是我注意到Edge,IE,Firefox和Chrome中的视频自动播放(很好,这就是我想要它做的)并播放同时将整个视频下载到他们的设备上(可怕的) ) . 当然这种行为是可以预期的,但实际上,它不应该这样做 . 如果用户立即离开网站,为什么我们希望他们下载他们看不到的整个视频?

排序但不完全相关,它没有帮助:HTML5 Video: Force abort of buffering简单地说,线程只显示hacks来隐藏src而不是对缓冲区的任何实际控制 . 我需要实时控制缓冲区的加载,相对于用户所处的位置,而不是基于'pause'事件 . 我还想知道在大多数浏览器中是否有一个鲜为人知的支持方法(我只需要在移动设备上担心这个问题)来实现这一点,而不是'hack' .

Nevershowmyface :从我可以从代码中收集到的内容,它每0.5秒就会停止缓冲 . 恢复视频没有代码?至于为什么这个方法不起作用,它不是相对于用户所处的位置进行缓冲 . 出于所有意图和目的,它仍然以线性方式缓冲视频,而不依赖于变量(用户所在的点) . 它是's just doing it more slowly or ' in chunks' . 如果它在视频用完视频之前加载了另一个块,我冒着视频停止的风险,如果连接不好,我会再次等待加载 .

Preload :此处没有用,因为视频会自动播放(请注意顶部的粗体 auto ) . 我本来应该更明确 . 页面加载时,视频会自动播放 . 预加载在点击播放按钮之前加载视频; preload:"none"在点击播放前不加载视频 . 但由于没有播放按钮,一旦页面加载后视频播放,它就是一个无用的属性 .


My hopeless conclusion in regards to what should be a vital and basic featurenot 咆哮)

根据我的发现,没有标准化的方法来实现这一点,并且只有“hacks”,如帖子中所述,它仅用于在某些浏览器中提供有限的缓冲功能/控制,可能会破坏其他浏览器并且可能没有效果在其他浏览器中 . 鉴于此,我即将放弃这项任务,以为我会问其他人是否有效地成功实现了这一目标;它似乎没有支持,甚至没有在HTML5或Javascript中考虑过;我可能会并且希望我错了 - 在Javascript中拥有它会很棒 .

其他网络开发者在网站上使用视频时是否不考虑这一点?我已经与其他开发人员讨论了这个问题,并且他们说网站的数据使用不是或很少是开发人员关注的问题 .

虽然我知道有更重要的事情需要担心,但不言而喻,这对于数据计划较少的移动用户来说非常重要 .

分析:HTML5音频元素没有stop()函数,也没有可以设置允许缓冲的数据量的选项,或者说你希望元素停止的方式缓冲 - 不要将其与“预加载”功能混淆,这仅适用于单击播放按钮之前的元素 . 我不知道为什么会这样,为什么这个功能不可用 . 如果有人能够向我解释为什么这些关键功能没有在一个标准中实现,该标准应该使移动电话的web开发更好,更标准化,我很想知道 .

在有人说该帖子的结论是目前不可能的之前,请注意:

1)我正在处理视频文件,而不是音频文件 . 稍微不同的上下文,其中缓冲的文件明显大于.mp3文件 .

2)我并不是想完全缓冲 stop 缓冲 . 我试图限制它并保持相对于用户所在视频的点 . 所以你实际上可以说我试图阻止它,但是在用户的视频点之后的'x'次 .