我如何远程对插入无头式 Ubuntu 服务器的 USB 网络摄像头进行 HTTP 流传输?

我如何远程对插入无头式 Ubuntu 服务器的 USB 网络摄像头进行 HTTP 流传输?

我家里的电脑运行着 Ubuntu Server,电脑上插着一个 USB 网络摄像头。我想远程访问它的视频源。

我通过 VPN 连接到服务器的网络,因此我可以使用类似 的工具通过 SSH 进入服务器,并通过这种方式运行命令。ssh [email protected]

我尝试了很多命令,也研究了其他解决方案。iSpyConnect 要求您支付远程流媒体费用,而且我无法让 go2rtc 工作。

cvlc -I dummy -vvv v4l2:///dev/video0将在终端中以 ASCII 格式显示视频源,这告诉我们网络摄像头可以正常工作。

当我不在家时,如何通过 HTTP 传输结果以便在浏览器中查看?我不需要音频。

答案1

使用https://motion-project.github.io,我可以创建一个包含两行内容的配置文件,并使用 NGINX 执行标准反向代理。

这是我的 motion.conf 文件:

stream_quality 98
stream_maxrate 5
stream_port 1984     <------ required
stream_localhost off <------ required
output_pictures off
framerate 30
ffmpeg_video_codec mpeg
width 640
height 480
auto_brightness off
contrast 0
saturation 0

这是我的 NGINX 服务器

server {
    server_name DOMAIN;
    root /var/www/html;

    auth_basic "Admin"; # password protected domain
    auth_basic_user_file /etc/apache2/.htpasswd;

    location / {
        proxy_pass http://127.0.0.1:1984/;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Prefix /;
    }


    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/DOMAIN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/DOMAIN/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

相关内容