#javascript #video #http-live-streaming
#javascript #Видео #http-прямая трансляция
Вопрос:
Я пытаюсь программно выяснить, будет ли воспроизводиться какой-либо носитель или нет на основе его URL.
Основываясь на тестировании браузера, HLS будет нормально воспроизводиться в моем браузере Chrome с использованием видеотеки VideoJS player, однако CanIUse говорит, что этого не произойдет, что является моей первой путаницей.
Затем я запускаю его через этот JavaScript…
использование этого пакета npm для получения mime-типов
https://www.npmjs.com/package/mime-types
var mime = require('mime-types');
// get the extension of the file
var mimeType = mime.contentType(file.split('.').pop());
// returns 'application/vnd.apple.mpegurl'
var video = document.createElement('video');
console.log(Boolean(video.canPlayType(mimeType)));
Который также возвращает false, однако он воспроизводится, что приводит меня в замешательство от того, как это происходит, есть ли у кого-нибудь идеи о том, почему это происходит, или как я мог бы правильно определить, будет ли воспроизводиться видео или нет?
Комментарии:
1. Документация MDN более надежна
2. Спасибо, вы знаете, есть ли способ обнаружить поддержку с помощью JavaScript?
3. Я бы использовал
HTTP Live Streaming JavaScript player
упомянутый на этой странице — я уверен, что он сделает то, что нужно, и потерпит неудачу, если не сможет4. Видеофайлы обычно состоят из оболочки, содержащей видео, аудио и другие потоки. Каждый из этих потоков может быть закодирован с помощью разных кодеков. Сможет ли браузер воспроизводить файл или нет, зависит от того, какие кодеки поддерживаются. Однако тип mime может не указывать эти детали или может быть трудно обнаружить. Итак,
.canPlayType
и.contentType
могут быть вероятностные догадки.
Ответ №1:
На странице «Могу ли я использовать HLS» указана матрица совместимости для video
тега HTML5, что означает, что она проверяет, поддерживает ли браузер встроенную поддержку этого формата. Например, большинство настольных браузеров, кроме Safari на macOS, не могут воспроизводить HLS изначально.
Вот почему для таких форматов, как Apple HLS и MPEG-DASH, вам нужен проигрыватель JavaScript, который преобразует (переупаковывает потоки без перекодирования) этот конкретный формат в тот, который video
элемент может обрабатывать изначально.
Что касается кодеков, вы можете либо выбрать наименьший общий знаменатель, такой как базовый уровень H.264 с AAC, либо предоставить различные форматы, адаптированные к целевому устройству, с резервным механизмом.