如何将视频从我的USB网络摄像头流式传输到远程HTML页面

时间:2015-09-02 07:46:32

标签: node.js video stream streaming webcam

我想创建一个程序,将视频从我的USB网络摄像头通过互联网传输到网页。

目前,我使用的Web服务在触发时,调用fswebcam来捕获图像,保存到数据存储,转换为base64二进制文件并将该数据发送到HTML页面,然后将其呈现到'src中'img'的属性。 HTML页面包含每秒调用此服务一次的JavaScript。

正如你所知道的那样,这是一种可怕的方式。如果可以的话,我宁愿有适当的流。但我不知道有哪些技术可以实现这一目标。

网络服务以nodeJS编写。服务器正在raspberry pi 2上运行。我没有在raspberry pi forum中提出这个问题,因为我认为这是一个普遍的Linux/programming问题。

2 个答案:

答案 0 :(得分:1)

文章here以最简单的方式解释了工作图像的整个过程。这是Linux的方式,而不是任何node.js脚本。我在这里陈述了主要部分。

  • 使用IP地址与您的Pi连接。 ' PI' &安培; '覆盆子'是默认'登录为'和密码'在Raspbian。

  • 一次更新命令sudo apt-get updatesudo apt-get upgrade中的系统类型。

  • 输入命令sudo apt-get install motion开始安装。

  • 现在要确保正确检测到摄像机,请输入命令lsusb并输入。您应该看到相机的名称。如果不存在,则说明您的相机存在问题,或者运动中不支持相机。

  • 安装完成后,输入命令sudo nano /etc/motion/motion.conf并按Enter键。

  • 然后您必须更改.conf文件中的某些设置。有时可能很难找到设置,但使用 Ctrl + W 来查找它。请按照以下步骤操作:

    1. 确保'守护程序'是开。
    2. 设置'帧率'在1000到1500之间的任何地方。
    3. 保持' Stream_port'到8081。
    4. ' Stream_quality'应该是100。
    5. 更改' Stream_localhost'关闭。
    6. 更改' webcontrol_localhost'关闭。
    7. 设定品质'到100。
    8. 设置'宽度' &安培; '高度'至640& 480。
    9. 设置' post_capture'到5。
    10. 按ctrl + x退出。输入y保存并输入以符合。
  • 再次输入命令sudo nano /etc/default/motion并按Enter键。

  • start_motion_daemon设为是。保存并退出。

  • 首先,您必须重新启动动画软件。要执行此操作,请键入命令sudo service motion restart并按Enter键。

  • 再次输入命令sudo motion并按Enter键。现在你的服务器准备好了。

  • 现在打开浏览器。以这种方式输入覆盆子Pi的IP地址和端口号:

    192.168.0.107:8081(首先是IP地址,然后是':',然后是端口号)。按Enter键。

现在,您可以直接在笔记本电脑或手机或两者上同时看到来自网络摄像头的实时信息。但是,这是一个本地连接。要公开使用公共IP设置您的IP,以便可以从世界上任何地方访问它。

答案 1 :(得分:0)

使用livecam等框架。

使用GStreamer和Node.js的网络摄像头直播解决方案

此模块允许您通过网络流式传输网络摄像头,以供您使用浏览器和/或流式传输到文件。有关更多信息,请参阅文档。

<强>用法:

// npm install livecam

const LiveCam = require('livecam');
const webcam_server = new LiveCam({
    'start' : function() {
        console.log('WebCam server started!');
    }
});

webcam_server.broadcast();