LiUEEEEE 2022-05-21 16:34 采纳率: 0%
浏览 62
已结题

编程实现从一个视频文件(A4.mp4,总长度5min)中从第1:00min开始连续截取30s中视频,另存为A4V2.mp4。(任何语言都可)

编程实现从一个视频文件(A4.mp4,总长度5min)中从第1:00min开始连续截取30s中视频,另存为A4V2.mp4。

  • 写回答

3条回答 默认 最新

  • 歇歇 2022-05-28 00:58
    关注
    
    # 功能:对视频文件进行剪切。
    # 剪切指定长度的视频,选择要裁剪的视频,选择开始时间点和停止时间点即可。
    # 将处理后的视频保存为output.avi文件
    import cv2  # OpenCV
    import tkinter.filedialog  # Python文件对话框
    
    def samllVideoGif(_videoPath,_videoGifPath):
        # _videoPath = "C:\\Users\\sswc\\Desktop\\gai2\\public\\showPdf\\6f3db1f9-e247-4aa5-bca7-93bae62a0079.mp4"
        # _videoGifPath = "C:\\Users\\sswc\\Desktop\\gai2\\public\\showPdf\\6f3db1f9-e247-4aa5-bca7-93bae62a0079.avi"
        cap = cv2.VideoCapture(_videoPath)  # 打开视频文件
        frames = cap.get(cv2.CAP_PROP_FRAME_COUNT)  # 获得视频文件的帧数
        fps = cap.get(cv2.CAP_PROP_FPS)  # 获得视频文件的帧率
        width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)  # 获得视频文件的帧宽
        height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)  # 获得视频文件的帧高
    
        # 创建保存视频文件类对象
        fourcc = cv2.VideoWriter_fourcc(*'XVID')
        out = cv2.VideoWriter(_videoGifPath, fourcc, fps, (int(width), int(height)))
    
        # 计算视频长度/s
        video_length = frames / fps
        # print('start and stop must < %.1f' % video_length)  # 提示用户输入变量的范围
        # start = float(input('Input an start time/s:'))
        # stop = float(input('Input an stop time/s:'))
        # print('start and stop must < %.1f' % video_length)  # 提示用户输入变量的范围
        start = 0
        stop = 10
        # 设置帧读取的开始位置
        cap.set(cv2.CAP_PROP_POS_FRAMES, start * fps)
        pos = cap.get(cv2.CAP_PROP_POS_FRAMES)  # 获得帧位置
        while (pos <= stop * fps):
            ret, frame = cap.read()  # 捕获一帧图像
            out.write(frame)  # 保存帧
            pos = cap.get(cv2.CAP_PROP_POS_FRAMES)
    
        cap.release()
        out.release()
    
    评论

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 创建了问题 5月21日