【Opencv教程】cv2播放和保存视频

cv2播放视频

import cv2
import win32gui


def play_video(path):
    cap = cv2.VideoCapture(path)
    # 获取视频帧率
    fps = cap.get(cv2.CAP_PROP_FPS)
    # 计算每帧显示时长,单位ms
    wait = int(1 / fps * 750)
    cv2.namedWindow("frame", 0)
    while True:
        ret, frame = cap.read()
        if not ret:
            break
        cv2.imshow('frame', frame)
        # waitKey指定每帧显示时长,单位为毫秒
        if cv2.waitKey(wait) & 0xFF == ord('q') or not win32gui.FindWindow(None, 'frame'):
            break
    cap.release()
    cv2.destroyAllWindows()


if __name__ == '__main__':
    source_path = 'data/video/my.mp4'
    play_video(source_path)

保存rtsp视频流数据

import cv2


def save_video(rtsp_url):
    """
    视频的编码格式参考如下:
    cv2.VideoWriter_fourcc('I','4','2','0'):YUV编码,4:2:0色度子采样。这种编码广泛兼容,但会产生大文件。文件扩展名应为.avi。
    cv2.VideoWriter_fourcc('P','I','M','1'):MPEG-1编码。文件扩展名应为.avi。
    cv2.VideoWriter_fourcc('X','V','I','D'):MPEG-4编码。如果要限制结果视频的大小,这是一个很好的选择。文件扩展名应为.avi。
    cv2.VideoWriter_fourcc('m', 'p', '4', 'v'):较旧的MPEG-4编码。如果要限制结果视频的大小,这是一个很好的选择。文件扩展名应为.m4v。
    cv2.VideoWriter_fourcc('X','2','6','4'):较新的MPEG-4编码。如果你想限制结果视频的大小,这可能是最好的选择。文件扩展名应为.mp4。
    cv2.VideoWriter_fourcc('T','H','E','O'):这个选项是Ogg Vorbis。文件扩展名应为.ogv。
    cv2.VideoWriter_fourcc('F','L','V','1'):此选项为Flash视频。文件扩展名应为.flv。
    :param rtsp_url: 视频流地址
    :return:
    """
    cap = cv2.VideoCapture(rtsp_url)
    # 获取帧率
    fps = cap.get(cv2.CAP_PROP_FPS)
    # 限制视频存储的画面大小
    size = (750, 420)
    # 设置视频的编码格式
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    # 定义视频保存的输出属性
    out = cv2.VideoWriter('rt_out.avi', fourcc, fps, size)
    try:
        while cap.isOpened():
            ret, frame = cap.read()
            if not ret:
                continue
            out.write(frame)
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
    except Exception as e:
        print(e)
    finally:
        try:
            cv2.destroyWindow("frame")
            cap.release()
        except Exception as e:
            print(e)


if __name__ == '__main__':
    save_video("rtsp://xxxxx/h264/ch1/main/av_stream")

你可能感兴趣的:(工具教程,opencv)