Недавно мы запустили новый функционал на нашей платформе 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 накидали приложение, которое подключается и делает звонок в конференцию, и даже есть возможность переключать треки и радио-станции. Ну а дальше сидим и слушаем музыку :)
Ну и на закуску — послушать Pandora через VoxImplant можно тут.
P.S. Конечно, это не единственный способ, который мы использовали для тестирования конференций, обычные звонки где люди общались тоже никто не отменял.
Автор: Voximplant