Реализация видеочата в режиме реального времени с использованием веб-сокетов HTML5

Кто-нибудь знает, как реализовать передачу голоса / видео через IP в веб-приложении с использованием веб-сокетов HTML5?

Было бы хорошо, если бы я мог реализовать это с помощью PHP или Python, так как я (к сожалению) в настоящее время не знаю другого языка программирования.

Подойдет хороший учебник, а также уже построенное решение, за которое я должен заплатить.

Update1:
Добавлено видео, потому что оно связано не только с аудио / VoIP.

Update2:
Первое приложение HTML5 Video Conference уже создано. Смотрите мой собственный ответ

5 ответов

Решение

Если вы хотите использовать только HTML5, вам понадобится браузер, реализующий черновой вариант захвата мультимедиа HTML (доступен здесь), чтобы получить доступ к необработанным данным с микрофона.

Когда у вас есть эти данные, вам необходимо отправить их по сети. Websockets был бы вариантом HTML5, чтобы иметь достаточно быстрые круговые поездки с сервером (отправка локальных аудиоданных и одновременное получение удаленных аудиоданных)

Поскольку вы упомянули Python, я бы порекомендовал посмотреть на скрученную реализацию веб-сокетов.

Вы можете сделать так, чтобы все ваши клиенты "регистрировались" на сервере websocket с помощью callerID, чтобы сервер знал, где найти данный callerID.

Тогда вашему серверу понадобится API "пригласить", где caller1 "приглашает" caller2.

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

После получения аудиоданных браузер должен будет воспроизвести эти аудиоданные на динамиках, возможно, используя аудиометку HTML5.

Для этого вас могут заставить использовать "хитрость": вместо того, чтобы сервер веб-сокетов пересылал необработанные аудиоданные клиенту, вам может потребоваться смоделировать 2 "бесконечных" файла:

  1. caller1.wav: звук записывается на микрофон caller1
  2. caller2.wav: звук записывается на микрофон caller2

Браузер caller1 добавит caller2.wav в атрибут audio.src после установки вызова (caller1 будет информирован об этом событии через websocket) и, надеюсь, если сервер python добавит необработанные аудиоданные в caller2.wav при получении, это начнёт играть.

Это звучит как крутой прототип, который вы собираетесь взломать!

Удачи в твоем путешествии,

Джером Вагнер

Похоже, Эрикссон создал первое приложение для видеоконференций HTML5.

Техника, которую они использовали:

  • Реализован элемент устройства и Stream API (GUI элемента устройства в настоящее время написан на JavaScript/CSS)
  • Добавлен MediaStreamManager для сопоставления потоковых URL-адресов с соответствующим конвейером в медиа-бэкенде
  • Добавлен MediaStreamTransceiver для управления связанной обработкой и передачей медиа
  • Добавлена ​​поддержка двоичных данных в протоколе WebSocket.

Смотрите: labs.ericsson.com:


Видео на YouTube: помимо HTML5: демонстрация разговорного голоса и видео | Эрикссон Лабс

К сожалению, Ericsson не хочет делиться device_dialog.js (еще).

WebRTC может быть ответом: http://www.webrtc.org/running-the-demos (в настоящее время только Chrome Canary с включенным флагом MediaStream)

См. Демонстрацию: https://apprtc.appspot.com/ (убедитесь, что вы смотрите в соответствующем браузере) и код http://code.google.com/p/webrtc-samples/source/browse/trunk/apprtc/


Я пишу по той причине, что... Я получил действительно дешевый планшет на Android и не могу подключиться ни к Skype, ни к Vtok, ни к Google Voice за пределами США. Мне нужно найти решение на основе HTML5, так как я могу запустить Opera Mobile 12 и заставить работать http://html5demos.com/

@ работа / должен быть быстрым

Ознакомьтесь с javaScript getUserMedia(CanIUse) - API (W3)

webrtc это ответ сейчас.

для стека node.js - вы можете посмотреть на http://www.easyrtc.com/. Обратите внимание, что в IE еще не встроена поддержка API, которые заставляют работать webrtc.

Другие вопросы по тегам