首先,我在这里很新,所以请原谅我的无知和可能的错误。
我遇到了firefox的一个奇怪问题,我似乎无法重新解决这个问题。
我使用php,html5和JavaScript为我的网站构建了一个html5媒体播放器。奇怪的是,Firefox(41)显示了缓冲和预加载媒体数据的一些非常不一致的行为。 Chromium,IE和Opera做得非常好,并且根据要求仅加载播放当前文件所需的所有元数据和媒体数据,并且还以非常节省带宽的方式加载。只有Firefox显示一些奇怪的行为。元数据加载得很好,但是一旦调用了play(),它就会全速加载所有数据,导致流量非常大,无法及时获取所需的数据。
您可以在此处查看:https://musicchris.de/index.php?page=media
实施例: 我加载页面,然后单击某个播放列表项目,该项目位于列表的最左侧。现在FF开始加载所有数据,当然它从第一项开始,而较低项的数据很晚才到达。这非常烦人,并且使得播放器在较慢的连接上无法使用。
现在我对此并不十分肯定,但我想html5会暂停缓存并缓存到浏览器 - 至少我还没有找到任何有用的文档,我怎么能操纵这种行为。 / p>
所以问题是: 当只需要特定的媒体文件时,我该怎么办,以防止FF加载所有媒体数据?我怎么能减慢交通?无需加载带宽的mp3。
我想,为什么这个播放器在所有Safari浏览器上根本不起作用是另一个问题/主题......
感谢您的任何想法!
克里斯
答案 0 :(得分:0)
有趣的是,my first attempts有助于stackoverflow,给了我一个可能的答案! :d
如果我使用不同的方法,即动态创建< audio>或<视频>使用JS的元素,而不是一次将所有这些都拉到HTML中,解决了这个问题。诀窍是从空媒体列表开始,然后在每次当前媒体更改时删除所有媒体标签,然后创建一个新媒体标签,仅用于下一个所需的媒体元素。始终用新的媒体元素替换旧的媒体元素!
这又是一次学习经验,发现删除/清空src属性会完全取消加载过程。
不过,我很想听到更多有趣的想法!例如,如果您知道如何操纵浏览器的缓冲行为,我想听听......