2

语境

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

为简单起见,假设有 2 个视频要(自动)播放。在第二个视频播放完毕后,它会返回到第一个并播放那个(循环继续)。视频将在首次播放后缓存在用户的设备上。

TL-DR:现在我想要实现的是将 HTML5 视频编码为“移动友好”,就移动数据计划而言。

  • 我希望视频在页面加载时流式传输,或者在用户观看点之后仅几秒钟后缓冲。因此,如果用户进入视频 5 秒,则缓冲区会扩展到视频 15 秒(因此在网络连接较弱的情况下缓冲 10 秒的视频)。如果用户暂停视频,则视频停止缓冲。尽管用户将无法访问控件;他们将无法前进、后退或暂停。我只给出了用户更改视频点的示例,以强调我想要控制视频已缓冲和将缓冲的量。
  • 或者,我希望视频流式传输到用户的设备。并且只下载需要立即播放的内容。这是不太理想的选项,并且可能比保留视频标签更不理想,因为如果用户有一个狡猾的连接,视频将播放、停止、播放等。

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

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

Nevershowmyface:根据我从代码中收集到的信息,它每 0.5 秒停止一次缓冲。没有恢复视频的代码?至于为什么这种方法不起作用,它并没有相对于用户所处的位置进行缓冲。出于所有意图和目的,它仍然以线性方式缓冲视频,而不依赖于变量(用户所在的点)。它只是做得更慢或“分块”。如果它在视频用完视频之前加载另一个块,我冒着视频停止并等待在连接不良时再次加载的风险。

Preload :none 在这里没有用,因为视频是自动播放的(注意顶部的粗体auto )。我应该更明确一点。当页面加载时,视频会自动播放。Preload 在点击播放按钮之前加载视频;preload:"none" 在点击播放之前不加载视频。但是由于没有播放按钮,并且页面加载后视频就会播放,所以这是一个无用的属性。


关于什么应该是至关重要和基本的功能不是咆哮) ,我得出了无可救药的结论

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

其他 Web 开发人员在他们的网站上使用视频时是否没有考虑到这一点?我已经和其他开发人员谈过这个问题,他们说网站的数据使用不是或很少是开发人员关心的问题。

虽然我知道还有更重要的事情需要担心,但毋庸置疑,这对于数据流量低的移动用户来说非常重要。

分析:

HTML5 音频元素没有 stop() 函数,也没有可以设置允许缓冲的数据量的选项,或者说您希望元素停止缓冲的方式 - 不要将此与“预加载”功能混淆,这仅适用于单击播放按钮之前的元素。

我不知道为什么会这样以及为什么这个功能不可用。如果有人可以向我解释为什么这些关键功能没有在一个应该使手机 Web 开发更好、更标准化的标准中实现,我很想知道。

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

1)我正在处理视频文件,而不是音频文件。略有不同的上下文,其中缓冲的文件比 .mp3 文件大得多。

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

4

0 回答 0