Событие ошибки тега видео в автономном веб-приложении ipad не работает
Сначала извините, если я задаю уже отвеченный вопрос, но я не могу его найти или решить в данный момент.
Я занимаюсь разработкой веб-приложения, которое запускается на iPad в автономном режиме. Есть <video>
тег и я играю с ним потоковое видео, я думаю, что это может быть проблемой, так как я не проверял событие ошибки в статическом файле. Моя проблема в том, что я не могу привязать событие onerror или error к тегу, чтобы в случае сбоя потока по какой-либо причине я мог его перезапустить.
Мой тег видео выглядит так:
<video id="video_tag" preload webkit-playsinline autoplay="autoplay" x-webkit-airplay="allow">
<source type="video/mp4" src="http_stream_url"></source>
</video>
Я пытался добавить onerror="alert('error')"
на видео теге напрямую не получилось.
Я пытался добавить слушатель события в тег видео напрямую document.getElementById("video_tag").addEventListener('error', function(event) { alert('error'); }, true);
это не сработало.
Я пытался добавить прослушиватель событий в тег источника, поскольку кто-то указал, что событие ошибки вызывается тегом источника, а не тегом видео, но это не сработало.
Я тоже пытался поставить onerror="alert('error')"
по тегу источника, не сработало.
Обратите внимание, что это внутри iPad > Safari > автономный режим> веб-приложение javascript> видео тег> воспроизведение потока HLS (http live stream)
РЕДАКТИРОВАТЬ: он обнаруживает сбой загрузки видео потока, но мне нужно определить, когда поток останавливается во время воспроизведения и перезапустить поток в этом случае.
Спасибо
1 ответ
Я думаю, что вы должны прислушиваться к onstalled
событие в video
элемент. Элемент видео представляет собой особый вид медиа-элемента, и список событий можно найти в w3schools.
Имейте в виду, что поддержка браузера все еще довольно ранняя, и не все события обязательно реализуются. Я бы порекомендовал создать обработчик для всех перечисленных событий и посмотреть, действительно ли происходит событие, когда поток останавливается. Я подозреваю, что onreadystatechange
или же onsuspend
события могут также помочь вам.