复调录屏软件
版本号:0.1.1 Alpha
发行时间:2021年02月11日
发布方:NIRE工作室
开发者:Nire_Yeyu
一、软件描述
- 目标群体:软件开发工程师、测试工程师、工程实施人员、软件购置方
- 软件功能:依照设定自动覆盖过期录屏文件
- 使用场景:相关人群在使用或测试软件过程中,可能发现软件异常,但不易描述或记录具体问题现象和自己的操作过程。从而导致研发人员在Bug修复过程中,需要耗费大量时间与精力在问题的复现上。通过复调录屏软件即第三方软件(以下称:本软件),用户可以24小时不间断录屏,一旦超过预设时间,将自动覆盖过期视频,从而保证占用较小磁盘空间。以此减少研发、测试、工程等互相推卸责任的现象,降低软件维护成本,提高工作效率。
- 关键字: 录屏、覆盖过期文件、工作效率
二、程序流程
2.1 参数设置
- 本软件有两个文件:配置文件 与 代码文件
- 单个文件录制时间、保留文件个数由用户在配置文件中自行设置,而视频的FPS由本软件自动设置
2.2 录制的视频播放速度过快问题
- 不少尝试用Python录屏的开发者都会遇到这个问题,假设录制时长为10秒,录制结束后,用播放器不到5秒就放完了,而且播放速度明显过快。
- 这种播放过快或过慢的现象,是由于FPS设置不恰当造成的。
- 本软件会在初始化过程中自动设置适合当前机器的FPS,并在录制一段时间后进行自动校正,从而保证录屏效果。
2.3 结束条件
- 软件在运行时,会开启键盘监听事件,一旦检测到用户按下ESC,软件会停止运行。建议用户用ESC结束程序,不要直接点击右上角的×关闭,否则录制的视屏没有进行释放操作,会出现异常现象。
三、配置文件
config.ini
[screen]
fps = 7.0
bk = 3
time = 10
四、源文件
VideoCut.py
# 复调录屏软件 : 持续迭代近期数据的录屏软件
# Copyright (c) 2021 NIRE工作室
# 在此免费授予任何获得软件和相关文件副本(“软件”)的开发者,无限制经营软件的权利
# 权利包括但不限于使用、复制、修改、合并、发布、分发、转授和/或出售软件副本
# 但软件使用者必须遵守以下条件:
# 上述版权声明和本许可声明应包含在软件的所有副本或重要部分中。
# 本软件是"按现样"提供,并无任何形式的保证,亦无任何形式的表达或暗示
# 包括但不局限于对可销售性、达到特定目的的适合性的保证。
# 不论是特殊、偶然或任何情况之下,NIRE工作室概不负任何责任。
"""
复调录屏软件通过Python3.7进行开发
使用复调录屏软件,您可以轻松地在各种平台上录制音频。
并且通过配置文件,设置保留视频的时长以及保留的视频个数
从而达到持续录屏,但节省空间,保留重要信息的目的
复调录屏软件的设计灵感来自:
日常测试软件过程中,需要记录操作过程及崩溃现象
如果长时间开启市面上现有的录屏软件会导致视频文件过大
并且在长视频中不易提取有效信息
关键字:
持续录屏、节省空间
"""
__author__ = "Nire_Yeyu"
__mail__ = "Nire_Yeyu@163.com"
__version__ = "0.1.1 Alpha"
__date__ = "2021.02.10"
# coding: utf-8
import os
import time
import threading
import configparser as cp
from datetime import datetime
# 尝试添加第三方库
try:
import cv2
import numpy as np
from PIL import ImageGrab
from pynput import keyboard
except ImportError:
print("初始化失败:缺少依赖库")
raise
class FileMgt(object):
"""
文件管理类:
通过此类实现对配置文件的读写,以及相关文件、文件夹的管控
"""
def __init__(self):
self.current = os.getcwd() # 程序所在路径
self.screen_record_path = os.path.join(self.current, "video") # 存放视频文件的文件夹路径
self.config_path = ".\\config.ini" # 配置文件路径
self.video_path = "" # 视频文件路径
self.fps = 7 # 帧率
self.n_screen_record = 3 # 保留文件数量
self.video_time = 300 # 单个文件录制时长(单位:秒)
self.create_folder() # 创建文件夹
def create_folder(self):
"""创建文件夹"""
try:
if not os.path.exists(self.screen_record_path):
os.mkdir(self.screen_record_path)
except:
print("错误:文件夹创建异常")
return False
def make_file_path(self):
"""依据当前时间获取欲录制视频路径"""
now = str(datetime.now())[:19]