录屏或者录像,提交 Bug 啊
f_dir = os.sep.join[root, files]
图怎么没了,上次看还有
姜饼有没有教程?
图片没显示?
围观大佬日常
这还用查资料
深圳也卷起来了吗
真实用户 100 万不可能同时在线吧,还是按设计的同时在线的最大用户数测试
后面会考虑开源吗?
希望楼上的能分享下建立,看看差距好学习下
送外卖?
钟点工?
贴膜?
开发、设计类还能接私活、咨询
测试真不知道,我也愁
感谢楼主分享,小改了一下,但是感觉录屏的时长像是设置帧数 * 时长,类似于慢放,FPS 需要设置吗?
import os, time
from datetime import datetime
from PIL import ImageGrab, ImageDraw
import numpy as numpy
import cv2
import pygetwindow
import pyautogui
FPS = 5
MAX_FILES_COUNT = 10
PER_FILE_SECONDS = 5
VIDEO_FILE_PATH = r'D:\循环录屏'
def record_mouse(img, mouse_x, mouse_y):
"""
在图片上绘制鼠标位置
:param img: 需要绘制的图片
:param mouse_x: 鼠标在图片上的相对x坐标
:param mouse_y: 鼠标在图片上的相对y坐标
:return:
"""
# 1.首先获取图片大小
w, h = img.size
# 2.加载图像
draw = ImageDraw.Draw(img)
# 判断鼠标位置,如果当时鼠标坐标在图片范围之内,则绘制鼠标
if 0 < mouse_x < w and 0 < mouse_y < h:
# 绘制一个圆点,以红色填充
draw.ellipse((mouse_x-2, mouse_y-2, mouse_x+2, mouse_y+2), fill=250)
# 返回添加了鼠标的截图图像
return img
def get_region_by_title(window_title):
"""
window_title:特定窗口名称
能找到窗口返回窗口对应区域边界坐标
找不到窗口返回整个桌面边界坐标
"""
if window_title:
# 1.首先根据窗口名称获取到对应的窗口
window_titles = pygetwindow.getWindowsWithTitle(window_title)
if window_titles:
window = pygetwindow.getWindowsWithTitle(window_title)[0]
# 2.激活并将对应的窗口显示到最顶层
window.restore()
window.activate()
# left, top, width, height = window.left, window.top, window.width, window.height # 窗口区域坐标
return window.left, window.top, window.width, window.height
# left, top, width, height = 1,1,*pyautogui.size() #桌面区域坐标
return 1,1,*pyautogui.size()
def recode(window_title = ''):
"""
录制指定窗口的视频
:param window_title: 窗口名称
:return:
"""
left, top, width, height = get_region_by_title('')
# 3.根据当前时间生成录像文件的名字
file_name = datetime.now().strftime('%Y-%m-%d %H-%M-%S')
print(datetime.now().strftime('%Y-%m-%d %H-%M-%S'))
# 5.设置VideoWriter_fourcc录制类型
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# 6.设置文件名,大小,帧率等, VIDEO_FILE_PATH是我设置的一个全局参数,是录像的保存目录,如VIDEO_FILE_PATH = 'E:\\record_files'
# FPS我也参数化了,FPS=15,这个帧率可能会影响录像的播放速度,可以根据自己的情况自行调整
video = cv2.VideoWriter(f'{VIDEO_FILE_PATH}\\{file_name}.avi', fourcc, FPS, (width, height))
# 7.记录开始录制视频的时间
start_time = time.time()
# 8.当录制时间不足1分钟时,循环写入到录像文件中
while time.time() - start_time < PER_FILE_SECONDS:
# 这里我每次写入都重新获取了窗口的顶点位置和大小,这样的用处是在你拖动对应的窗口后,录像的区域会跟随你的拖动重新选定,不会傻傻的还在录原来的位置
left, top, width, height = get_region_by_title(window_title)
# # 根据窗口区域截取对应的图像
# capture_image = ImageGrab.grab((left, top, left + width, top + height))
# 获取鼠标坐标,利用到了pyautogui库
mouse_x, mouse_y = pyautogui.position()
# 将截图的图像传入record_mouse方法,获得绘制了鼠标位置之后的截图
capture_image = record_mouse(ImageGrab.grab((left, top, left+width, top+height)), mouse_x - left, mouse_y-top)
# 生成图像帧
frame = cv2.cvtColor(numpy.array(capture_image), cv2.COLOR_RGB2BGR)
# 将图像帧写入到文件中
video.write(frame)
video.release()
def del_files():
"""
判断文件数量是否超过设定值,如果超过,则删除一定数量的文件
:return:
"""
# 根据目录获取文件列表
files = os.listdir(VIDEO_FILE_PATH)
# 判断文件数量,如果超过了设定的最大值MAX_FILES_COUNT(自行定义),则删除最前面的几个文件
if len(files) > MAX_FILES_COUNT:
for i in files[:len(files)-MAX_FILES_COUNT]:
os.remove(f'{VIDEO_FILE_PATH}\\{i}')
def main():
while True:
del_files()
recode('锚点降临')
main()
需要翻墙?
我也想知道瓶颈是多少
如果被裁之后直接送外卖,是不是算无缝衔接
钱少是多少呢?
等价类、边界值、正交
看来我拖了薪资的后腿。。。。
提示
AI 机器人开小差了,阁下可以点击刷新,或者微信搜索「Kotaro 的创意」反馈以及获得更佳体验
是他把人裁了还是跑路了
微信这么坑
为什么不做安保,少走 3 年弯路
第 2 个问题不应该是必测的边界值吗?
项目天天上线,等出个大问题就知道疼了