ВКонтакте
Компания
62,02
рейтинг
27 июля 2011 в 08:09

Разное → Пиринговая сеть в видеоплеере

Часть пользователей уже могли заметить в нашем видеоплеере окно с предложением разрешить использование пиринговой сети. Просмотр роликов с использованием технологии peer-to-peer проходит последний этап тестирования. Из всех загружаемых на сайт роликов в тот или иной момент, как правило, просматриваются не более 10–15%. Еще 15–20% от этих роликов можно считать популярными. Переход на P2P существенно снижает нагрузку на сервера, предоставляя пользователям возможность принимать видеопоток также и с соседних клиентов (разумеется, так же подтвердивших участие в пиринговой сети).




Разработка использует протокол RTMFP, реализуемый Flash Player 10.1 с клиентской стороны и Adobe Cirrus — с серверной.

Это снижает задержки при воспроизведении видео сразу по двум причинам. С одной стороны, реже делаются прямые запросы к северу, и серверу становится легче дышать и отвечать на другие запросы. С другой стороны, скорость получения данных от «соседей» нередко может быть выше, чем от сервера в дата центре, поскольку система выбирает партнеров исходя из соображений максимальной эффективности.

Видеоплеер может раздавать только то видео, которое просматривается в тот или иной момент — и только ту его часть, которая была загружена и все еще находится в памяти. При этом размер буфера не может превышать 64 Мб, чтобы не отъедать слишком много оперативной памяти. Теоретически для включения режима P2P достаточно и двух одновременно смотрящих видео пользователей. Однако целесообразно это только для тех роликов, которые смотрят одновременно десятки пользователей (как уже упоминалось выше, для ВКонтакте такие видео составляют порядка 15–20% от активно просматриваемых). В случае проигрывания роликов, для которых использование p2p не принесет видимых результатов, плеер переключается на стандартное скачивание.

Для идентификации клиентов используется только ключ, выдаваемый Cirrus-сервером Adobe, ни IP-адрес, ни uid пользователя восстановить по нему не представляется возможным).



Технические детали


Как уже было упомянуто выше, для объединения в отдельную группу пользователей, просматривающих один и тот же видеоролик (в одном и том же разрешении), в данный момент используется сервис Cirrus от Adobe, взаимодействие с которым происходит по протоколу RTMFP. Поддержка соответствующего класса NetGroup появилась только в флэш плеере версии 10.1 — поэтому пользователи с плеером десятой версии предложение использовать P2P не увидят.

Чтобы организовать обмен между пользователями частями одного видео, файл разбивается на чанки размером 64 Кб. Каждый чанк в первую очередь запрашивается у соседних пиров (регулируется весь этот процесс внутренне флэш плеером и сервером Cirrus), а при отсутствии ответа в течение нескольких секунд делается запрос напрямую к видеосерверам «В Контакте» — полученные данные разбиваются на чанки и раздаются другим пользователям.

Для вывода загруженных чанков используется так называемый «режим создания данных» (Data Generation Mode) у класса NetStream. К сожалению, он не поддерживает формата MP4, который сейчас используется для хранения видео «В Контакте», поэтому у собранных из чанков видеофайлов теперь на лету меняется контейнер с MP4 на FLV.

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


Промежуточные итоги


Основные результаты на текущей стадии — ощутимое снижение задержек:
  1. При воспроизведении популярных роликов, одновременно загружаемых большим количеством пользователей.
  2. При проигрывании любых видео с произвольного места.
Более масштабные выводы на этом этапе делать рано. Собираемая сейчас статистика говорит о том, что с пиров скачивается приблизительно от 7 до 10% всех данных. Процент стабильно растет.
Автор: @invladis
ВКонтакте
рейтинг 62,02
Компания прекратила активность на сайте

Похожие публикации

Комментарии (82)

  • +1
    а проигрывание на мобильных устройствах с урезанным флешем работать будет?
    • +5
      Если на мобильном устройстве поддерживается хотя бы HTML5 — будет работать посредством него. P2P, естественно, применяться не будет.
      • 0
        А когда вы перестанете полностью игнорировать WP7, новая тач-версия сайта не работает. В полноценной версии видео в хтмл-5 не отдается, к тому же постоянно вылазит окно «Ваш браузер устарел, скачайте ФФ/Хром/Оперу». Я уже в супорт кучу раз писал, и не я один.
        • 0
          Может потому что седьмой осел в Windows Phone Nodo не такой уж и клевенький чтобы его поддерживать и он действительно устарел?
          Подождите Mango, там все очень хорошо работает в IE9. Сам уже попробовал — нравится :-)
          • 0
            Видео не работает, и в некоторых местах все же глючит. А так да, ваша правда.
            • 0
              Надеюсь, что еще что-то успеют исправить до релиза )
        • +10
          Не могу отвечать за разработчиков вконтакте, но предполагаю, что ответ прост — «Когда пользователи WP7 будут занимать хотя бы сколько-нибудь значимую долю пользователей вконтакте».
          • –2
            Т.е. нужно собрать большую толпу недовольных и силой заставить их? А пока мучаться и не юзать контакт.
            • +5
              Большую толпу с WP7 придется собирать со всего мира.
              А приоритезацией задач в зависимости от кол-ва затронутых пользователей занимаются все компании.
            • +11
              мучаться и не юзать контакт

              бедняжечка ))))
        • –1
          На Андройде тоже полноценный флэш.
          • –2
            Линуксойд на стеройдах ставил андройд.
      • 0
        А что насчет Peer-to-Peer connections из драфта HTML5?
  • +3
    Для идентификации клиентов используется только ключ, выдаваемый Cirrus-сервером Adobe, ни IP-адрес, ни uid пользователя восстановить по нему не представляется возможным).

    Это как? Если чанки можно получить только от клиентов, которые смотрят это же видео, и от TCP/IP вам все равно никуда не деться?
    • 0
      Извиняюсь, от UDP.
      • 0
        TCP/IP это стек протоколов, а UDP (как впрочем и TCP) это протокол транспортного уровня вышеупомянутого стека.
        • 0
          Я знаю. Это моя привычка перестраховываться: хотелось избежать очевидного ответа «Cirrus использует UDP, а не TCP». Извините за вынужденную неточность.
    • +2
      Все протоколы реализуются флэш-плеером, низкоуровневого доступа видеоплеер к ним не имеет. Конечно, если один из клиентов использует сниффер, то он сможет узнать IP-адреса соседей, с которыми в данный момент идет обмен данными, но не более того.
      • 0
        Из IP можно вытащить много информации, например город или даже район, а так же провайдера. Зная провайдера можно составить список обслуживаемых им домов. При должном упорстве можно составить примерный круг лиц, просматривающих популярное порно в контакте.
        • +8
          И что дальше?
          • +1
            А дальше что угодно. Самый частый вариант — потроллить.
            • +2
              Тех, кто смотрит порно гораздо больше, чем тех, кто порно не смотрит. Потроллить удастся разве что стеснительных школьников.
              • 0
                Зато Михалков может искать тех, кто смотрит его фильмы по IP
                • 0
                  Т.е. сейчас он не может искать качающих с торрентов? По моему и там ему списка IP хватит. Да и получить список качающих/раздающих оттуда в разы проще.
                • +8
                  Кто-то смотрит фильмы Михалкова??
    • 0
      TCP/IP это стек протоколов. А UDP (как впрочем и TCP) — это протокол транспортного уровня вышеупомянутого стека. А IP, к слову, находится на сетевом уровне.
  • 0
    После ваших экспериментов у меня пропало видео (проигрывается 30-секундный джингл на тёмном фоне).
    И ещё попутный вопрос.
    Теперь, получается, я уже не смогу скачать .flv или .mp4 файл, чтобы потом его посмотреть в оффлайн (например плагином DownloadHelper)?
    • 0
      Скачать можете, ведь это только для проигрывания меняется контейнер. А напрямую с сервера запросить по прямой ссылке никто не запрещал
      • +1
        Пока да, качается (если я не включаю P2P режим).
        Но если выключат возможность проигрывания старым способом, то видео будет передаваться по протоколу RTMFP, что исключает способ привычного обращения к файлу на сервере.
        Поправьте меня, если я не прав.
        • +1
          Возможность проигрывания старым способом нет смысла отключать. Во-первых, p2p эффективен не всегда — ролик должно смотреть сразу несколько человек. Во-вторых, ни к чему так сразу отказываться от поддержки FP 10.0 и мобильных устройств без FP вообще. В-третьих, пользователь имеет право просто нажать «Запретить», что возвращает его к обычному просмотру.

          Ну и наконец, даже при использовании p2p, чтобы видео передавалось RTMFP, какой-то пользователь (или, как правило — несколько пользователей, не дождавшихся ответа от пиров) должен его сначала скачать по-старинке, напрямую.
  • +12
    Так, с технической частью всё понятно.
    А сажать-то теперь суровее будут?
    Ведь получается, что человек не просто хранит фильм в видеотеке, он его ещё и распространяет
    • +8
      Причем, чтобы начать распространять, достаточно начать смотреть
      • –2
        суровые российские законы
        • +5
          Ну, как известно, суровость российских законов компенсируется необязательностью их исполнения
        • 0
          Такое же не только в России
  • 0
    В Chrome dev на MacOS окошко с предложением включить пиринг не реагирует на клики. Tab'ом можно добиться перехода на нужные кнопки, но все равно на enter/space они не реагируют.
    • 0
      На убунте тоже самое наблюдал
    • 0
      Подтверждаю это. Очень неудобно. Приходится брать ссылку из «получить код видео» и смотреть
    • +2
      у меня и в Сафари на MacOS та же проблема.
    • 0
      То же самое и на винде во всех браузерах…
    • +2
      На Маке я «обошел» это вот так:
      System Preferences -> Flash Player -> Tab «Playback» -> Button «Peer-assisted bla-bla-bla» -> Col «Website» -> vk.com -> «Allow».

      И после этих манипуляций у меня заработало.
      Правда с качеством видео мне как то не везло, все на как то 320 на 240 :(
      • 0
        Аналогично. Пришлось отключить. Опера, флеш свежий.
    • –1
      снеси Flash и заново поставь. мне помогло
      • 0
        Мне, к счастью, не настолько нужно вконтактовское видео и его пиринг, чтобы исправлять их факапы таким способом ;)
        • 0
          это «факапы» флеша, когда окошко с настройками «залипает».
          • 0
            Не очень важно, чей это факап. Ты предлагаешь всем пользователям VK его так устранять?
            • –1
              кого это не устраивает, да.
              это относится не к P2P. у меня такое было, когда просто открываешь настройки, окошко залипает и никакие настройки не поменяешь. я дал совет как исправить баг.

              для ленивых: ждите автоматического обновления флеш, когда баг пофиксят
              • 0
                Ты же понимаешь, что в это логике есть изъян? И что Youtube, например, никогда не позволил бы себе выкатить функционал с известными проблемами, требующими переустановки flash?
                • 0
                  этот баг проявляется на некоторых системах (в основном на Mac) при использовании не последней версии Flash или после перехода на OS X Lion
                  • 0
                    Хм, ты прав.
                    Возможно, доля аудитории VK под Lion не так велика.

                    Для тех, кому интересно:
                    bugbase.adobe.com/index.cfm?event=bug&id=2918693
                    • 0
                      У меня это проявляется на барсе. Последняя Опера, последний Флеш (а вообще, он теперь сам обновляется). И уж не знаю, чей это факап, но в маке в целом в флеше нажать на кнопку подобного «модального» окна, будь то даже доступ к камере/микрофону, очень сложно.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          было бы хорошо, но HTML5 еще не столь популярен. Время.
          • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              Стив не любит Flash. А хорошая альтернатива только набирает обороты. Что мне очень не нравится — это просмотр Flash видео на Macbook Pro, кипит как утюг, тормозит как черепаха, шумит как самолет.
              • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Правильно ли я понимаю, что пользующиеся и-нетом по трафику, могут потерять непредсказуемо много трафика соглашаясь на вариант P2P?
    • 0
      Только если исходящий тарифицируется.
    • 0
      Думаю также как и при использовании торрентов. Получается возрастание исходящего трафика. А там уже по тарифам надо смотреть. Обычно учитывается только входящий трафик, если он лимитирован.
      • 0
        Обычно для проводной связи. Почти все ОПСОСы тарифицируют исходящий трафик для лимитных 3G/EDGE/GPRS тарифов. А учитывая, что лимитная проводная связь уже редкость, то скорее обычным стало обратное.
  • +11
    А вон тот дяденька в очках на картинке, ловящий трафик между двумя компьютерами, случайно не сотрудник силовых структур?
    • 0
      Думал это бокал с коктейлем.
      Еще подумал — какой идиот на него очки напялил. Он же пустой.
      • 0
        А если полный то в очках ок да?
        • 0
          Ну да. Полный=довольный.
    • +11
      image
  • +1
    А если p2p не сработает? Т.е. в некоторых моментах при неподходящей топологии, прокси, nat п2п может не включится. Как тогда флеш плеер поступит?
    • +1
      Как раньше.
  • –7
    Хм. Теоретически, теперь когда с тебя качают этот самый клип, то есть шанс подменить пакеты, и отправить свою левую рекламу вместо клипа?) ай да молодцы разработчики :D
    • –3
      а где опровержения моих слов от минусующих, и доказательства вашей точки зрения конкретными фактами?!
      • +5
        полагаю хеши не совпадут, как и в торрентах
  • –1
    Из всех загружаемых на сайт роликов в тот или иной момент, как правило, просматриваются не более 10–15%. Еще 15–20% от этих роликов можно считать популярными.


    То есть, эффект будет примерно на 2% роликов?
    • +2
      Да, но эти 2% роликов будут составлять 98% просмотров.
  • 0
    Может ощибаюсь, но Adobe Cirrus разве на данном этапе только для «не комерческого» использования?
    • 0
      Cirrus-1 да, Cirrus-2 для комерческого + девелопер получает на тесты 15 $ при разработке
  • 0
    когда я пытаюсь просмотреть по подобное видео и флеш спрашивает меня можно или нет — я не могу нажать ни на одну клавишу, как будто там все заблокировано. теперь я не смотрю видео :(
    • 0
      Аналогичная проблема на OS X Lion
  • 0
    А в чём выгода пользователю?
    Теперь у пользователя возрастает исходящий трафик, а т.к. при просмотре видео оно теперь ещё и распространяется, то в случае с просмотром нелегального контента — сразу же зарабатываем себе статью.
    • 0
      Выгода вот в этом:
      С одной стороны, реже делаются прямые запросы к северу, и серверу становится легче дышать и отвечать на другие запросы. С другой стороны, скорость получения данных от «соседей» нередко может быть выше, чем от сервера в дата центре, поскольку система выбирает партнеров исходя из соображений максимальной эффективности.

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

      Если есть опасения по поводу «статьи» — ну, наверное, стоит выбрать галку «Запомнить» и кнопку «Запретить», когда будет предложено пиринговую сеть использовать. Раздаваться ничего не будет — все останется по-старому. Ну или вообще воздержаться от просмотра нелегального контента :)
      • 0
        | Вкратце, ниже нагрузка на серверы — следовательно более комфортный просмотр видео.

        Не логично же: если я соединяюсь не с сервером, а с 3-ими сторонами, то снижая нагрузку на сервер — я тем самым обеспечиваю более комфортный просмотр тем людям, кто соединяется не с 3-ими сторонами, а с сервером. А мне то это зачем?
        • 0
          Если бы в этой ситуации вы предпочли бы брать видео с сервера — весьма вероятно, что ему оказалось бы труднее вам ответить, чем те третьи стороны, которые уже забрали те же данные оттуда. (Если я правильно понял вопрос)

          Проще говоря: несколько источников данных лучше, чем один.
          • 0
            Отличный пример: торренты, которые живут тем, что пользователи сами себе «генерируют» трафик. Несмотря на то, что приходится отдавать (забивая канал), скорость скачивания растёт, так как данные идут не от одного сервера/пользователя, а от десятков и более. Так и тут. Обычно, когда вы смотрите видео, исходящий канал простаивает всё равно, а так получается всем хорошо.
  • 0
    Давно пора было сделать P2P, теперь будем смотреть фильмы с меньшими тормозами. Хотя интересно, когда реализация будет стабильно работать

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

Самое читаемое Разное