Я пытаюсь гарантировать (насколько это возможно), что видео HTML5 начинает воспроизводиться только тогда, когда оно может воспроизводиться полностью без буферизации. Для контекста MediaStream видео затем используется для микширования с другим источником звука и отправки через одноранговые соединения WebRTC. Видео обычно имеют размер 5-10 МБ и продолжительность в несколько минут (т. е. при хорошем широкополосном соединении не должно возникнуть проблем с загрузкой всего видео задолго до того, как оно будет воспроизведено).
Для этого мой код в настоящее время ожидает начала события canplaythrough
в элементе видео и вызывает play()
при его срабатывании.
Это «работает» в том смысле, что видео начинает воспроизводиться, и в большинстве случаев буферизации достаточно для непрерывного воспроизведения видео. Но в некоторых случаях (в частности, для двух человек, которые оба использовали Chrome на MacBook Air и имели явно не невероятное, но приличное широкополосное подключение к Интернету) видео воспроизводится прерывисто и прерывисто — что, как я полагаю, означает видео недостаточно буферизовано.
Существуют ли более эффективные методы обеспечения достаточной буферизации видео в большинстве браузеров?
Возможно, использование fetch()
для буферизации всего видео в памяти поможет? Или результирующий blob()
также на самом деле лениво буферизуется за кулисами?
Существуют ли передовые методы тестирования и отладки подобных проблем, учитывая, что я не могу воспроизвести это локально?