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

    Часть пользователей уже могли заметить в нашем видеоплеере окно с предложением разрешить использование пиринговой сети. Просмотр роликов с использованием технологии 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% всех данных. Процент стабильно растет.
    Метки:
    ВКонтакте 62,43
    Компания
    Поделиться публикацией
    Похожие публикации
    Комментарии 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, теперь будем смотреть фильмы с меньшими тормозами. Хотя интересно, когда реализация будет стабильно работать

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

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