WebRTC Expo 2013 и новые возможности платформы VoxImplant

    image
    В конце ноября, а именно с 19 по 21, в Калифорнии (Santa Clara) прошла очередная конференция WebRTC Expo. В этот раз состав участников пополнился рядом новых имен, а мы (в лице компании Zingaya) выступили одним из ее спонсоров. По словам организаторов в этот раз количество участников достигло 1000 человек, или если считать в компаниях — 294 компании, включая Google, Cisco, Mozilla, Avaya, Ericsson и др. Мы подготовили небольшой отчет, включающий в себя информацию как в целом про конференцию, так и конкретно про нашу платформу VoxImplant и ее новые возможности, которые мы демонстрировали на сцене.

    В этот раз демонстрации были уже гораздо сложнее и интереснее чем год назад, были видно что компании более основательно готовились к мероприятию и вообще стали сильно больше времени и сил тратить на поддержку WebRTC в своих продуктах и сервисах, что не может не радовать. К тому же ряды браузеров, поддерживающих WebRTC, пополнились мобильными Chrome и Firefox, а также desktop-версией Opera 18. Под катом фото, видео и другие подробности с конференции и из мира WebRTC.

    MTI (Mandatory to implement) video codec

    Одной из проблем, которую так пока и не смогла решить рабочая группа WebRTC, является обязательный видео-кодек для WebRTC. С самого начала при обсуждении этого вопроса возникли 2 лагеря — одни поддерживают на роль главного видео-кодека в WebRTC VP8(в будущем VP9) их возглавляет Google, другие — H.264 (в будущем H.265) (надо отметить что количество сторонников данного кодека не особо меньше чем у VP8 и к ним относятся Microsoft, Apple, Cisco и многие другие). Как бывает в таких случаях, у каждого есть свои доводы почему их вариант лучше. Непосредственно перед последним заседанием IETF на эту тему масла в огонь подлили ребята из Cisco со своей инициативой Open H.264. Если совсем коротко, то суть ее в следующем — Cisco выпускает на рынок некий бинарник с энкодером/декодером H.264, за который они уже заплатили все роялти и каждый желающий может этот бинарник встраивать в свой продукт, при этом не придется ничего платить MPEG-LA. Если же бинарник вас по каким-то причинам не устроит, то велкам копаться в его открытом исходном коде, но при этом лицензия Cisco уже не сработает — придется идти на поклон к MPEG-LA, чтобы получить лицензию на использование вашего творения. Так как WebRTC движок для Firefox делает по сути Cisco, то товарищи из Mozilla заявили, что они, мол, не против поддерживать сразу оба видео-кодека. Но Google такая перспектива не очень понравилась и в итоге на заседании IETF опять не смогли прийти к какому-либо решению данного вопроса. Поэтому транскодинг наше все, или не транскодинг а кое-что похитрее, но об этом далее по тексту.

    Новые функции VoxImplant

    Отладчик

    В конце сентября мы запустили облачную платформу для разработчиков сервисов real-time коммуникаций, которая позволяет веб и мобильным разработчикам легко встраивать телефонию (и не только) в существующие и разрабатываемые приложения. Одной из отличительных особенностей платформы является возможность писать серверные сценарии обработки звонков на Javascript, благодаря этим же сценариям очень удобно интегрироваться с существующим бэкендом, так как из сценария можно сделать HTTP-запрос или, наоборот, сделать HTTP-запрос к сценарию. Мы получили много позитивных отзывов про данную архитектуру (ведь по сути любой frontend JS разработчик может писать себе развесистые серверные сценарии для управления вызовами, не говоря уж о разработчиках знакомых с Node.js), но решили не останавливаться на достигнутом. Чем обычно занимаются разработчики после того как написали какой-нибудь код? Правильно, тестами и отладкой. Ни одна из платформ, похожая по функциям на VoxImplant (по крайней мере из тех с которыми мы знакомы) не предлагает нормальных инструментов для отладки, отчасти это вызвано их архитектурой где вам предлагают REST API, за которым скрывается черный ящик. Немного поразмышляв на тему как разработчики привыкли отлаживать свои Javascript-приложения в браузере, мы приступили к созданию удаленного отладчика серверных сценариев и успели все доделать как раз к выставке.

    image

    На изображении вы видите интерфейс отладчика VoxImplant, который позволяет оперативно находить проблемы и ошибки в ваших скриптах, отлаживая их на лету прямо во время звонка. Все очень похоже на Chrome Developer Tools или Firebug, поэтому веб-разработчикам не составит труда в нем разобраться. Чтобы отлаживать конкретно ваш тестовый звонок, а не кого-то еще, кто звонит через ваше приложение, можно использовать фильтры при запуске дебагера — или по номеру телефона или по IP-адресу.

    Мобильное SDK (iOS)

    Ни для кого не секрет, что мобилизация мира продолжается ударными темпами и мы не собираемся игнорировать данный тренд. Первым делом мы выпустили мобильное SDK для iOS, правда забыв про поддержку фонового режима для приема звонков :) но проблему оперативно исправили и каждый желающий может начать пользоваться нашим мобильным SDK в любой момент. Из планов на ближайшее будущее по мобильному SDK — поддержка видео звонков, а также дальнейшая оптимизация кодеков для улучшения качества при работе на «плохих» data-каналах.

    Видео звонки

    В настоящий момент данный функционал доступен в Web SDK при работе SDK во Flash-режиме, поддержка видео-звонков в WebRTC режиме почти готова, но остались несколько вещей, которые необходимо доделать, можно ожидать что все будет окончательно готово после НГ. Не забываем, что видео звонки через VoxImplant можно совершать не только между нашими SDK, но из на SIP. В целом, окончательно разобраться со всеми нюансами планируем ближе ко второму кварталу 2014.

    Одним из интересных моментов нашего выступления на WebRTC Expo была демонстрация звонка из WebRTC (кодек VP8) в SIP (кодек H.264) без полного транскодинга. Концепция заключается в том, что видео-кодеки можно конвертировать на лету, не расжимая все до обычной картинки и сжимая обратно (как это делает, например, FFMPEG). Таким образом можно существенно улучшить производительность решения (в несколько раз), уменьшить задержку и почти не терять качество.

    image

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

    Полное видео нашего выступления можно посмотреть ниже


    Ссылка для просмотра демонстрации с другого ракурса
    Ссылка на все видео с конференции

    В дополнение для любителей фотографий выкладываю еще несколько фоток с выставки
    image

    Наш стенд :) в процессе подготовки
    image

    Мы были одним из спонсоров конференции, поэтому печеньки и все такое
    image

    Девушка помогала донести до людей суть нашего продукта, раздавая one pager и беседуя с посетителями
    image

    P.S. Всем спасибо за внимание! Будем рады ответить на вопросы про выставку, WebRTC и VoxImplant.

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

    Считаете ли вы данный пост интересным?
    • 60.3%Да38
    • 11.1%Нет7
    • 33.3%Не очень21

    Voximplant

    194,00

    Облачная платформа голосовой и видеотелефонии

    Поделиться публикацией
    Комментарии 11
      +1
      Держим кулаки.
        0
        Очень интересная информация про технологию «конвертирования» VP8<->H.264 на лету. Сколько по вашим оценкам таких транскодирований может тянуть одно ядро среднего процессора типа i7?
          0
          Пока рано говорить о конечных цифрах, но мы хотели бы получить на выходе 3-4x по сравнению с полным транскодингом
          0
          Около года назад закончил работу над схожим сервисом, но особой популярности он по какой-то причине не обрёл. Хочется пожелать вам удачи.
            0
            Судя по видео на сайте, можно было использовать только определенный заранее набор команд, а не весь набор функций и классов ECMA5. Спасибо за пожелание :)
              0
              В демонстрации не делали упор на то, что можно всё. Под капотом — Google V8, так что можно использовать всё, что заблагорассудится, ну, кроме eval. В документации, в разделе Voice examples в самом последнем примере видно, что можно использовать JSON.stringify, где-то ещё проскакивал new Date().
              Сайт до сих пор в рабочем состоянии, так что
              можно было
              всё-таки рано говорить.
                0
                V8 — не лучший выбор для такой задачи, у него есть свои особенности
                  0
                  Есть, никто не спорит, особенно противно выглядит longjmp, что затрудняет его использование с легковесными «зелёными» потоками. Тем не менее, свою задачу он выполняет замечательно. Был вариант использовать Rhino, но тянуть Java зависимость в проект совсем не хотелось, несмотря на некие существенные преимущества.

                  А что вы используете под капотом?

                  Кстати, идеолог SwitchCoder'а встречался с вашими представителями на каком-то мероприятии пару недель назад. Странно, что не упомянул о SC.
                    0
                    Spidermonkey
            +1
            Хм. Девушка не зря курточку поверх фирменной футболки надела.
            Светить надписью Implant поперек сисек — как то не совсем то :)
              +1
              Алексей молодец, представляет Российский бизнес в США! Побольше бы таких команд.

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

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