Стратегия адаптивной потоковой передачи, совместимая с большинством браузеров и устройств.

Я много исследовал относительно текущего состояния потокового видео и воспроизведения в Интернете. Я публикую то, что я резюмировал, и стратегию, которой, как мне кажется, я должен следовать, чтобы поддерживать адаптивную потоковую передачу на большинстве устройств и браузеров. Я просто хотел получить обратную связь от сообщества, есть ли в стратегии, над которой я работаю, какие-либо серьезные лазейки / улучшения.

РЕЗЮМЕ

  • Чтобы поддерживать большинство современных браузеров для воспроизведения видео в элементе <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.

Кажется, это хорошая практика? Или мне не хватает чего-то большого для решения кроссбраузерной адаптивной потоковой передачи?

Советы / рекомендации / предложения приветствуются.

Спасибо !




Ответы (2)


Здесь вы можете увидеть обзор различных браузеров и платформ с точки зрения поддержки MPEG-DASH и / или HLS: http://www.dash-player.com/blog/2015/06/replacing-flash-adaptive-streaming-and-drm-in-html5/

Обычно мы генерируем контент MPEG-DASH + HLS параллельно и обслуживаем от 80 до 90% всех пользователей с помощью MPEG-DASH (в HTML5 или Flash, например, http://www.dash-player.com) и от 10 до 20% с HLS.

person Stefan Lederer    schedule 17.07.2015

Ваш подход звучит как обряд. Safari на Mac теперь поддерживает расширения источников мультимедиа, так что это еще одно для DASH. Но для iOS по-прежнему нужен HLS. Я надеялся, что iOS9 включит его, но пока не повезло. Теоретически возможно сделать DASH в приложении iOS с помощью VideoToolkit, но еще неизвестно, разрешит ли Apple такую ​​вещь в магазине приложений. Лично я бы забыл о webm и поддерживал только h264 / aac. Silverlight и HDS следует полностью игнорировать. И Adobe, и Microsoft переходят на DASH. Также можно воспроизводить HLS в MSE через конвертер, написанный на javascript. Это немного сложнее, но есть несколько игроков, которые могут это сделать.

person szatmary    schedule 11.07.2015
comment
почему бы не использовать HLS, и мой ответ ниже объясняет, как обеспечить безопасную адаптивную битрейт HLS в Chrome или Safari, на мобильном устройстве или компьютере - person Rob Little; 09.12.2020