极简版录屏小工具-原创

查看 80|回复 13
作者:william0712   
录屏工具保存了一大堆了,弯弯绕绕的功能太多了,眼花撩乱,我只想要一个“开录-保存”就完了,不想看到太多乱七八糟的功能,于是它诞生了“屏幕录制小工具”,python写的,没有过多的功能,只有一个,就是录屏,完了保存MP4,没了。由于真的太小了,请允许我屏取运行截图截大些吧,以下是运行后,在桌面上显示的大小。有改进建议的欢迎提出,如果觉得它对您有那么一丁点用,请给个免费评分,谢了。


QQ截图20240923093207.jpg (13.46 KB, 下载次数: 0)
下载附件
2024-9-23 10:45 上传

0925停更日志:
1.有部份人反馈,发现特殊情况下会引发“NoneType'  object has no attribute 'notify';
2.由于当时设计框架时,想着先录再自主保存,想着也没多大,所以也没创建临时文件的形式去保存帧,把它们全部存在内存当中,录完再存,结果昨天做内存监控时发现,这是个吃内存大户,录得越久就越大;
3.加上不小心把代码全目录都删了,想重新改一下都没法弄了,算了停更吧,哪天要用时,再重头改一个合适的。
4.当然大内存用户用起来还是很快的,毕竟用也还能用,问题不大,感谢各位亲的点赞支持,这里谢过了,撤退了。
0924更新:
1.加入暂停机制;
2.点击开始录制之后自动隐藏;
3.加入快捷键CTRL+2暂停,CTRL+3停止录制并保存;
4.停止录制之后自动恢复主窗口显示。


QQ截图20240923103619.jpg (37.91 KB, 下载次数: 0)
下载附件
2024-9-23 10:36 上传

(还是那句,火绒查毒无问题,python打包的,360安全卫士可能会报毒,就算代码里只有一条print "Hello world!",它也报毒,无语了,自行选择,360真的是越来越垃圾了),
由于涉及了FFMPEG和好几个库,打包出来就60多M了,代码只有95行,下载链接放123盘了,支持浏览器直下。
-----------------------------------------------------------------------------------------------------------------------------------------------------
下载链接:https://www.123684.com/s/EG5A-fg0AH
PY代码如下:
[Python] 纯文本查看 复制代码import mss
import mss.tools
import cv2
import numpy as np
import tkinter as tk
from tkinter import messagebox, filedialog
import os
# 获取屏幕大小
with mss.mss() as sct:
    screen_size = (sct.monitors[1]['width'], sct.monitors[1]['height'])
# 定义编码器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
recording = False
frames = []  # 用于存储录制的帧
output_writer = None
def start_recording():
    global recording, start_button_text
    if not recording:
        recording = True
        start_button_text.set("录制中")
        record_screen()
def stop_recording():
    global recording, frames, output_writer, start_button_text
    if recording:
        recording = False
        start_button_text.set("开始录制")
        try:
            # 让用户选择保存位置和文件名
            output_file = filedialog.asksaveasfilename(defaultextension=".mp4", filetypes=[("MP4 files", "*.mp4")])
            if not output_file:
                return
            if os.path.exists(output_file):
                choice = messagebox.askyesnocancel(
                    "文件已存在",
                    f"文件 {output_file} 已存在,是否覆盖?"
                )
                if choice is None:
                    return
                elif choice == False:
                    return
            output_writer = cv2.VideoWriter(output_file, fourcc, 20.0, screen_size)
            # 将所有帧写入视频文件
            for frame in frames:
                output_writer.write(frame)
            output_writer.release()
            frames.clear()
            messagebox.showinfo("停止", "已停止录制并保存文件。")
        except Exception as e:
            messagebox.showerror("错误", str(e))
        finally:
            output_writer = None
def record_screen():
    if recording:
        with mss.mss() as sct:
            monitor = {'top': 0, 'left': 0, 'width': screen_size[0], 'height': screen_size[1]}
            img = sct.grab(monitor)
            frame = np.array(img)
            # 确保颜色空间正确
            frame = cv2.cvtColor(frame, cv2.COLOR_BGRA2BGR)
            frames.append(frame)  # 存储每一帧
        root.after(15, record_screen)  # 根据需要调整刷新率
# 创建GUI
root = tk.Tk()
root.title("屏幕录制小工具 by.KOG丛林")
frame = tk.Frame(root)
frame.pack()
# 使用 StringVar 来动态更新按钮上的文本
start_button_text = tk.StringVar(value="开始录制  ")
# 开始录制按钮
start_button = tk.Button(frame, textvariable=start_button_text, command=start_recording)
start_button.pack(side=tk.LEFT)
# 停止录制按钮
stop_button = tk.Button(frame, text="  停止录制", command=stop_recording)
stop_button.pack(side=tk.LEFT)
root.mainloop()

代码, 小工具

LUYAJUN   

录屏软件的普遍缺点就是无法在开始处做到同步,先先点击录屏点击播放时,录屏还没有开始,先点录屏时,视频还未播放,所以录完后的mp4仍然需要掐头去尾才能满意
lazhou   

KO2点了开始录制后,软件没有反应,昨天的KO是好的,请大佬检查修复一下!
william0712
OP
  


古覚 发表于 2024-9-25 11:41
收藏试用,python打包成exe都好大,有方法精简的,忘了

已经在打包时用UPX压缩过了,60多M变成40多M了
william0712
OP
  


wwwxxxddd999 发表于 2024-10-4 08:47
期待楼主更新,快捷键的加入和录屏时隐藏,期待这个软件越来越完善

现在这个就有了
lazhou   

好用,就是录屏时自身没有彻底隐藏,从资源管理器切换到桌面时录到录屏软件自身界面,希望大佬能做进一步优化,录屏时完全隐藏,用快捷键停止录屏,并显示录屏界面更好,当然一般用已很方便了,谢谢大佬分享!
dqjyj   

谢谢分享
yt1010306   

收藏试用,66M的不极简了,编译的时候能压缩大小吗?
cux666   

支持原创,感谢分享!
jtui6999   

谢谢分享。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部