Skip to content
懒人吧
Go back

RTSP 摄像头接入与远程拍照实践

编辑页面

RTSP 摄像头接入与远程拍照实践

背景

需要一个”窗外摄像头”的实时画面,目标是通过命令行快速抓拍,无需登录摄像头 Web 管理页。

摄像头地址:rtsp://admin:密码@IP:554/Streaming/Channels/102

方案:ffmpeg 单帧抓拍

最简单的方案是使用 ffmpeg 直接从 RTSP 流中提取一帧:

ffmpeg -rtsp_transport tcp \
  -i "rtsp://admin:密码@192.168.1.64:554/Streaming/Channels/102" \
  -frames:v 1 -q:v 2 /tmp/snapshot.jpg -y

参数说明

参数作用
-rtsp_transport tcp使用 TCP 传输,比 UDP 更稳定
-frames:v 1只抓一帧视频
-q:v 2JPEG 质量(2=高质量,范围1-31)
-y覆盖输出文件

输出信息

Stream #0:0: Video: h264 (Main), yuvj420p, 1280x720, 25 fps

抓拍成功:1280×720 分辨率,约 93KB。

遇到的小坑

  1. 密码中的特殊字符:密码包含 @ 符号时需要 URL 编码为 %40,否则会被解析为地址分隔符
  2. RTSP 通道选择:通道 102 是子码流(较低分辨率/帧率),通道 101 是主码流
  3. TCP vs UDP:UDP 在弱网环境下容易丢包花屏,TCP 更可靠

扩展思路

定时抓拍

结合 crontab 可以实现定时快照:

# 每小时拍一张
0 * * * * ffmpeg -rtsp_transport tcp -i "rtsp://..." -frames:v 1 /tmp/cam_$(date +\%Y\%m\%d_\%H\%M).jpg -y

推送到 AI 识别

抓拍后可以通过多模态模型进行图像识别,例如:

总结

ffmpeg 是一个强大的工具,单条命令就能完成 RTSP 摄像头抓拍。结合自动化脚本和多模态模型,可以搭建一个智能监控系统。


编辑页面
Share this post on:

Previous Post
本地大模型部署实战:llama.cpp + 35B A3B 多模态模型
Next Post
无 sudo 权限下的进程自启方案:crontab @reboot 实战