【问题标题】:How Do I Stream Video From My USB Webcam To A Remote HTML Page如何将 USB 网络摄像头中的视频流式传输到远程 HTML 页面
【发布时间】:2023-04-03 18:09:01
【问题描述】:

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

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

如您所知,这是一种可怕的做法。如果可以的话,我宁愿有一个适当的流。但我不知道有哪些技术可以实现这一点。

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

【问题讨论】:

    标签: node.js video stream streaming webcam


    【解决方案1】:

    使用像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();
    

    【讨论】:

      【解决方案2】:

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

      • 使用 IP 地址连接您的 Pi。 'pi' & 'raspberry' 是 Raspbian 中默认的“登录身份”和“密码”。

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

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

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

      • 安装完成后,输入命令sudo nano /etc/motion/motion.conf回车。

      • 然后您必须更改.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并按回车键。

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

      • 首先您必须重新启动运动软件。为此,请输入命令sudo service motion restart 并按回车键。

      • 再次输入命令sudo motion 并按回车键。现在您的服务器已准备就绪。

      • 现在打开您的浏览器。以这种方式输入您的树莓派的 IP 地址和端口号:

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

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

      【讨论】:

      • 我试过罗技网络摄像头,它可以工作,但无论设置如何,图片的尺寸都只有 176x144。任何想法如何使用更高的分辨率? framerate 的有效值为 2 到 100,因此无法按照建议使用 1000 到 1500 之间的参数。
      • 知道这有多快或视频流的延迟吗?
      • 反应很好,对我帮助很大。但是,当我使用您的建议完成系统配置后,我在网络服务器上的 webcap 渲染上有 1 FPS。然后我搜索并找到:ubuntuforums.org/showthread.php?t=2128049,它提供了正确的解决方案,以我设备的最大 FPS 进行流式传输。我认为运动选项名称发生了变化,在我的情况下,我必须设置以下内容才能使其充分发挥作用:stream_motion on stream_maxrate 30 #您想要/您的设备可以产生的最大 fps。如果这不能解决问题,则可能与 USB / 网络带宽有关。
      猜你喜欢
      • 2011-10-22
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多