我正在使用其pause()
方法暂停视频..问题是音频继续播放...我还尝试将其从Firefox中的Javascript控制台暂停...没有任何反应。该视频采用.ogg格式,甚至不在Chrome中播放(因为我认为它不受支持)。
我在亚马逊S3上托管了这个视频,它完美地流媒体。我正在动态创建元素,从JSON请求加载其信息。
这是一些代码:
function showVideo() {
var video = videodata;
var videobox = $('#videobox').first();
var videoplayer = document.getElementById('videoplayer');
if (video.Enabled) {
if ((videoplayer != null && videoplayer.currentSrc != video.Location) || videoplayer == null) {
console.log('Creating video elem');
videobox.empty();
videobox.append('<video id="videoplayer" preload="auto" src="' +
video.Location + '" width="100%" height="100%" autoplay="autoplay" loop="loop" />');
videobox.show();
}
} else {
if (videoplayer != null) {
videoplayer.pause();
console.log('Pausing video...');
}
console.log('Deleting video elem');
videobox.hide();
videobox.empty();
}
}
我之前已经发布了类似的问题...但现在我正在使用其他浏览器,所以我想我必须创建一个新问题。
这是工作代码(感谢用户 heff !)
function showVideo() {
var video = videodata;
var videobox = $('#videobox').first();
var videoplayer = document.getElementById('videoplayer');
if (video.Enabled) {
if ((videoplayer.src != video.Location) || videoplayer.src == '') {
console.log('Playing video: ' + video.Location);
videoplayer.src = video.Location;
videoplayer.load();
videoplayer.play();
videobox.show();
}
} else {
if (videoplayer.src != '') {
console.log('Pausing video...');
videoplayer.pause();
videoplayer.src = '';
videobox.hide();
}
}
}
答案 0 :(得分:9)
嘿伙计们,我有一个类似的问题,这个问题通过非常精彩的编码器解决了。看看这篇文章。它可能很有用。 HTML5 Video Controls do not work
如果您使用的是html属性:
<video id="yourvideoID" poster="Pic.jpg" loop autoplay controls width="100%">
<source src="//example.website/InnovoThermometer.mp4" type="video/mp4">
</video>
&#13;
删除自动播放。
然后使用jquery代替使用自动播放:
$(document).ready(function() { $("#bigvid3").get(0).play(); });
&#13;
至于来源,有多个地点: html5 video playing twice (audio doubled) with JQuery .append()
和
答案 1 :(得分:4)
我的猜测是,showVideo会被调用两次并创建两个副本,其中一个副本会在你在另一个上面调用暂停后继续播放。
在您的代码中,videoplayer var将不会引用您稍后使用append创建的视频标记,它将指向之前具有该ID的任何内容,我假设当您清空该框时会将其删除,但可能会粘贴在内存中(并继续播放声音)。
只是我最好的猜测,但无论哪种方式,最好使用视频元素的API来设置源和其他参数,而不是清空框并重建标记。
videoplayer.src = video.Location;
videoplayer.autoplay = true;
// etc.
此外,100%不是width / height属性的有效值。您需要使用CSS来使视频拉伸以填充区域。