当前位置:   article > 正文

python录屏工具下载_如何用Python做一个免费的录屏软件?

用python 录屏很难录到30帧

如果你不想花“大价钱”购买一套录屏软件,又不想忍受低画质加水印的免费版,那么这篇文章可以帮助你解决这一难题。

故事发生在几天前,一个阳光明媚的午后。本想着录一条视频,结果发现电脑里并没有一个合适的录屏软件。以我多年使用百度的经验,这种小工具,网上估计一搜一大把。

果然还是没有让我失望,资源多到我不想一一浏览。直接点开了第一篇内容,下载,安装,一气呵成。

但是真正使用的时候,套路来了。

2分钟?还要加水印?想要用的顺心就得买个VIP?以我个人对此类软件的认知,如果在5块钱以内,我就勉为其难支持一下正版。但是现在这样,心有余而力不足。

你没有看错,198。是不是疯了?作为一个不服输的前少先队员,我决定换一个软件试试看。之后又下载了3款,几乎都是一样的售价,一样的套路,面对电脑上鲜艳的198,我泡上一杯枸杞茶,陷入了沉思。

不禁感叹,有钱真好。但是为了完成如此一件录屏的小事情,除了花钱就别无他法了么?

那必然不是的!今天我们就要用Python帮你省下来198,当然如果你愿意,可以把这个198...自己留下,反手给我一个赞就好啦~准备工作

你需要在电脑上安装了Python3的环境,以及有一个用起来顺手的IDE。码起来!

在Python中,有一个神奇的第三方库,Pillow。他经常用于图像处理相关的领域。比如模糊,滤镜,插入文本等等相关的工作,均可以用Pillow库进行操作。python3之成像库pillow - Py.qi - 博客园​www.cnblogs.com

对于视频而言,其实就是一幅幅图片所组成的动态效果。比如我们常说的30帧,也就是一秒钟有30幅图片连成的“动图”。

还有一个主角就是opencv,这个第三方库可以算得上是Python的一大支柱。无论是人工智能卷积神经网络相关,或者是日常图片处理,opencv都异常强大。可以说90%的人只是学到了他的皮毛,为啥这么说?可以打开opencv的官网,看着林林总总几百页的教程,估计会被劝退的。opencv官网​docs.opencv.org

本次我们就将基于这两个“神仙”第三方库,完成录屏工具的开发。基本思路如下每次由pillow获取一帧显示器画面

opencv将获取到的画面写入至结果中

opencv显示该画面(与获取同步进行,所以感觉不出异样)

录制完成,保存结果

看起来好复杂啊,是不是一定很难?先看一下结果。结果展示v2-7a404408cd79305a6a03f806eec14711.jpgPython制作录屏软件https://www.zhihu.com/video/1143927007808208896

import numpy as np

import cv2

from PIL import ImageGrab

import pyautogui as pyag

fourcc=cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')

out=cv2.VideoWriter('output.avi',fourcc,30,pyag.size()) # 参数分别为 输出文件名,解码方式,帧数,录像范围--当前为全屏模式

while(True):

img=ImageGrab.grab()

img_np=np.array(img)

frame=cv2.cvtColor(img_np,cv2.COLOR_BGR2RGB) # ImageGrab获取的颜色为BGR排序,需转换为RGB

out.write(frame)

cv2.imshow('screen',frame)

if cv2.waitKey(1)==27: # 点击ESC退出

break

out.release()

cv2.destroyAllWindows()

至于XVID是什么,如果不是专业的音视频制作人员,可以不用非常关注,想进一步了解可以浏览如下链接。DivX/XviD_百度百科​baike.baidu.comv2-a64774de231eee7f3449f6649c9cdaef_180x120.jpg

可是接下来问题又出现了,如果此时我只是想区域录制呢?只是需要某一指定范围,如何能通过Python来完成呢?

这里我们不做太过复杂的功能了(因为我懒。。),动态选取增加listener之类并不适合绝大多新手掌握。我们用一个更为讨巧的方法,根据鼠标位置获取其在屏幕上的(x,y)坐标。(请先将鼠标放在起点与终点,并执行下方代码,操作方法如下视频)

import win32gui

flags, hcursor, (x,y) = win32gui.GetCursorInfo()

print("x:",x," y:",y)v2-1201a65e86bd5423539612d9ba2b766d.jpgPython获取当前鼠标的位置https://www.zhihu.com/video/1143927348087803904

最终我们放上区域选择后的效果。v2-3d71ffd8d5d1c3b7abb926a3fbff328c.jpgPython录屏软件区域录制https://www.zhihu.com/video/1143927568003678208

想用Python做点有趣的事情?记得关注啦~靴靴

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号