Я много исследовал относительно текущего состояния потокового видео и воспроизведения в Интернете. Я публикую то, что я резюмировал, и стратегию, которой, как мне кажется, я должен следовать, чтобы поддерживать адаптивную потоковую передачу на большинстве устройств и браузеров. Я просто хотел получить обратную связь от сообщества, есть ли в стратегии, над которой я работаю, какие-либо серьезные лазейки / улучшения.
РЕЗЮМЕ
- Чтобы поддерживать большинство современных браузеров для воспроизведения видео в элементе
<video>
html, нам необходимо кодировать наши видео как минимум в 3-х форматах WEBM, OGG и MP4. - Чтобы обеспечить адаптивную потоковую передачу видео по запросу, доступны следующие варианты: MPEG-DASH, Apple HLS, Microsoft Smooth Streaming и Adobe HDS.
- Изначально я предпочел использовать MPEG-DASH, поскольку это открытый стандарт, аналогичный HDS, HLS и Smooth Streaming, и был изобретен для обеспечения общей платформы для обслуживания аудио / видео контента в любом браузере и любой ОС.
- Но на данный момент устройства Apple, работающие под управлением Safari на iOS и Safari на Mac, не полностью поддерживают стандарт MPEG-DASH, поскольку Apple еще не поддерживает API расширений Media Source Extensions для html5, на котором основан MPEG-DASH.
- Итак, я собираюсь реализовать MPEG-DASH (для устройств, отличных от Apple) + HLS (для устройств Apple)
- Это означает, что мне нужно будет сгенерировать файлы .mpd (используется mpeg-dash) и .m3u8 (используется HLS) на стороне сервера, которые затем будут обслуживаться клиентов. Я использую Node.js на стороне сервера для кодирования.
Теперь, насколько я знаю, при использовании mpeg-dash в основном он создает различные мультимедийные файлы с разными битрейтами из исходного файла и файла конфигурации, который содержит описания / правила относительно того, какой поток должен быть отправлен клиенту. в зависимости от пропускной способности.
Та же логика применяется к HLS, за исключением того, что он создает файл конфигурации с расширениями, отличными от расширений mpeg-dash.
Если я планирую поддерживать 3 скорости передачи данных с 3 различными разрешениями, такими как 1020 * 720, 800 * 600, 400 * 300 для видео, тогда мне нужно сгенерировать такие видео для каждого из 3 форматов, которые я собираюсь поддерживать (например, WEBM, OGG, MP4)
Поэтому для любого видео, загруженного клиентом, мне нужно сгенерировать всего 3 * 3 = 9 видео вместе с созданием файлов .mpd и .m3u8 для поддержки устройств сторонних производителей и Apple.
Кажется, это хорошая практика? Или мне не хватает чего-то большого для решения кроссбраузерной адаптивной потоковой передачи?
Советы / рекомендации / предложения приветствуются.
Спасибо !