Python录屏软件的设计(第一次)
我重新用PyQt5设计了新的ui界面(所以记得下载对应的库啊!源代码如下,后面有时间我慢慢完善,争取做成一个完整的软件。1. 录制的新视频会取代旧视频,修改一下,并统一命名。2. 添加划定区域按钮,使其可以划定区域进行视频录制。以及OpenAI的gpt3.5提供了基础的代码。3. 考虑如何录制音频进来。
·
首先感谢如何用Python进行屏幕录制?_python 录屏-CSDN博客
以及OpenAI的gpt3.5提供了基础的代码
我重新用PyQt5设计了新的ui界面(所以记得下载对应的库啊!)
源代码如下,后面有时间我慢慢完善,争取做成一个完整的软件
短期目标:
1. 录制的新视频会取代旧视频,修改一下,并统一命名
2. 添加划定区域按钮,使其可以划定区域进行视频录制
3. 考虑如何录制音频进来
import numpy as np
from PIL import ImageGrab
import cv2
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox
from threading import Thread
# 设置录制参数
SCREEN_SIZE = (1920, 1080)
FILENAME = 'recorded_video.avi'
FPS = 30.0
# 创建类方法
class VideoRecorder:
def __init__(self):
# 初始参数,分别是录制开关参数、输出文件参数
self.recording = False
self.out = None
self.widget = UI_Cv()
self.init_ui()
def init_ui(self):
# 初始化信号与槽
self.widget.start_button.clicked.connect(self.start_recording)
self.widget.stop_button.clicked.connect(self.stop_recording)
# 开始录制按钮
def start_recording(self):
self.out = cv2.VideoWriter(FILENAME, cv2.VideoWriter_fourcc(*"XVID"), FPS, SCREEN_SIZE)
self.recording = True
self.record_thread = Thread(target=self._record)
self.record_thread.start()
def _record(self):
while self.recording:
img = ImageGrab.grab(bbox=(0, 0, 1920, 1080))
print('Recording...')
frame = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)
self.out.write(frame)
# 结束录制按钮
def stop_recording(self):
self.recording = False
self.record_thread.join()
self.out.release()
cv2.destroyAllWindows()
QMessageBox.information(self.widget, "Recording Finished", "Video recording has finished.")
# 创建UI界面
class UI_Cv(QWidget):
def __init__(self):
super(UI_Cv, self).__init__()
self.start_button = QPushButton('开始录制', self)
self.stop_button = QPushButton('结束录制', self)
self.init_ui()
def init_ui(self):
self.start_button.setFixedHeight(24)
self.start_button.setFixedWidth(100)
self.start_button.move(50, 50)
self.stop_button.setFixedHeight(24)
self.stop_button.setFixedWidth(100)
self.stop_button.move(50, 100)
if __name__ == '__main__':
app = QApplication(sys.argv)
recorder = VideoRecorder()
recorder.widget.show()
sys.exit(app.exec_())
更多推荐
已为社区贡献1条内容
所有评论(0)