摄像头抓取保存帧成视频随笔记录

KoiBana / 2024-09-20 / 原文

cv2间隔指定秒抓取视频

以上为一些常见编码格式:
I420,YUV编码,视频格式为.avi
PIM1,MPEG-1编码,视频格式为.avi
XVID,MPEG-4编码,视频格式为.avi
THEO,Ogg Vorbis,视频格式为.ogv
FLV1,Flash视频,视频格式为.flv
AVC1,H264编码
DIV3,MPEG-4.3编码
DIVX,MPEG-4编码
MP42,MPEG-4.2编码
MJPG,motion-jpeg编码
U263,H263编码
I263,H263I编码
MP4V,视频格式为.mp4

这里是读取摄像头,如果是读取mp4等文件一定要注意格式。

import cv2
import time

# 抓取间隔
timekey = 10
# 每秒的帧数
FPS = 30

# 计数器
count = 0
while True:
    cap = cv2.VideoCapture('rtsp://ip....等参数')
    cap.set(cv2.CAP_PROP_FPS, FPS)
    fourcc = cv2.VideoWriter_fourcc(*'MP4V')
    fps = cap.get(cv2.CAP_PROP_FPS)
    size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    t = time.strftime("%m-%d-%H-%M-%S", time.localtime(time.time()))
    out = cv2.VideoWriter("video-" + t + ".mp4", fourcc, fps, size)
    while (cap.isOpened()):
        ret, frame = cap.read()
        # ret 是否读取到图片
        if ret == True:
            out.write(frame)
        else:
            break
        count += 1
        if count == FPS*timekey:
            cap.release()
            out.release()
            count = 0
            continue