Недавно мы запустили новый функционал на нашей платформе VoxImplant, который позволяет делать HD-аудио конференции, а также проигрывать mp3 и ogg файлы в звонки из SDK или SIP в wideband (раньше все было в 8КГц, теперь можно все 48КГц). Концептуально нужно было проигрывать аудио через платформу в конференцию и слушать как все это работает в зависимости от количества участников. Нам хотелось придумать интересный способ потестировать все это хозяйство и, немного поразмыслив, мы нашли достаточно нестандартный вариант — использовать онлайн-радио. Надеюсь, что вас это хоть немного заинтриговало, поэтому добро пожаловать под кат.

Pandora и API


Для тех, кто не в курсе, Pandora.com — американское онлайн-радио, доступное для прослушивания только в США. Конечно, нахождение в США проверяется по IP, поэтому не слишком сложно зарегистрироваться, воспользовавшись каким-нибудь TunnelBear. В сервисе ты выбираешь себе станции по вкусу по имени исполнителя, а оно потом создает плейлист, исходя из своих умных алгоритмов. В общем, концепция сложилась следующая — подключаемся к радио, оно выдает нам mp3, мы их проигрываем в конференцию VoxImplant, и все участники конференции слушают музыку. К счастью, у Pandora еще и API обнаружилось, хоть и неофициальное, но вполне рабочее https://6xq.net/pandora-apidoc/json/

Интеграция с VoxImplant


Подключаться к API можно прямо из сценария VoxImplant, напомню, что пишутся они на JavaScript и выполняются нашим движком, оттуда легко можно делать http запросы ко внешним веб-сервисам. Наши сервера есть по всему миру, поэтому для тестирования мы использовали те, которые находятся в США, чтобы Pandora не ругалась.
В итоге получился какой-то такой сценарий https://gist.github.com/aylarov/ee7f509ca182e8437b2abed9d415f2f1, в нем можно заметить использование Promise и blowfish.encrypt, этот функционал подключается с помощью дополнительных JS-файлов — es6-promise и blowfish.js в Rule приложения перед основным сценарием. Основной сценарий проигрывает mp3-файлы, URL которых выдает API Pandora, в конференцию. На уровне платформы mp3 превращается в real-time поток в кодеке Opus (48КГц), пока правда в моно, так как со стерео в WebRTC есть ряд нюансов, связанных с эхоподавлением, да и в случае аудио-конференции стерео не очень работает.

Клиент для тестирования


С помощью Web SDK VoxImplant накидали приложение, которое подключается и делает звонок в конференцию, и даже есть возможность переключать треки и радио-станции. Ну а дальше сидим и слушаем музыку :)



Посмотреть демо и послушать музыку можно тут.

P.S. Конечно, это не единственный способ, который мы использовали для тестирования конференций, обычные звонки где люди общались тоже никто не отменял.

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


  1. aylarov
    11.04.2016 13:30
    +2

    Вернули ссылку на демо, пришлось чуть-чуть подпилить, чтобы API не ругалось на много запросов.


    1. Shutik
      12.04.2016 12:34

      Можете рассказать подробнее про "… этот функционал подключается с помощью дополнительных JS-файлов — es6-promise и blowfish.js в Rule приложения перед основным сценарием"?
      Ни в документации, ни в настройках правил для приложения не нашел как можно подключать дополнительные js файлы.
      Спасибо


      1. aylarov
        12.04.2016 12:51

        Просто создаете сценарий с JS кодом и цепляете его к правилу