摄像头相关记录

1、视频流获取

RTSP视频流传输协议

ffmpeg视频流处理工具:获取(摄像头,网络,本地),处理 优势:支持多种传输协议, 会根据传输协议调整,更加方便的获取数据,负责搞定复杂的视频源,稳定的抓取图像。 视频2进制流的起始和结束标记分别为FFD8和FFD9

opencv视频流处理工具:方便对图像和视频进行分析(进一步操作)

第一步:下载FFmpeg(Windows版本)

  1. 打开FFmpeg官方下载页:https://ffmpeg.org/download.html
  2. 找到「Windows」板块,点击「Windows builds by BtbN」(这是最常用的Windows编译版本,不用自己编译);
  3. 跳转到GitHub页面后,下载最新的「ffmpeg-master-latest-win64-gpl.zip」(64位系统,zip压缩包,不用安装,解压就能用);
  4. 把下载的压缩包解压到你想存放的目录,比如 D:\Software\ffmpeg(路径里不要有中文/空格 ,避免后续出问题)。
    解压后你会看到目录里有 bin 文件夹,里面包含 ffmpeg.exe(核心程序)、ffplay.exe(测试播放)等文件,这就是FFmpeg的核心文件。

第二步:配置环境变量(让系统能找到ffmpeg命令)

  1. 右键点击「此电脑」→ 选择「属性」→ 点击右侧「高级系统设置」;
  2. 在弹出的「系统属性」窗口中,点击「环境变量」;
  3. 在「系统变量」列表里找到「Path」,双击它;
  4. 点击「新建」,把FFmpeg解压目录下的 bin 路径粘贴进去(比如 D:\Software\ffmpeg\bin);
  5. 点击「确定」保存所有窗口(一定要点到底,所有弹窗都确认)。

第三步:验证FFmpeg是否安装成功

  1. 关闭所有已打开的命令行/终端窗口(环境变量需要重启终端才生效);
  2. 重新打开「命令提示符」(CMD)或「PowerShell」;
  3. 输入命令:ffmpeg -version;
    • 如果显示FFmpeg的版本信息(比如ffmpeg version 6.1...),说明安装+配置成功;
    • 如果还是报错,检查路径是否输错(比如少写了\bin),或重启电脑再试。
bash 复制代码
# 替换 用户名/密码 为你摄像头的实际账号密码
ffmpeg -rtsp_transport tcp -i rtsp://admin:123456@ip:554/stream1 -vframes 1 -f image2 test.jpg
ffplay -rtsp_transport tcp rtsp://admin:123456@ip:554/stream1

如果能正常播放画面,说明流完全没问题;如果画面卡顿/黑屏,就是流本身不稳定。

补充:确认摄像头 RTSP 流路径

如果改了密码还是不行,大概率是 RTSP 流路径不对(不同品牌路径格式不同),给你几个常用格式参考:

海康威视:rtsp://admin:密码@ip地址:554/Streaming/Channels/101

大华:rtsp://admin:密码@ip地址:554/cam/realmonitor?channel=1&subtype=0

通用:rtsp://admin:密码@ip地址:554/0 / rtsp://admin:密码@ip地址:554/1/1

python 复制代码
import cv2

# 原地址(无密码):rtsp://ip地址:554/stream1
# 修改后(带密码):rtsp://admin:123456@ip地址.4:554/stream1
cap = cv2.VideoCapture("rtsp://admin:123456@ip地址:554/stream1")

# 测试读取帧
ret, frame = cap.read()
if ret:
    print("成功读取帧!")
    cv2.imwrite("test_code.jpg", frame)
else:
    print("读取帧失败(仍有问题)")
cap.release()

2、docker采用桥接模式可能导致视频传输时网络丢包

将主机的代码目录挂载到Docker容器中

在 Docker 环境下配置挂载点

使用 -v 或 --mount 参数挂载数据卷

如果是类似这种情况,可能存在网络问题导致数据丢包

相关推荐
灿飞屋33 分钟前
Kotlin与Java虚拟机四:函数
java·python·kotlin·安卓·android jetpack
一晌小贪欢2 小时前
Python基础:第 09 篇 · while 循环:重复直到不满足
开发语言·c++·python·数据可视化·面向对象·python办公
一条大祥脚3 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
10年前端老司机3 小时前
Milvus 8种检索能力实践
数据库·python·agent
Sakura_j_h_4 小时前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
大草原的小灰灰4 小时前
LLM应用的标准开发框架LangChain(八)- 中间件
python·中间件·langchain
卷无止境4 小时前
百万 token 时代的真相:主流大模型上下文窗口与最大输出的横向对比分析
人工智能·python
用户298698530145 小时前
Python 实战:将 HTML 批量转换为 Markdown
python·html·markdown
hhcgchpspk5 小时前
flask服务端页面预防被爬措施
后端·python·flask·网络爬虫·防爬
小小张说故事5 小时前
Python 里 copy.copy() 和 deepcopy() 到底差在哪:拆开 __copy__、__deepcopy__ 和那个防止无限递归的 memo 字典
python