当前位置: 首页 > 面试题库 >

HTML5视频:强制中止缓冲

彭阳荣
2023-03-14
问题内容

如何在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()函数,也没有可以设置允许缓冲的数据量的选项,或者说您希望元素停止缓冲的一种方式-
Don请勿将其与“预加载”功能混淆,这仅适用于单击播放按钮之前的元素。
我不知道为什么会这样,为什么无法使用此功能。如果有人能向我解释为什么这些关键功能没有按标准执行,该标准应该使手机的Web开发更好,更标准化,我很想知道。

解决方案:
我发现在音频元素中实现(多种)停止功能的唯一可行解决方案如下:
1.暂停当前播放器-您可以通过audio.addEventListener(’pause’, yourFunction);
2.将源设置为空-audio.src =“”;
3.加载src-audio.load();
4.删除整个音频元素
。5.插入未定义源的新HTML5音频元素
。6.设置源(首先存在的源)-audio.src =“旧源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);

按下暂停将使您的访客失去音频/视频文件中的当前位置,并且它将重新开始。我没有解决这个问题的方法。再说一次,如果您要处理实时流,此解决方案应该没问题。

希望这可以帮助。



 类似资料:
  • 问题内容: 关于YouTube API博客,他们正在试验新的 HTML5 视频播放器。 显然,要使用html5播放视频,您必须使用iframe嵌入代码: 但是,如果客户端尚未加入HTML5试用版,则即使客户端的浏览器支持HTML5视频,播放器也会自动退回到Flash播放器中。 如果用户尚未参与HTML5试用版,即使浏览器支持,如何强制HTML5视频播放? 否则,如何禁用Flash后备广告? 问题答

  • function checkVideo() { if(!!document.createElement('video').canPlayType) { var vidTest=document.createElement("video"); oggTest=vidTest.canPlayType('video/ogg; codecs="theora, vorbis"'); if (!oggTest

  • 我正在看一个youtube视频,我决定调查一下它的视频播放器的某些部分。我注意到,与我见过的大多数HTML5视频不同,YouTube的视频播放器并不提供普通的视频源,而是使用blob url作为源。 之前我测试过HTML5视频,发现服务器从一开始就开始流式传输整个视频,并在后台缓冲完整的其余视频。这意味着,如果你的视频是300兆,那么所有的300兆都将被下载。如果你向中间寻道,它会从寻道位置开始下

  • 问题内容: 当我从互联网上加载视频(10-40MB大)时,无法提供流畅的播放体验。 我的AVPlayer要么加载整个视频然后播放,要么播放1s,缓冲然后停止播放。 我尝试了无尽的库,缓冲区观察者方法和教程。似乎没有任何帮助。 问题答案: 从 iOS 10.x开始 ,您可以进行一些缓冲设置,例如,您可以决定缓冲视频需要多少秒:

  • 我想在画布上画一段视频。为了实现这一点,我在Javascript中捕获onMouseDown和onMouseUp事件,以获得每个事件的x和y坐标(我需要在画布中设置视频的位置、宽度和高度)。 因此,每次我在画布上绘制视频时,我创建的上一个视频都应该停止,并且必须播放新的视频。两个问题: 1)视频不播放(功能只画第一帧),但他的音频可以 2) 如何停止以前绘制的视频? 演示:http://jsfid

  • 问题内容: 我已经看到了一些与此相关的主题,但是没有答案,所以我想在受污染的youtube相关页面的坟墓中添加另一个主题。 我有一个100MB的mp4视频,需要由浏览器完全下载, 但是,完全下载完之后不会触发任何事件,Chrome似乎会停止缓冲更多的视频,直到当前视频时间快要达到缓冲的末尾为止,然后它会请求更多。 如何让浏览器完全下载视频并将其缓冲100%? 谢谢 问题答案: 遗憾的是,Chrom