Если вы хотите использовать только HTML5, вам потребуется браузер, реализующий черновик HTML Media Capture (доступно здесь ), чтобы получить доступ к необработанным данным с микрофона.
Когда у вас есть эти данные, вам нужно отправить их по сети.Websockets - это вариант HTML5, позволяющий выполнять достаточно быстрые обходы с сервером (отправляя локальные аудиоданные и получая удаленные аудиоданные одновременно)
Поскольку вы упоминаете python, я бы порекомендовал посмотреть вокруг витая реализация веб-сокетов.
Вы можете сделать так, чтобы все ваши клиенты "регистрировались" на сервере веб-сокетов с помощью callerID, поэтому сервер знает, где найти данный идентификатор вызывающего абонента.
Тогда вашсерверу понадобится API-интерфейс «пригласить», где вызывающий абонент «приглашает» вызывающего абонента 2.
Как только вызов настроен, и каждый клиент начинает отправлять свои аудиоданные, сервер сможет отправлять эти аудиоданные другой стороне.
После получения аудиоданных браузер должен будет воспроизвести эти аудиоданные на динамиках, возможно, используя аудиотег HTML5.
Для этого вас могут заставить использовать «трюк»: вместо того, чтобы сервер веб-сокетов пересылал необработанные аудиоданные клиенту, вам может потребоваться смоделировать 2 «бесконечных» файла:
- caller1.wav: звук, записанный на микрофон caller1
- caller2.wav: звук, записанный на микрофон caller2
браузер caller1 добавит caller2.wav в аудио.Атрибут src после установки вызова (caller1 будет уведомлен об этом событии через websocket), и, надеюсь, если сервер python добавит необработанные аудиоданные в caller2.wav при получении, он начнет воспроизводиться.
Это звучит как крутой прототип, который вы собираетесь взломать!
Удачи в вашем путешествии,
Джером Вагнер