создание видеоконференций с помощью rails, webrtc и HTML5

Мне нужно создать функцию видеоконференции для моего приложения ruby ​​on rails. Я наткнулся на учебник для html5, который позволяет вам иметь доступ к вашей камере через браузер. После того, как камера включена, вы можете видеть прямую трансляцию видео с камеры и делать снимки. Код ниже

javascript-код:

  // Put event listeners into place
window.addEventListener("DOMContentLoaded", function() {
  // Grab elements, create settings, etc.
  var canvas = document.getElementById("canvas"),
    context = canvas.getContext("2d"),
    video = document.getElementById("video"),
    videoObj = { "video": true },
    errBack = function(error) {
      console.log("Video capture error: ", error.code); 
    };

  // Put video listeners into place
  if(navigator.getUserMedia) { // Standard
    navigator.getUserMedia(videoObj, function(stream) {
      video.src = stream;
      video.play();
    }, errBack);
  } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
    navigator.webkitGetUserMedia(videoObj, function(stream){
      video.src = window.webkitURL.createObjectURL(stream);
      video.play();
    }, errBack);
  }
  else if(navigator.mozGetUserMedia) { // Firefox-prefixed
    navigator.mozGetUserMedia(videoObj, function(stream){
      video.src = window.URL.createObjectURL(stream);
      video.play();
    }, errBack);

  }

// Trigger photo take
document.getElementById("snap").addEventListener("click", function(e) {
  context.drawImage(video, 0, 0, 640, 480);
});

}, false);

html-код:

<h1>New video</h1>

<!--<%= render 'form' %>-->
 <video id="video" width="640" height="480" autoplay></video>
   <button id="snap">Snap Photo</button>
   <canvas id="canvas" width="640" height="480"></canvas>
  <div class="actions">

Мне нужен способ потоковой передачи видео в реальном времени, которое я вижу, другому пользователю на моем сервере. Как я мог это сделать? Позволят ли мне веб-сокеты сделать это? Если да, то как?


person user3266824    schedule 21.02.2015    source источник


Ответы (1)


Вы определенно можете это сделать.

В первую очередь нужно понять, как работает WebRTC и что для этого нужно. Вам нужен сигнальный сервер (существующий или вы пишете свой). Если вы решили написать свой собственный, вам нужна любая архитектура клиент-сервер-клиент и метод транспорта (один из них — веб-сокеты).

Через веб-сокеты (или любой другой транспорт) вам необходимо обмениваться описаниями сеансов (предложения одного узла, ответы другого узла), чтобы установить соединение. На самом деле сигнальный сервер — это всего лишь несколько слушателей как на стороне клиента, так и на стороне сервера, которые просто передают сигналы (сравнительно небольшие фрагменты текстовых данных) от одного узла к другому, прежде чем они смогут установить соединение WebRTC.

Надлежащим образом

Предлагаю изучить основной код этого приложения https://apprtc.appspot.com/ (я сохранил основной код здесь https://gist.github.com/igorpavlov/18af35999f8c7838cf21). Понимание того, как это работает, будет очень полезно для вас.

Простой способ

Вы также можете использовать библиотеки для совершения вызовов, такие как https://simplewebrtc.com/ (www.talky.io работает с этой библиотекой), но вы еще нужен сигнальный сервер.

Удачи!

person igorpavlov    schedule 22.02.2015
comment
Вам помог ответ? - person igorpavlov; 23.02.2015
comment
да очень помогает. Спасибо за этот ответ и библиотеку. - person Tarun Garg; 01.12.2015