HLS против RTMP — сухая статистика

    Если кто-то решил сделать самостоятельно обработку, хранение и передачу видео для своего онлайн-проекта, а не использовать сайты вроде YouTube, он неизбежно приходит к вопросу о том, какой протокол передачи использовать для трансляции видео на устройства пользователей. Выбор невелик, т.к. есть ряд отраслевых стандартов, которые поддерживают те или иные устройства. Кроме того, выбор протокола во многом зависит от «класса» видео — живая трансляция или видео-по-запросу. От выбора протокола также зависит и выбор медиа-сервера, который будет двигателем вашей медиа-машины: будете ли ставить несколько разнородных серверов или построите сеть доставки на одном решении? Поэтому нужно взвесить всё и принимать решение исходя из критериев вашего бизнеса.

    В общем, получается уравнение со многими неизвестными. Здесь немаловажна динамика процесса — а куда вообще идёт индустрия? Вдруг я вложусь в поддержку технологии, а она загнётся через год, ведь такое уже бывало. Или поставлю на модную технологию, а её никто не поддерживает?

    Мы решили оценить, как менялась доля разных протоколов с течением времени — посмотреть в динамике весь процесс. Данные взяли за последний год.

    Расклад по протоколам на начало августа 2014



    Исходные данные


    Для начала — кто мы такие, чтобы судить о долях рынка? Мы — разработчики веб-сервиса отчетности для медиа-серверов. На рынке работаем четвертый год и к нам приходят компании с разными инфраструктурами, разным количеством серверов и разными потребностями. Получается неплохой слепок состояния отрасли.

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

    В отчете даются данные по серверам:
    • Wowza Streaming Engine во всех версиях, начиная с 2.2 и до последних 4.х; бОльшая часть — 3.х.
    • Nimble Streamer, работающий с HLS, Smooth, HDS и progressive download — это наша разработка.
    • Windows Media Services — их буквально пару десятков, но они есть, и надо их учитывать

    На момент написания статьи сервис обслуживает порядка 1000 серверов из 60 стран мира.

    Отчет также периодически обновляется у нас в блоге, он доступен по соответствующему тегу.

    Поехали


    Отчет за июнь/июль 2014 выглядит примерно так. Из 1.4 миллиарда просмотров больше половины — это HLS. На втором месте — RTMP с четвертью просмотров. RTSP — примерно шестая часть. Остальные находятся в районе статистической погрешности.



    Что было год назад за тот же период? Ситуация почти зеркальная. RTMP — почти две трети, RTSP и HLS делят второе и третье места. Правда, и база для измерений была меньше почти в 3 раза — «всего» 500 миллионов просмотров. Серверов в нашем сервисе тоже было поменьше, конечно.



    Пройдемся между этими двумя точками.

    Итак, июнь — август 2014 года, 3 месяца лета. 800 миллионов просмотров, но доли такие же, август изменений не привнёс.



    Сентябрь — ноябрь 2013. Начался новый сезон, HLS начал отъедать долю RTMP. Всего 1.1 миллиарда просмотров, у RTMP примерно половина от общего числа, HLS — четверть.



    Декабрь 2013 — февраль 2014. 1.4 миллиарда просмотров, из них на HLS приходится уже больше 40%. RTMP и RTMP делят второе и третье место с четвертью доли. Олимпиада в Сочи дала прирост числа просмотров и одновременно заставила провайдеров вспомнить обо всех клиентах со всеми их экзотическими или старыми девайсами, которые понимают только RTSP — отсюда и скачок этого протокола.



    Март — май 2014. 1.9 миллиарда просмотров и HLS уже безоговорочный лидер с более чем половиной рынка. RTMP уверенно держит четверть, остальные заняли те доли, которые мы видели на первой диаграмме.



    Как это всё понимать?


    HLS (HTTP Live Streaming) на сегодня стал стандартом де-факто в мире потоковой передачи видеоданных для потребительских устройств. Изначально сделанный для девайсов одной фруктовой компании, быстро набрал популярность на других устройствах — десктопах, STB, а также Андроидах — начиная с версии 4 они начали понимать этот протокол.

    RTMP остается незаменим там, где требуется передача данных близко к реальному масштабу времени. HLS даёт некоторую задержку при соединении, чтобы скачать первый чанк с данными, а в случае с RTMP отображение начинается практически сразу. В целом, это наиболее совершенный протокол передачи медиа в реальном времени, несмотря на все неоднозначности в реализации (каждый новых вендор добавляет свои особенности), более трудоёмкое развёртывание и масштабирование относительно HLS.

    RTSP по-прежнему используется как fallback для старых Андроидов.

    Отдельно хочется сказать про MPEG-DASH — несмотря на все усилия индустрии, переход на него происходит со скрипом. Конечно, рано или поздно произойдет плавный переход со всех HTTP-based протоколов — HLS, HDS, SmoothStreaming — на него, но пока это лишь планы.

    Интересна и доля Progressive download, на котором работает видео на немалом количестве сайтов. Технически очень простой, он позволяет начать раздачу видео-по-запросу практически безо всяких специальных медиа-серверов. Поскольку Вовза по этому протоколу не работает, его долю стало возможным отследить только по мере установки нашего Nimble Streamer на сервера клиентов. Текущие 20М+ просмотров за 2 месяца лета — не предел, и фактическая доля этого протокола совершенно точно выше. Хотя, у него есть и ограничения, которые оставляют ему относительно небольшую нишу.

    Если есть вопросы по сбору данных или их интерпретации — задавайте.

    P.S. Кто интересуется прочими наблюдениями из мира онайн-медиа — читайте также мои материалы на Geektimes.
    Share post

    Comments 19

      0
      Чем плох обычный http с seek'ом посредством offset в заголовке?
        +2
        Это и называется Progressive download, или pseudo-streaming. Он совсем не плох — именно об этом я написал в конце.
        Однако, во-первых, он не подходит для живых трансляций, а это очень немалая доля рынка и разных сценариев.
        Если говорить про видео-по-запросу, то он не очень подходит для передачи с адаптивным битрейтом (ABR).
        Передача с кешированием на эдж-серверах или через CDN — для протоколов HLS, DASH, HDS, Smooth оно делается проще и эффективнее.

        Повторю, протокол хороший, но он не всегда подходит.
        +1
        Вы бесплатно предлагаете медиа-сервер, да еще и бесплатно помогаете установить? Где подвох?
          +1
          А нет подвоха. Мы просто на зарабатываем на смежных услугах :)

          Мы зарабатываем на сервисе WMSPanel. Она предоставляет хорошую отчетность и удобный интерфейс для управления, причем для любого числа серверов одновременно. Скажем, можно иметь инфраструктуру, где есть несколько серверов Вовзы и Нимбла (+ скоро Erlyvideo и Red5) — и для всех мы агрегируем данные, создаем отчеты и позволяем показывать их разнообразными способами. Аналогично с управлением — задание параметров стриминга, управление защитой данных (hotlink protection, geoblocking, paywall), управление параметрами сервера — это удобно делается через панель.

          Можно работать с Нимблом через ком.строку, конфиги и логи — мы не против, он будет отлично работать. Просто многие предпочитают удобство.
          Буквально вчера опубликовали описание инфраструктуры, где использовалось более 100 инстансов Нимбла на пике. Человек, который выиграл тендер на трансляцию Чемпионата мира, предпочтёт купить наши услуги, чем ковыряться во всём самому.
            0
            Юра, а кстати вы не меряли оверхед при стриминге одного и того же потока средствами RTMP, HLS и RTSP. Интуитивно предполагаю, что в случае RTSP/UDP должен быть минимальный оверхед, а у HLS максимальный
              0
              Саня, если просто сравнивать в целом, без цифр конректных, то по эффективности идёт первым RTMP, потом RTSP и небольшим отрывом от RTSP — HLS, т.к. у них обоих используется MPEG2TS насколько помню.
        +2
        HLS — единственный live streaming протокол, который поддерживается iOS. И это единственная причина снижения популярности RTMP.

        RTMP стал расти, когда этот протокол и FLEX-компилятор сделали свободными. Он поддерживается «из коробки» во Flash-приложениях, в браузерных плагинах и нативных приложениях.

        Кстати, не все знют, что RTMP можно с успехом стримить между нативными приложениями, выполненными на Action Script. В этих ОСях тестировал своими руками: Windows XP, Windows 7, MacOS 10, iOS 6, Android 4. Если кому-то надо прув — спрашивайте в личке.
          0
          «И это единственная причина снижения популярности RTMP.»

          Скорее это был одним из поводов к началу перехода на HLS. Все пошли за Эпплом.
          Помимо этого, HLS, как и другие протоколы на базе HTTP, проще кешируется, что позволило раздавать трафик через обычные CDN, по которым раздаётся текст и картинки.
          Надо признать, что тот же SmoothStreaming — более оптимален по сравнению в HLS. Но, кунгфу Эппла оказалось сильнее кунгфу Майкрософта :)

          То, что RTMP — отличный протокол, это бесспорно. Вопрос в той нише, которую он будет занимать.
            0
            RTMP вообще очень простой протокол в плане приёма. Вся DRM псевдо-защита (на самом деле security through obscurity) уже разобрана, есть librtmp для встраивания в не-actionscript-приложения. Собственно, благодаря этой библиотеке, RTMP есть в VLC.
            0
            Я бы не стал называть HLS «стандартом де-факто в мире потоковой передачи видеоданных» и «безоговорочным лидером» только по информации аффилированного сайта, по информации с которого этот протокол только что перевалил за 50% на высоковолатильном рынке (или, скорее всего, у системы просто маленькая выборка среди сайтов).
              +2
              Я не претендую на всеохватность, но есть тенденции рынка, которые здесь хорошо видны. Мы хоть и в тайге живём, но нам хорошо виден повальный переход на HLS — это тренд последних полутора — максимум двух — лет. Я езжу на конференции регулярно, смотрю, слушаю — люди стремятся снижать издержки разработки и поддержки, HLS более интересен с этой точки зрения, чем RTMP.

              Отличный пример — Twitch, которого Гугл покупает на 2 миллиарда. На конференции Streaming Media East в мае слушал доклад технаря оттуда. Они оставили RTMP только для приёма данным от пользователей, на раздачу — оставили только HLS, и сделали это как раз за полгода перед этим выступлением. Twitch, на минуточку, 3-й (третий) сайт по объёмам живого трафика в США после Ютуба и Нетфликса. В общем, можно конечно считать меня аффилированным (кем?), но это объективные факты.
              +3
              Одна и та-же технология, на разных графиках отображена разным цветом — очень сложно отследить закономерность(
                0
                Спасибо, учтём!
                +1
                Юра,
                RTMP и RTMP делят второе и третье место в четвертью доли.


                поправь
                  0
                  Пасиб, поправил.
                  +1
                  Начали разрабатывать собственный проект.
                  Сразу же решили (еще в 2012) использовать протокол HLS.
                  Одно только расстраивает, — Windows Phone (я думаю не только меня одного)

                  Даже мало кому известная hp webos — встроила нативную поддержку протокола HLS, тогда как microsoft даже не удосужилась встроить свой чертов smooth streaming в свой же windows phone.
                    0
                    Microsoft активно участвует в работе над DASH, так что видимо решили не заморачиваться полумерами.

                  Only users with full accounts can post comments. Log in, please.