我有一个视频标签,我动态地更改其来源,因为我允许用户从数据库中的一些视频中进行选择。问题是,当我更改src属性时,视频不会加载,即使我告诉它。
这里是我的代码:
$("#video").attr('src','my_video_'+value+'.ogg'); $("#video").load(); while($("#video").readyState !== 4) { console.log("Video is not ready"); };
代码仍然处于无限循环中。
任何帮助?
编辑:
对伊恩Devlin:
//add an listener on loaded Metadata v.addEventListener('loadeddata',function() { console.log("Loaded the video's data!"); console.log("Video Source: "+ $('#video').attr('src')); console.log("Video Duration: "+ $('#video').duration); },false);
好的,这是我现在的代码。来源打印很好,但我仍然无法获得持续时间:
解决方法
你不需要jQuery,因为有一个
Media API,为您提供所有你需要的。
var video = document.getElementById('myVideo'); video.src = 'my_video_' + value + '.ogg'; video.load();
Media API还包含一个load()
方法:“使元素重置并开始从头开始选择和加载新的媒体资源”。
(Ogg不是最好的格式,因为它只支持有限数量的浏览器,建议使用WebM和MP4来覆盖所有主流浏览器 – 您可以使用canPlayType()
功能来决定播放哪一种) 。
然后,您可以等待loadedmetadata
或loadeddata
(取决于您想要的)事件触发:
video.addEventListener('loadeddata',function() { // Video is loaded and can be played },false);