我家里的电脑运行着 Ubuntu Server,电脑上插着一个 USB 网络摄像头。我想远程访问它的视频源。
我通过 VPN 连接到服务器的网络,因此我可以使用类似 的工具通过 SSH 进入服务器,并通过这种方式运行命令。ssh [email protected]
我尝试过很多命令。
cvlc -I dummy -vvv v4l2:///dev/video0
将在终端中以 ASCII 格式显示视频源,这告诉我们网络摄像头可以正常工作。
当我不在家时,如何以 HTTP 格式传输结果以便在浏览器中查看?
答案1
使用https://motion-project.github.io,我可以创建一个简单的配置文件,并使用 NGINX 做一个标准的反向代理。
这是我的 motion.conf 文件:
stream_quality 98
stream_maxrate 6
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
}