You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的mss库录屏:如何将捕获的帧保存为视频文件?

用mss捕获屏幕并保存为视频文件的解决方案

首先纠正下:.wav是音频格式,你需要的应该是保存为视频文件(比如.mp4、.avi)。下面是修改后的代码,集成了视频保存功能,同时优化了帧转换效率(跳过PIL,直接用mss转numpy数组,速度更快):

from mss import mss
import cv2
import numpy as np
from time import time

# 捕获区域设置
mon = {'top': 100, 'left': 200, 'width': 1600, 'height': 1024}
frame_width = mon['width']
frame_height = mon['height']

# 视频保存参数配置
fps = 30  # 自定义帧率
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # Windows下常用编码格式
out = cv2.VideoWriter('screen_record.avi', fourcc, fps, (frame_width, frame_height))

sct = mss()

try:
    while True:
        begin_time = time()
        # 捕获屏幕帧,直接转成numpy数组(跳过PIL,提升速度)
        sct_img = sct.grab(mon)
        frame = np.array(sct_img)
        # mss捕获的是RGBA格式,转成OpenCV需要的BGR格式
        frame_bgr = cv2.cvtColor(frame, cv2.COLOR_RGBA2BGR)
        
        # 写入视频文件
        out.write(frame_bgr)
        
        # 显示预览窗口
        cv2.imshow('Screen Capture', frame_bgr)
        print(f'当前帧耗时:{time()-begin_time:.4f}秒')
        
        # 按q退出
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
finally:
    # 释放资源
    out.release()
    cv2.destroyAllWindows()

关键说明:

  • 视频编码格式:Windows环境下推荐用XVID编码生成.avi文件;如果要生成.mp4,可以尝试mp4v编码(cv2.VideoWriter_fourcc(*'mp4v')),保存为screen_record.mp4。
  • 帧转换优化:直接将mss捕获的帧转成numpy数组,省去PIL的Image.frombytes步骤,进一步提升捕获速度,贴合你用mss追求高效的需求。
  • 资源释放:用try...finally确保即使异常退出,视频文件和窗口资源也能正常释放,避免生成损坏的视频文件。
  • 帧率设置:fps可根据需求调整,30是常规视频帧率,也能根据实际捕获速度动态修改。

如果遇到视频无法打开的问题,检查:

  • 编码格式是否适配你的系统
  • 视频文件的分辨率是否和捕获区域的宽高一致
  • 确保退出时正常执行了out.release()

内容的提问来源于stack exchange,提问作者Zale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:15:29