2012-02-08 2 views
7

Я хотел бы создать сервис, который позволяет пользователю прослушивать звонок в прямом эфире из своего браузера.Asterisk + Node.js + Поток браузера

У меня есть опыт работы с Asterisk, и это кажется достаточно гибким, чтобы делать то, что я описал.

Node.js звучит хорошо, потому что он предназначен для обработки параллелизма хорошо, и мне нравится JavaScript.

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

Мой коллега работал вместе с демонстрацией этой концепции, используя Icecast, но не смог ее закончить. Имелись также значительные задержки.

Мой вопрос заключается в следующем:

Как я должен идти о начинании на это?

Любая помощь приветствуется!

Update:

Я нашел презентацию обсуждает внедрение SIP поверх WebSockets через SIP-прокси на внутреннем интерфейсе:

http://sip-on-the-web.aliax.net/

После того, как я это и работает, следующий шаг будет реализацией потоковой передачи. Похоже, я должен иметь возможность проксировать аудиовыход, который обычно поступает на клиент sip, через дополнительный сервер, который затем передает его в браузер. Интересно, почему это невозможно сделать в памяти? Тогда нет необходимости писать и читать файл по мере продолжения вызова.

ответ

8

Если вы готовы подождать Asterisk 11, мы в настоящее время работаем над поддержкой поддержки WebSockets непосредственно в Asterisk.Подробнее об этом здесь:

Asterisk 11 WebRTC/RTCWeb Support

Я просто цитирую Кевин здесь, так как он суммирует это лучше, чем я могу:

«Сегодня в незавершенной ветви развития имеет поддержку WebSocket транспорта протокол (используется для передачи сообщений сигнализации между браузером и Asterisk), SIP через WebSocket (в настоящее время стандартизован IETF) и ICE/STUN/TURN (механизмы обработки мультимедиа для обхода NAT и безопасности подключения). Кроме того, есть новый Jingle/Google Talk/Google Voice, и мы планируем также поддерживать Jingle над WebSocket. На данный момент у нас нет довольно полного решения (новая Canary-сборка браузера Google Chrome необходима с небольшими изменениями), но каждая из частей была протестирована, и мы очень хотим, чтобы все это работало вместе. Мы хотели бы поблагодарить Iñaki и José из проекта SIP-on-the-web за предоставление нам стека JavaScript SIP для использования во время нашего тестирования, и мы, вероятно, будем тестировать с помощью PhonoSDK, а также для поддержки Jingle. »

2

Это кажется замечательное руководство

Remote call-center solution using Node.js

+0

Спасибо за публикацию, но я это уже видел. Он не входит в сторону потокового браузера, он просто использует Phono, основанный на flash. – Jonathan

0

Я думаю, пытающегося поток звуковой файл, пока он записывается будет иметь экстремальные проблемы задержки, что вы не сможете получить. Если вы хотите получить в режиме реального времени прослушивание телефонного разговора, я бы предложил посмотреть на Phono. Это плагин JQuery, который превращает ваш веб-браузер в телефон. Тогда вы просто попросите слушателя поговорить с ним при отключении звука.

+0

Я раньше видел Phono. , bu t, как я понимаю: вам нужно использовать службу Phono, и плагин фактически использует flash. Мне не нужно получать доступ к микрофону пользователя, поэтому я считаю, что они используют флеш-память, поэтому, по возможности, потоковая передача в звуковой тег, похоже, будет работать. – Jonathan

+0

Потоковая передача может работать, если вы можете принять проблемы с задержкой. Это никогда не будет в режиме реального времени. Я считаю, что вам нужен канал связи для прослушивания в режиме реального времени. Возможно, вы захотите изучить другие SIP-телефоны на базе браузера, подобные этому [http://www.mizu-voip.com/Products/WebPhone.aspx]. –

+0

Если я могу получить доступ к сокетам в браузере, почему я не могу использовать sudo-sip-клиент, используя прямой сокет для сервера? Я уверен, что это не тривиальная задача, но, интересно, возможно ли это? – Jonathan

0

Если вы не возражаете против задержки (вызванной буферизацией потока Icecast), Asterisk может передавать потоки в Icecast (настроить приложение Ices Asterisk).

Если вы не можете терпеть латентность, вам понадобится клиент SIP на основе браузера. К сожалению, их не так много, что они не привязаны к чужой телефонной системе. Вы можете попробовать red5phone (http://code.google.com/p/red5phone/), но для этого нужно настроить сервер Red5.

Смежные вопросы