Я сталкивался с этой проблемой несколько раз и, основываясь на предыдущем опыте и копании, могу предложить следующие варианты:
- полностью заменить тег видео
да, просто вставьте <video>
элемент с новыми источниками.Это простой, но эффективный подход.Не забудьте повторно инициализировать прослушиватели событий.
- назначить URL-адрес видео для
video.src
это я много виделв ответах здесь, в stackoverflow, а также в источниках на github.
var video = document.getElementById('#myVideo');
video.src = newSourceURL;
Работает, но вы не можете предоставить опции браузера для выбора.
- вызов
.load()
на видеоэлементе
в соответствии с документацией вы можете обновить src
атрибутов для <video>
* <source>
теги, а затем вызов .load()
, чтобы изменения вступили в силу:
<video id="myVideo">
<source src="video.mp4" type="video/mp4" />
<source src="video.ogg" type="video/ogg" />
</video>
<script>
var video = document.getElementById('myVideo');
var sources = video.getElementsByTagName('source');
sources[0].src = anotherMp4URL;
sources[1].src = anotherOggURL;
video.load();
</script>
Тем не менее здесь сказано, что в некоторых браузерах есть проблемы.
Я надеюсь, что этобудет полезно иметь все это в одном месте.