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 для каждого видео, и это будет охватывать подавляющее большинство устройств.