最近小编在为大家录制视频展示文件的时候,需要花钱来购买,才能去除水印,而且额外的软件增大了电脑的负担。所以小编就想着自己打造一款录屏程序。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

 

对于录屏的程序,小编想实现的目的就是实现屏幕的录制,并记录自己的声音。而我们的程序也是基于此进行实现的,程序的框架如下图所示:

主程序启动后,我们利用两个线程来分别实现音频的录制和视频的录制,再将两个线程录制的音频和视频通过主程序进行合成,最终形成我们的录屏结果。

这里需要注意的是,我们的音频和视频的录制必须是同时启动和结束。下面我们一起来看看程序吧~~

01.音频的录制

首先是音频的录制,我们利用pyaudio库来启用我们的麦克风,然后收录我们的声音,并将录音保存到本地的mp3文件当中,程序如下图所示:

上述的程序中,我们首先创建一个音频的输入流对象stream,不断的获取音频数据,然后我们利用wave库,不断的读取输入流中的音频数据,写入到本地的音频当中。这里的self.recording是一个关键的参数,其控制着音频是否持续的记录。

02.视频的记录

接下来是对于视频的记录,对于视频的记录,我们采用的是不断的获取当前屏幕的图片截屏,然后利用opencv写入到视频文件当中去。程序如下图所示:

上述的程序中,我们通过不断的捕获当前屏幕的内容,然后通过opencv的视频写入对象,将图片不断的写入到视频文件当中去。注意这里用到了与音频录制相同的self.recording参数,来控制视频是否继续进行记录。

上述的程序中,我们开启了两个线程来分别录制视频和音频,同时让主程序保持循环等待,当我们输入“quit”时,让两个子线程同时结束。

注意,这里会有几毫秒的时间差,但是不影响,然后我们把两个子线程采集到的音频和视频进行合并,便完成了我们的录频程序。

再见,付费录屏软件!我用70行Python代码打造免费版!的更多相关文章

  1. Ubuntu下三个实用的录屏软件

    Ubuntu下三个实用的录屏软件 Kazam 优点: 易安装 可选择区域录制,也可全屏录制 有录屏和截图功能 安装: sudo apt-get install kazam 展示: Simple Scr ...

  2. Linux录屏软件

    如何查找录屏软件 apt-cache search screen record libutempter-dev - privileged helper for utmp/wtmp updates (d ...

  3. ios手机录屏软件哪个好

    苹果手机中的airplay镜像,是苹果手机系统的一大特色,可以轻松把手机屏幕投射电脑,这个功能使苹果手机相较安卓手机投屏会更加轻松,那么如何实现苹果手机投射电脑屏幕?下面小编便来分享ios手机录屏软件 ...

  4. linux-推荐两款好用的录屏软件

    前言 测试程序过程中需要看运行效果如何,可以使用录屏软件进行回放. 软件安装 添加源:sudo add-apt-repository ppa:maarten-baert/simplescreenrec ...

  5. Linux下的录屏软件Kazam

    发现Ubuntu下一个很好用的录屏软件kazam,Ubuntu官方源中就有. 1.安装 $ sudo apt-get install kazam 2.使用 使用很简单,除了截图,还可以录制屏幕视频.既 ...

  6. 超便携式截屏录屏软件FastStone Capture

    超便携式截屏录屏软件FastStone Capture

  7. 免费录屏软件之OBS Studio

    好久没有再博客活动啦,今天给大家推荐一下录屏软件吧!首先我个人最喜欢的OBS Studio就说说它吧 1.免费.开源.功能强大.易上手 ​ ​ ​ 下面是下载地址: 官网下载 : https://ob ...

  8. EV录屏 --- 免费无水印,集视频录制与直播功能于一身的桌面录屏软件, 支持录屏涂鸦、实时按键显示、视频体积压缩等实用功能

    https://www.ieway.cn/index.html 免费无水印,集视频录制与直播功能于一身的桌面录屏软件,支持录屏涂鸦.实时按键显示.视频体积压缩等实用功能 EVCapture 3.9.7 ...

  9. 开源录屏软件Capture推荐

    参考链接:有哪些值得推荐的电脑录屏软件与手机录屏软件? - 霸都丶傲天的回答 - 知乎 下载地址(9.0支持中文)

随机推荐

  1. scrapy(三):post请求

    -- coding: utf-8 -- ''' QiuBai.py 爬虫文件 ''' -- coding: utf-8 -- import scrapy class PostSpider(scrapy ...

  2. 机器学习实战基础(九):sklearn中的数据预处理和特征工程(二) 数据预处理 Preprocessing & Impute 之 数据无量纲化

    1 数据无量纲化 在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据“无量纲化”.譬如梯度和矩阵为核心的算法中,譬如逻辑回 ...

  3. Windows故障转移群集(WSFC)的备份和恢复

    使用wbadmin进行备份和恢复将C盘数据备份到E盘查看备份的版本以及包含的items模拟群集角色被误删除进行恢复操作检查恢复的效果 WSFC群集的备份和恢复功能是使用Windows Server B ...

  4. 史上最全SpringBoot整合Mybatis案例

    摘要:如果小编说,SpringBoot是目前为止最好的框架,应该没有人会反驳吧?它的出现使得我们很容易就能搭建一个新应用.那么,SpringBoot与其他第三方框架的整合必定是我们需要关注的重点. 开 ...

  5. RabbitMQ 入门之基础概念

    什么是消息队列(MQ) 消息是在不同应用间传递的数据.这里的消息可以非常简单,比如只包含字符串,也可以非常复杂,包含多个嵌套的对象.消息队列(Message Queue)简单来说就是一种应用程序间的通 ...

  6. 从css属性和布局来说明一下,行类元素和行类块元素和块元素的区别

    //布局 inline: 如果水平宽度足够大,那么将在一行显示 inline-block: 如果水平宽度足够大,那么将在一行显示 block: 独占一行 //css属性 inline: 无法设置高度, ...

  7. 将数组内的元素循环左移P个位置

    问题可以转化为将数组内前 n 个元素进行逆置,再将后(n-p)个元素逆置,最后将整个数组逆置 void Reverse(int A[],int pos1,int pos2){ // 将A[pos1]与 ...

  8. DJANGO-天天生鲜项目从0到1-001-环境框架搭建

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  9. springboot(12)Redis作为SpringBoot项目数据缓存

    简介: 在项目中设计数据访问的时候往往都是采用直接访问数据库,采用数据库连接池来实现,但是如果我们的项目访问量过大或者访问过于频繁,将会对我们的数据库带来很大的压力.为了解决这个问题从而redis数据 ...

  10. 21天学通C++(C++程序的组成部分)

    C++程序被组织成类,而类由成员函数和成员变量组成. 本章学习: 1)C++程序的组成部分. 2)各部分如何协同工作. 3)函数及其用途. 4)基本输入输出操作. C++程序划分为两个部分,以#大头的 ...