在rails 4中使用网络摄像头录制视频

时间:2014-07-07 12:21:17

标签: ruby-on-rails-4 video-capture

我们正在开发一个网站,您可以在其中上传有关教程的视频,它看起来像某个机构的视频存储库。我们想出了一个用户可以将视频直接录制到网站并上传标题,说明等内容的想法。我们将在rails框架上使用ruby。除了使用闪光灯和银光之外,有谁知道如何制作它?  好吧,我搜索一些,发现一些,但案例是当用户停止录制时,它自动上传文件...用户可以放一些标题或描述等..而这个例子是在php,这就是为什么它对我来说是一个问题我怎么能在rails中做到这一点

提前致谢

2 个答案:

答案 0 :(得分:8)

如果HTML5解决方案适合您,您可以查看WebRTC(目前Chrome,Firefox和Opera支持)。

您可以在此处找到一个好的教程:http://www.html5rocks.com/en/tutorials/getusermedia/intro/

第一次点击搜索webcam pluginhttp://www.xarg.org/project/jquery-webcam-plugin/因为它使用的是JavaScript,所以很容易包含在Rails中。

结果中出现了许多其他人......

另一种选择是使用Nimbb widget。有很多教程展示了如何将其嵌入到网站中。

网络摄像头有 JQuery插件列表。最佳前10名列出如下:

1. ScriptCam : jQuery plugin to manipulate Webcams

ScriptCam是一个流行的JQuery插件来操纵网络摄像头。拍摄快照,检测移动,颜色,QR和条形码,录制视频片段并组织视频聊天。

2. Xarg jQuery webcam plugin

jQuery网络摄像头插件是一个透明层,可以直接在JavaScript中与摄像头进行通信。这个插件提供了三种不同的模式,可以通过一个小的API直接使用JavaScript访问网络摄像头 - 或者更确切地说是jQuery。因此,可以将图像置于Canvas(回调模式),将图像存储在服务器上(保存模式),并在Canvas(流模式)上流式传输Flash元素的实时图像。

3. jQuery.WebcamQRCode : QR Code scanning in jQuery

WebcamQRCode是一个jQuery插件,它使用网络摄像头用户扫描QR码并将结果返回给Javascript进行处理。此插件最初是为扫描产品的条形码而开发的,并自动在Intranet的形式上填写相应的信息。此插件使用Flash访问网络摄像头。

4. Photobooth-js : jQuery Html5 plugin to take pictures through webcam

Photobooth-js是一个jQuery插件加上一个html5小部件,允许用户在你的网站上拍摄他们的头像。所有支持navigator.getUserMedia的浏览器都支持这个jquery插件。

5. Photobooth with PHP, jQuery and CSS3

在本教程中,我们将构建一个jQuery和PHP驱动的photobooth。它将允许您的网站访问者使用他们的网络摄像头拍摄快照,并从一个简洁的CSS3界面上传。我们将用于此应用程序的解决方案是webcam.js。它是围绕flash API的JavaScript包装器,可以让我们控制用户的网络摄像头。

6. Mackers jQuery Webcam Plugin

允许jQuery从用户的网络摄像头或其他视频捕获设备读取数据的插件。

7. headtrackr : Javascript library for headtracking via Webcam

headtrackr是一个用于实时人脸跟踪和头部跟踪的javascript库,通过网络摄像头和webRTC / getUserMedia标准跟踪用户头部相对于计算机屏幕的位置。

8. tracking.js : Real Time tracking techniques by the Camera

tracking.js通过对象跟踪,颜色标记等自然交互,为摄像机捕获的真实场景提供网络元素跟踪技术,通过简单直观的API开发界面和游戏。 / p>

9. Reveal.js with Webcam-based gesture recognition

这是我将基于网络摄像头的手势识别与Hakim El Hattab的reveal.js结合使用时得到的结果。我花了一段时间来编写和微调检测算法。即使这样,算法的准确率也只有80%左右。

10。 Say Chees : JavaScript library for integrating a webcam

用于将网络摄像头快照集成到您的应用中的最小库。它使用getUserMedia,这是一种用于在浏览器中访问音频和视频的最新API。

如果我的回答在某种程度上或某个地方满足了您的要求,那么我很感激您向上投票这个答案 ... :);)

答案 1 :(得分:1)

您可以在没有任何外部库的情况下执行此操作,实际上,我认为,如果从头开始构建此库,则工作会更容易。

首先,您需要访问用户的网络摄像头,使用JavaScript,您可以首先测试用户是否首先拥有网络摄像头。这可以通过以下方式完成:

function hasNavigator() {
      return !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia)
    }

然后,如果hasNavigator()true,则可以

if (video) {
        navigator.mediaDevices.getUserMedia(constraints).then((stream) => { video.srcObject = stream })
      }

video在哪里

var video = document.querySelector('video')

这使您可以从网络摄像头获取流:

一旦有了流,就可以在画布上绘制流的框架并将其另存为图像。

我写了一篇有关Linking a Webcam Directly to Rails' ActiveStorage的博客文章,我认为您可能会有所帮助。