猿问

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视频元素停止缓冲。


交互式爱情
浏览 1180回答 3
3回答

繁星点点滴滴

使用preload =“ none”,这是我在暂停视频后强制中止缓冲,然后使用jQuery在暂停的位置恢复播放的方式。<video id="video_el" src="<video_url>" preload="none" controls="controls" />&nbsp; &nbsp;&nbsp;<script>jQuery(function() {&nbsp; var video = jQuery('video').get(0);&nbsp; video.addEventListener('pause',function(){&nbsp; &nbsp; &nbsp;var tmp_src = video.src;&nbsp; &nbsp; &nbsp;var playtime = video.currentTime;&nbsp; &nbsp; &nbsp;video.src = '';&nbsp; &nbsp; &nbsp;video.load();&nbsp; &nbsp; &nbsp;video.src = tmp_src;&nbsp; &nbsp; &nbsp;video.currentTime = playtime;&nbsp; });});</script>

波斯汪

关键步骤似乎是在调用之前不要将其设置src为空白值load()。我已经成功做到了这样:var wasPlaying = !audioPlayer.paused;audioPlayer.currentTime = 0.0; // Optional -- can be left out for pauseaudioPlayer.pause();if (wasPlaying) { // This prevents the browser from trying to load the entire source&nbsp; &nbsp; audioPlayer.load();}在Win10上的Chrome和Firefox中,这都会引发中止事件。在我的特定情况下,需要关闭套接字,否则套接字将无限期保持打开状态,这导致在同一页面上使用多个播放器时,每个服务器的连接数达到六个限制。
随时随地看视频慕课网APP

相关分类

Html5
我要回答