录屏程序python

该博客介绍了一个使用Python编写的录屏程序,程序结合PyQt5、mss、cv2、moviepy和pyaudio库,实现了屏幕捕获、音频录制及视频合成功能。用户通过GUI界面设置录制参数,如分辨率、帧率和时长,程序在录制时会在界面上显示红色指示灯。录制完成后,自动将音视频合并并保存为视频文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个录屏程序,可以录制屏幕和声音,并将它们合并成一个视频文件。程序使用PyQt5库创建了一个GUI界面,用户可以选择录制分辨率、帧率和录制时长。程序使用mss库来捕获屏幕截图,使用cv2库将截图转换为视频帧,并使用moviepy库将音频和视频合并。程序还使用pyaudio库录制音频。录制过程中,程序会在GUI界面上显示一个红色的圆形指示灯,表示正在录制。用户可以通过点击“开始录制”按钮开始录制,点击“停止录制”按钮停止录制。录制完成后,程序会自动将音频和视频合并,并将最终的视频文件保存在当前目录下。

from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QComboBox, QPushButton, QSlider
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QWidget, QLabel, QMessageBox
from PyQt5.QtCore import Qt
import cv2
import mss
import numpy as np
import time
from datetime import datetime
import pyaudio
import wave
from moviepy.editor import VideoFileClip, AudioFileClip
from pydub import AudioSegment
import os
from moviepy.editor import *
from cv2 import VideoCapture, CAP_PROP_FPS, CAP_PROP_FRAME_COUNT, CAP_PROP_FRAME_WIDTH, CAP_PROP_FRAME_HEIGHT

class AudioRecorder:
    def __init__(self, filename):
        self.filename = f'recording_{datetime.now().strftime("%Y-%m-%d_%H-%M")}.wav'
        self.chunk = 2048
        self.format = pyaudio.paInt16
        self.channels = 1
        self.rate = 44100
        self.frames = []
        self.audio = pyaudio.PyAudio()
        self.input_device_index = self.audio.get_default_input_device_info()['index']
        self.stream = self.audio.open(format=self.format, channels=self.channels,
                                      rate=self.rate, input=True, input_device_index=self.input_device_index,
                                      frames_per_buffer=self.chunk)

    def start(self):
        self.frames = []
        self.stream.start_stream()

        self.frames.append(self.stream.read(self.chunk))

    def flush(self):
        if self.stream is not None:
            self.stream.stop_stream()
            self.stream.close()
        self.frames = []

    def stop(self):
        if self.stream.is_active():
            self.stream.stop_stream()
            self.stream.close()
        self.audio.terminate()

        with wave.open(self.filename, 'wb') as waveFile:
            waveFile.setnchannels(self.channels)
      
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值