微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HTML5视频:强制中止缓冲

如何在HTML5视频上强制终止事件?我有一个重叠,在哪里,当我关闭它,视频应该暂停播放,然后停止缓冲。然而,我的互联网连接继续坚果。哦,我在Mac OS X 10.6上使用Chrome 7.0.5。

我试过几件事 – 他们都没有工作:

(对于那些不熟悉XUI的人,x $就像jQuery包装函数)

首先,分派中止HTML事件

var videoEl = x$('#video_el')[0];
videoEl.pause();
var evObj = document.createEvent('HTMLEvents');
evObj.initEvent('abort',false,false);
videoEl.dispatchEvent(evObj);

接下来,改变src,然后强制加载:

var videoEl = x$('#video_el')[0];
videoEl.pause();
videoEl.src = "";
videoEl.load(); //tried with and without this step

编辑:我的视频元素看起来像这样:

<video id="video_el" src="<video_url>" preload="none" controls="controls" />

同样,这些都没有工作。任何人遇到这个问题之前?有什么建议么?

总之,我试图强制HTML5视频元素停止缓冲。

谢谢!

解决方法

好吧,所以对于最后几天我真的一直在努力这个问题。
这里是我的分析和解决方案:

总之,我试图解决的问题:
我注意到,当播放器暂停时,HTML5播放器不会停止下载(即使在一段合理的时间之后)。使用一个24/7的音频流和开发移动网站我意识到,这是远远不是最佳的考虑到高数据使用率,如果他们离开网站开放 – 虽然我认为我会让一些电信公司非常高兴“俯瞰“ 这个问题…
只是为了澄清,我真的不关心固定长度的文件。下载完整的文件是大多数时候查看在线资源所需的功能(想慢连接),所以没有我试图阻止。

分析:
HTML5音频元素没有stop()函数,也没有一个选项,您可以设置允许缓冲的数据量,或者说要让元素停止缓冲的方式 – 不要将其与“preload”函数混淆,这只适用于播放按钮被点击之前的元素。
我没有线索为什么这是,为什么这个功能不可用。如果任何人可以向我解释为什么这些关键功能没有实现在一个标准,应该使Web开发手机更好,更标准化我想知道。

解:
我发现在音频元素中实现(一种)停止函数的唯一工作解决方案如下:
1.暂停当前播放器 – 您可以通过audio.addEventListener(‘pause’,yourFunction)挂起播放器上的暂停事件;
2.将源设置为空 – audio.src =“”;
3.加载src – audio.load();
4.删除整个音频元素
5.插入未定义源的新HTML5音频元素
6.设置源(首先在那里的源) – audio.src =“old source url
7.重新挂起暂停事件 – audio.addEventListener(‘pause’,current-function);

iOS需要完全注入新的HTML5音频播放器。只需重置src然后加载它会导致播放器在我的情况下“自动播放”…

对于懒人(包括jQuery):

var audio = $("audio").get(0);
audio.pause(0);
var tmp = audio.src;
audio.src = "";
audio.load();
$("audio").remove();

$("#audio-player").html("<audio controls preload='none'></audio>");<br>
audio = $("audio").get(0);
audio.src = tmp;
audio.addEventListener('pause',current-function);

按下暂停将导致您的访问者丢失音频/视频文件中的当前位置,并将重新开始。我没有这个问题的解决方案。然后再次,如果你正在处理一个直播流,这个解决方案应该很好。

希望这可以帮助。

原文地址:https://www.jb51.cc/html5/169907.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。