python使用opencv简单处理视频

详情

业务需求,搞了个脚本剪辑视频,配合txt文本,可一键快速剪辑多个镜头。

使用

调用函数,第一个参数视频路径,第二个视频开始截取位置,第三个参数,视频结束位置。单位皆为 s/秒。

代码

import cv2,time
print('opencv版本 - '+cv2.__version__)
def video_edit(path,start,end):
    """
    path:视频路径
    start:开始时间 s/秒
    end:结束时间 s/秒
    
    返回:剪辑后视频,文件名:原文件名_时间戳
    
    """
    #读取视频
    video_capture = cv2.VideoCapture(path)
    
    video_size = (int(video_capture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    total_frames = int(video_capture.get(cv2.CAP_PROP_FRAME_COUNT))
    video_fps = int(video_capture.get(5))
    
    print("视频像素 - Video size:{}".format(video_size))
    print("视频总帧数 - Total_frame:{}".format(total_frames))
    print("视频帧率 - Video_fps:{}".format(video_fps))
    print("视频时长 - Video_long:{} s".format(total_frames/video_fps))
    
    start_fps=start*video_fps
    end_fps=end*video_fps
    
    if(end_fps>total_frames):
        end_fps=total_frames
    path=path.replace('.', '_'+str(int(time.time()))+'.')
    videoWriter =cv2.VideoWriter(path,cv2.VideoWriter_fourcc('M','P','4','V'),video_fps,video_size)
    i = 0
    while True:
        success,frame = video_capture.read()
        if success:
            i += 1
            if(i>=start_fps and i <= end_fps):
                videoWriter.write(frame)
        else:
            print('剪辑完成!')   
            break
    

未作兼容以及容错措施,属于小脚本,谨记!

你可能感兴趣的:(python,python,opencv)