Как VideoJS определяет, когда использовать видео HLS против MP4, когда оба источника доступны? - PullRequest
0 голосов
/ 04 июня 2019

У меня есть видео, закодированное в формате MP4, а также в формате HLS (m3u8). Я хочу, чтобы VideoJS использовал MP4 для настольных компьютеров против m3u8 для устройств. Последняя версия VideoJS поддерживает оба формата. Я пытаюсь определить, может ли videojs автоматически определить, какой источник использовать. Или мой код должен обнаружить браузер и передать лучший тип источника в videojs.

1 Ответ

0 голосов
/ 06 июня 2019

MP4 и HLS на самом деле разные вещи в экосистеме доставки видео.

MP4 - это контейнерный формат, содержащий закодированные видео, аудио и т. Д. Дорожки в одном файле, а HLS - потоковый протокол, который может передавать видео в контейнере, подобном MP4, с сервера на клиент.

Терминология может быть немного запутанной, и термины часто не используются точно, но простой обзор:

  • «сырое» видео - это несжатые кадры
  • закодированное видео - обычно сжимается кодеком. например h.264, h.265, AV1 и т. д.
  • контейнер (например, FLV, MP4) - контейнер может включать в себя одну или несколько кодированных «дорожек» видео, аудио, субтитров плюс метаданные, включая информацию о шифровании.
  • фрагментированный контейнер (например, фрагментированный MP4) - это позволяет видео-контейнеру разбиваться на сегменты или порции для поддержки потоковой передачи и, в частности, ABR (см. Ниже)
  • Протокол потоковой передачи, включая индекс и сегменты или фрагменты видео (например, HLS, DASH, Smooth Streaming)

Протокол потоковой передачи упрощает потоковую передачу с адаптивной скоростью передачи битов (ABR), что в простых терминах означает, что вы предоставляете несколько разных версий скорости передачи вашего видео, а клиентское устройство или проигрыватель может загружать видео порциями, например, 10-секундными порциями, и выбирать следующий фрагмент от скорости передачи, наиболее подходящей для устройства и текущих условий сети. См. Также дополнительную информацию в этом ответе: https://stackoverflow.com/a/42365034/334402

Как правило, протоколы ABR обеспечивают более высокую производительность, поэтому обычно вы всегда выбираете один, а не просто постепенно загружаете и воспроизводите сам файл MP4 при потоковой передаче видео.

Возможно, вы обеспокоены тем, что некоторые устройства или браузеры не поддерживают HLS. Большинство устройств и проигрывателей HTML5, вероятно, поступят сейчас, но основные службы потокового видео обычно предоставляют потоки HLS и MPEG-DASH для каждого видео, и это будет охватывать подавляющее большинство устройств.

...