Приостановка видео не останавливает звук в теге html5 video
Я приостанавливаю видео с помощью метода pause()
.. проблема в том, что звук продолжает воспроизводиться... Я также попытался приостановить его с Javascript Console в Firefox... ничего не происходит. Видео находится в формате .ogg и даже не воспроизводится в Chrome (потому что я думаю, что он не поддерживается).
Я размещал видео на Amazon 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();
}
}
}
Ответы
Ответ 1
Мое предположение было бы то, что showVideo дважды вызывается каким-то образом и создает две копии, одна из которых продолжает играть даже после того, как вы вызываете паузу на другом.
В вашем коде видеопроигрыватель var не будет ссылаться на тег видео, который вы создаете позже, с добавлением, он укажет на все, что было раньше, и я предполагаю, что он удаляется, когда вы опустошаете поле, но можете придерживаться (и продолжать воспроизводить звук).
Просто мое лучшее предположение, но в любом случае было бы лучше использовать API-интерфейс видеоэлемента, чтобы установить исходный и другие параметры, а не освобождать поле и перестроить тег.
videoplayer.src = video.Location;
videoplayer.autoplay = true;
// etc.
Кроме того, 100% не является допустимым значением для атрибутов width/height. Вам нужно будет использовать CSS, чтобы растянуть видео, чтобы заполнить область.
Ответ 2
Привет, ребята, у меня была аналогичная проблема, которая была решена с помощью действительно замечательных кодеров. Проверьте этот пост. Это может быть очень полезно. HTML5 Управление видео не работает
Если вы используете атрибут html:
<video id="yourvideoID" poster="Pic.jpg" loop autoplay controls width="100%">
<source src="//example.website/InnovoThermometer.mp4" type="video/mp4">
</video>