网络摄像头通过rtsp协议拉流与本地保存

文章描述了如何使用Python和OpenCV4.9.0.80处理RTSP视频流,解决并发保存和实时播放时的错误,并实现每分钟自动保存最新视频的功能。同时,文中提到了视频分辨率调整和文件管理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

  • python 3.11.8
  • opencv-python == 4.9.0.80
  • numpy == 1.26.4

通过rtsp协议拉流

有一个问题就是如果要同时拉流保存与同时保存最近1分钟视频的需求,会触发一个问题。当写入视频的时候同时读取回抛错。目前是采取每10秒钟保存视频的方式保存。
而且有个采用opencv拼接视频效率并不高
如果是采用opencv读取视频后转存为另一部视频时在cv2.waitkey(1000 // 帧率),不然会出现另存的视频播放速度快的问题

import datetime
import math
import os

import cv2
import time

username = 'username'
password = 'password'
ip = '192.168.1.101'
# 显示的视频分辨率
show_width = 1600
show_height = 800
# 保存的视频分辨率
save_width = 1920
save_height = 1080
# 每个厂商的视频流地址不一定相同,示例使用的海康威视的摄像头
url = f'rtsp://{
     username}:{
     password}@{
     ip}/Stream2'
# url = f'rtsp://{username}:{password}@{ip}/Streaming/channels/1'
# 通过rtsp协议获取码流数据
cap = cv2.VideoCapture(url)
# 获取视频分辨率与帧率
old_width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
old_height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
old_fps = cap.get(cv2.CAP_PROP_FPS)
print(f'{
     old_width}@{
     old_height} {
     old_fps}')
# 设置视频保存的编码格式
fourcc = cv2.VideoWriter.fourcc(*'mp4v')
# 保存视频播放倍率
play_speed = 1.0
play_interval = int</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值