Облачная обработка видео в CDN

    image Здравствуйте, Хабралюди!

    Мы уже несколько раз рассказывали на Хабре про услуги сетей доставки контента, или CDN (Content Delivery Network), например, тут. Напомню, что сети CDN нужны для географически-распределенных онлайн-трансляций интернет-видео, стриминга видеороликов и раздачи статического контента по HTTP. Но сегодня хочу поговорить не об основных, а о дополнительных услугах сетей CDN, многие из которых связаны с обработкой видео в облаке. К таким услугам относится монтирование видео в облаке, перекодирование для адаптивного вещания, нарезка скриншотов из видеопотоков и т.п.



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

    Так вот, адаптивное вещание позволяет автоматически снизить битрейт и, соответственно, качество интернет-видео тем пользователям, которые сидят на плохих интернет-каналах и, наоборот, повысить качество тем пользователям, которые пользуются хорошими каналами. Причем происходит это без участия самого пользователя: Flash-плеер (или плеер iOS) сам вычисляет, в каком битрейте будет оптимально показывать видео этому пользователю, чтобы у него не было буферизации видео, но при этом оно отдавалось в максимально хорошем качестве. Переключение между битрейтами может происходить постоянно как с понижением, так и с повышением битрейта, если доступная полоса пропускания повышается или понижается.

    В принципе, адаптивное вещание поддерживает стандартный для Flash протокол RTMP. Но по нашему опыту, чтобы устойчиво показывать видео во Flash, нужно использовать протокол Adobe HTTP Dynamic Streaming (HDS). Этот протокол поддерживается в спецификации OSMF (Open Source Media Framework), на базе которого построены многие современные Flash-плееры. С яблочными устройствами проблем нет — протокол HTTP Live Streaming (HLS) работает вполне устойчиво.

    Интересным дополнением к услуге адаптивного вещания видео является услуга перекодирования видеороликов налету. В общем случае, перед тем, как опубликовать на сайт видеоролики, которые вы хотите вещать в адаптивном режиме, необходимо предварительно закодировать их в нескольких битрейтах. Но при использовании услуги адаптивного вещания вы можете этого не делать — достаточно будет загрузить одну копию видеоролика в хорошем качестве, и видеоролики будут перекодироваться в разные битрейты по мере получения запросов от пользователей. Таким образом можно до минимума сократить время выкладки видео на сайт, так не требуется тратить время на его перекодирование. Если говорить про нашу сеть CDN — мы ее реализовали пока только для варианта раздачи видео через HDS, сейчас работаем над поддержкой HLS. У других CDN реализаций этой услуги я, откровенно говоря, не встречал.

    Еще одна интересная услуга — это нарезка скриншотов из потоков. Допустим, на вашем сайте идет трансляция потокового видео в режиме реального времени. Как обозначить ссылку на это видео? Логичнее всего это делать, показывая один из последних кадров этого видео, чтобы пользователь понял, что именно ему собираются показать. Так вот, этот самый последний кадр можно запросить у CDN с помощью нехитрого запроса по API (если, конечно, используемый вами CDN поддерживает эту функциональность).

    Ну и теперь собственно об облачной обработке видео. Самый простое что можно сделать с видео в облаке — это смонтировать его. Для этого собственно с видео не обязательно что-то делать — достаточно проигрывать его не целиком, а только некоторые его части. Чтобы сказать, какие именно части видеоролика проигрывать, у некоторых CDNов (по крайней мере, у нашего), предусмотрен соответствующий API. Например, в этом API можно попросить CDN проиграть видеоролик с 5-й по 70-ю секунду, потом с 100-й по 106-ю и т.п. Опять-таки, как и в случае услуги перекодирования налету, эта услуга существенно сокращает время выкладки видеоролика на сайте. Например, корреспондент может загрузить видеоролик с места события в облако, а редактор там его смонтировать и выложить сразу на новостной сайт (вместо того, чтобы скачивать видеоролик, редактировать его на своем компьютере и закачивать обратно на сервер).

    Я рассказал далеко не о полном перечне услуг CDN. В загашнике у CDN-ов есть еще и «виртуальные телеканалы» (создания потокового видео из видеороликов), и наложение текста на видео, и запись эфира телеканалов, и приземление телеканалов со спутника для вещания через CDN, и переключение видеопотока на предварительно записанный резервный видеоролик — всего не перечислишь. Кстати, если у вас есть пожелания по новым услугам — поделитесь ими, будем благодарны за идеи и с удовольствием их будем реализовывать (соревнуясь с конкурентами, которые тоже наверняка читают эту статью — кстати, им привет :) )
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 7

      0
      Если не секрет — как вы храните ролики и как доставляете к регионы: пушите туда из центра или кэшируете при первом запросе?
        0
        Кэшируем при первом запросе. Работает нормально с небольшими файлами. Большие файлы тоже кэшируем, но придется идти на некоторые ухищрения, чтобы обойти случаи, когда не весь файл закэшировался при первом запросе. Если интересно — обращайтесь, расскажу подробнее.
          0
          >Кстати, если у вас есть пожелания по новым услугам — поделитесь ими, будем благодарны за идеи и с удовольствием их будем реализовывать

          Я отдаю два потока и видеоролики. Мне нужна возможность составить расписание, по которому эти потоки и ролики будут сливаться в один, третий поток.

          Пример расписания:

          10:00 — первый поток
          11:00 — второй поток
          12:00 — ролики
          13:00 — первый поток
          14:00 — второй поток
          15:00 — ролики
          и.т.д.

          Ну т.е. что-то типа плей-листа. Подчеркиваю — не просто по роликам плей-лист, но и по потокам. Возможно такое?
            0
            Как раз сейчас над этим работаем и вот-вот запустим. Как с Вами связаться, чтобы дать протестировать, когда будет окончательно готово?
              0
              m.ivanych@gmail.com

              А когда запустите, приблизительно? Я сейчас как-раз ТЗ пишу своим разработчикам на этот микшер, а тут Вы, с такими новостями:)

              Сразу возникает следующий вопрос:

              У меня смысл этого микшера в том, чтобы дать каждому желающему пользователю свой личный поток. Т.е. потоков (разных!) будет дофига. Мне сейчас сложно точно оценить востребованность этой фичи у пользователей, но это сотни, если не тысячи потоков (разных!). У Вас ведь это предусмотрено?

              А, и обязательно нужно API для интеграции с моей системой:)
            0
            Скажите, а как обстоят у вас дела с контролем доступа?

            Т. е., если я хочу показывать видео только тем, кому разрешает моя бизнес логика. Вариант с секретными ссылками не рассматриваем. Хотелось бы сделать честную проверку, а именно, перед началом показа видео спросить мою систему, можно ли вот этому пользователю (нужные его куки) предоставить права на просмотр вещания?
              0
              Контроль доступа делаем, возможна авторизация каждого запроса на загрузку файлов пользователями с помощью специального API. Если поделитесь почтой, вышлю подробности, как это делается.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое