Я пытался реализовать веб-приложение, которое будет иметь возможность обрабатывать следующий сценарий:поток WebCam использования socket.io
- потокового видео/аудио от клиента к другим клиентам (на самом деле конкретный набора из них , нет трансляции) и сервера одновременно. Источником данных будет веб-камера клиента.
- Эти потоковые данные должны отображаться в реальном времени в браузере других клиентов. и сохраняются на серверной стороне для целей архивации.
- Он должен быть реализован в среде node.js + socket.io.
Чтобы выразить это в более конкретном контексте ... Сценарий заключается в том, что есть парень, который делает своего рода комнату для пользователей, которых он выбирает. После того, как выбранные пользователи присоединятся к комнате, создатель начинает потоковое видео/аудио из своих встроенных устройств (веб-камеры). Все гости получают данные в режиме реального времени, причем данные отправляются на сервер, где он хранится, поэтому его можно восстановить после того, как поток и комната закрываются.
Я думал о смешивании Socket.IO с WebRTC. Теоретически сочетание этих двух кажется просто идеальным для работы. Socket.IO отлично подходит для сбора определенного набора пользователей путем назначения некоторых сокетов в комнату и для процесса сигнализации, требуемого WebRTC. В то же время WebRTC является отличным для P2P-соединения между пользователями, собранными в одной комнате, также очень легко получить доступ к веб-камере и другим встроенным устройствам, которые я могу использовать.
Так что да, все выглядит довольно прилично в теории, но мне действительно нужно увидеть какой-то код в действии, чтобы я мог попытаться реализовать его самостоятельно. Кроме того, я вижу некоторые вопросы:
- Как сохранить поток, который отправляется P2P-соединением? Очевидно, сервер не имеет к этому доступа. Я думал, что я могу рассматривать сервер как «гостя», так что это будет всего лишь конечная точка соединения P2P с создателем комнаты. Тем не менее, это кажется острым.
- Не лучше ли рассматривать сервер как посредника между создателем и клиентами? В какой-то момент может быть какая-то, возможно, незначительная задержка по сравнению с P2P, но, по-видимому, она будет одинаковой для всех клиентов. (Я пробовал это, но я не могу получить потоковое вещание с веб-камеры на сервер, но это тема для другого вопроса, поскольку у меня возникают проблемы с обработкой MediaStream)
Я искал приятный но без каких-либо успехов. Я видел, что есть это хорошее решение P2P, сделанное для socket.io: http://socket.io/blog/socket-io-p2p/. Дело в том, что я не думаю, что он будет эффективно обрабатывать поток данных. В примерах упоминается только простое приложение для чата, и мне нужно что-то немного тяжелее.
Я был бы очень благодарен за некоторые конкретные примеры, документы, что может привести меня немного ближе к его реализации, поскольку я действительно не знаю, как подойти к нему.
Заранее спасибо :)