【问题标题】:building video conferencing with rails webrtc and HTML5使用 rails webrtc 和 HTML5 构建视频会议
【发布时间】:2015-02-21 17:36:25
【问题描述】:

我需要为我的 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">

我需要一种方法将我看到的实时视频源流式传输给我服务器中的另一个用户。我怎么能这样做?网络套接字能让我这样做吗?如果有怎么办?

【问题讨论】:

    标签: ruby-on-rails html webrtc video-conferencing


    【解决方案1】:

    你绝对可以做到。

    首先,您需要了解 WebRTC 的工作原理以及它需要什么。您需要一个信令服务器(现有的,或者您自己编写)。如果您决定自己编写,则需要任何类型的客户端-服务器-客户端架构和传输方法(其中之一是 websockets)。

    通过 websockets(或任何其他传输),您需要交换会话描述(一个对等方提供,其他对等方回答)以建立连接。实际上,信令服务器只是客户端和服务器端的几个监听器,它们只是在建立 WebRTC 连接之前将信号(相当小的文本数据块)从一个节点传递到另一个节点。

    正确方法

    我建议调查这个应用程序的主要代码https://apprtc.appspot.com/(我在这里保存了主要代码https://gist.github.com/igorpavlov/18af35999f8c7838cf21)。了解它的工作原理对您来说非常有用。

    简单的方法

    你也可以使用库来调用https://simplewebrtc.com/(www.talky.io 在这个库上工作),但你仍然需要一个信令服务器。

    祝你好运!

    【讨论】:

    • 答案对您有帮助吗?
    • 是的,这很有帮助。感谢您的回答和图书馆。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2016-02-09
    • 1970-01-01
    • 2014-05-22
    • 2023-03-03
    • 2013-07-07
    相关资源
    最近更新 更多