2014-08-30 3 views
0

Я хотел бы создать веб-приложение, которое позволяет двум одноранговым узлам видеть и слышать друг друга, используя потоковое видео и аудио с помощью HTML5 и без плагинов (кроме IE, я притворяюсь, что использую getUserMediajs для использования вспышка).Аудио и видеоконференция с NodeJS

Я также хочу, чтобы передал эти данные с помощью NodeJS, но я понятия не имею, с чего начать. В качестве примера:

одноуровневого < ---> Node JS < ---> Peer B

Я заинтересован в этом Peer 2 Peer Сервера 2 подхода вместо Peer 2 Peer решение, такое как PeerJS, потому что:

1) Я думаю, что он будет более совместимым со всеми браузерами. Если это не совсем так, пожалуйста, дайте мне знать.

2) PeerJS (, который меня не интересует), в некоторых случаях использует черную магию STUN-TURN-ICE. Я где-то читал, что только 70% соединений подходят для такого рода передачи, и я не могу позволить себе потеря 30%. Опять дайте мне знать, если это не совсем так..

Я уже играл с socket.io и знаю понятия getUserMedia(), чтобы получить веб-камеру пользователя, но не знаю, как связать это с socket.io и передать его другому клиенту.

+1

Если вы собираетесь использовать Flash для IE, вам понадобится какой-то медиамост, через который проходят потоки (таким образом, это не Peer2peer в этом случае). Кроме того, в 70% случаев требуется только STUN. Этот процент говорит о необходимости поворота. Вам понадобится обход NAT для почти ВСЕ случаев, это зависит от того, какой тип. –

+0

Благодарим вас за отзыв. Тогда всегда (98% ~ 99%) вероятность того, что с помощью STUN или TURN (30% контактов) у нас могут быть соединения P2P? – Axel

+1

Оглушение будет работать на обходной путь ~ 70% времени. Опять же, в браузерах, которые не поддерживают WebRTC (то есть IE), вам придется ретранслировать трафик (расшифровать, исправить кодировку и т. Д.). –

ответ

0

Что бы вы ни делали, вам нужна поддержка WebRTC в браузере («no plugins»). Таким образом, «он будет более совместим будет все браузеры» является спорным вопросом, поскольку совместимость browser support

+0

Вы правы, я должен был упомянуть, что я планирую использовать [getUserMediajs] (https://github.com/addyosmani/getUserMedia.js) для IE, чтобы использовать флеш-резерв, а затем, _somehow_, отправить эти данные используя NodeJS для другого партнера. – Axel

+0

Итак, вы собираетесь построить коммуникационный мост между пользовательским резервным и PeerJS (или любым другим решением, которое вы выбрали webrtc). Счастливый исходный просмотр :) – rollingBalls

2
  1. браузер не имеет ничего общего с добавлением на стороне сервера компонент. Вы можете быть p2p или p2s2p, если то, что вы отправляете, не будет распознано принимающим браузером, это не сработает.

  2. ICE is обязательный для webrtc, вы не можете обойтись, период. по умолчанию вы можете подключаться только к компьютерам в одной сети (кандидаты в хосты). Если вы предоставляете STUN-сервер, вы сможете подключиться в 70% случаев вместе, а тем более в контексте предприятия. http://webrtcstats.com/webrtc-revolution-in-progress/ имеет последнюю статистику от некоторых поставщиков. Вы можете видеть, что для социальных сайтов, по состоянию на июнь 2014 года, 92% вызовов могут работать через брандмауэры и NAT, используя простой STUN. Оставшиеся вызовы должны быть ретранслированы через сервер TURN. У вас есть много бесплатных поставщиков серверов STUN, это минимум, который вы должны использовать.

  3. webRTC для рабочего IE и Safari.

Хотя вспышки обратных вызовов интересны (читать, легко) они паузы две проблемы:

  • Они не генерируют поток видео, совместимый с подключением сверстников или с HTML5. Не совместимая с одноранговым подключением, вы не можете отправлять изображения или видео, но использовать их только локально.Не совместимость с HTML5 означает, что вы не можете использовать сгенерированное изображение и видео в элементе, и у вас нет в любом случае простого способа визуализации его вне элемента flash-плагина. В случае прокладки, на которую вы указываете, они копируют из флеш-плагина в HTML каждый отдельный кадр, и в нем мы читаем, что это слишком вычислительно обширно, чтобы использоваться для прожитого видео.
  • flash использует различные протоколы (RTMP, RTMFP, ..) и кодеки от webrtc, и они не взаимно совместимы. Вам нужно будет поддерживать как отдельно, так и иметь сложную инфраструктуру с двойным использованием, чтобы справиться с ней. OpenClove - это поставщик, который предлагает такую ​​инфраструктуру с двумя целями, например.

Другое решение - установить на рабочем столе IE и Safari плагин webRTC (не flash), который реализует «чистый» webRTC. В этом случае, вы можете напрямую взаимодействовать с хромом, FireFox, Opera, а также любой другой браузер, который реализует изначально WebRTC 1,0

Мы предлагаем такой плагин, бесплатно (без затрат) и для всех (не конкретного поставщика) here

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