本文共 1696 字,大约阅读时间需要 5 分钟。
使用 OpenCV 捕获 RTSP 流并保存为 AVI 文件
在这个教程中,我们将使用 OpenCV 库来从 RTSP 流中捕获视频流,并将其保存为 AVI 文件。以下是详细的实现步骤和代码示例。
首先,我们需要导入 OpenCV 的视频处理模块。以下是完整的代码示例:
import cv2# 初始化视频捕获对象cap = cv2.VideoCapture('rtsp://admin:hik12345@192.168.3.160/Streaming/Channels/1')# 设置视频编码格式fourcc = cv2.VideoWriter_fourcc(*'XVID')# 获取视频分辨率size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))# 创建视频写入对象out = cv2.VideoWriter('camera_test.avi', fourcc, 10.0, size)while True: # 从视频流中读取一张图片 ret, frame = cap.read() # 将当前帧写入视频文件 out.write(frame) # 绘制提示信息 cv2.putText(frame, "Press Q to save and quit", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2) # 显示当前帧 cv2.imshow('frame', frame) # 等待键盘输入 if cv2.waitKey(1) & 0xFF == ord('q'): break# 释放视频资源cap.release()out.release()cv2.destroyAllWindows() 导入 OpenCV 模块:我们使用 cv2 模块来处理视频文件。
初始化视频捕获对象:cap = cv2.VideoCapture('rtsp://admin:hik12345@192.168.3.160/Streaming/Channels/1') 这行代码用于打开指定 URL 的 RTSP 视频流。
设置视频编码格式:fourcc = cv2.VideoWriter_fourcc(*'XVID') 使用 XVID 编码格式来创建视频文件。
获取视频分辨率:size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) 获取视频的宽度和高度。
创建视频写入对象:out = cv2.VideoWriter('camera_test.avi', fourcc, 10.0, size) 创建一个名为 camera_test.avi 的视频文件。
主循环:使用 while True 循环来持续读取和写入视频帧。
ret, frame = cap.read() 从视频流中读取一张图片。out.write(frame) 将当前帧写入视频文件。cv2.putText 绘制提示信息。cv2.imshow 显示当前帧。释放资源:在循环结束后,释放视频捕获和写入对象。
关闭 OpenCV窗口:cv2.destroyAllWindows() 关闭所有 OpenCV 窗口。
通过以上代码,你可以轻松地从 RTSP 流中捕获视频流并保存为 AVI 文件。这个过程适用于多种 RTSP 源,包括 IP 相机、摄像头等。
转载地址:http://dlafk.baihongyu.com/