无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 17461|回复: 110
打印 上一主题 下一主题

[原创] 我实现的一个简易录屏程序

    [复制链接]
跳转到指定楼层
#
发表于 2021-5-23 04:44:38 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 ShareBit 于 2021-12-9 02:32 编辑

软件下载地址为: http://www.qqsdk.com/screensaver/screensaver.rar


配置文件screensaver.ini说明:

[app]
startuphidemainwin         = "1" //为1则开始运行后不显示主界面,为0则会显示主界面
startrecordhotkey            = "CTRL+ALT+NUMPAD0" //自定义的开始录屏热键
stoprecordhotkey            = "CTRL+ALT+NUMPAD9" //自定义的停止录屏热键
capturehotkey                 = "CTRL+ALT+NUMPAD5" //自定义的开始截图热键

[screen]
enable                             = "1"  //为0不会录制屏幕(如果audio下面的enable为1,则这时只会生成wav纯声音文件),为1会录制屏幕

forcebitblt                        = "0"   //是否强制使用bitblt方式截屏
bitbltusecaptureblt           = "0"   //在使用bitblt方式截屏的时候设置1可以截屏半透明窗口,但可能导致鼠标图标闪烁;为0则无法截屏半透明窗口
mouseenable                    = "1"  //是否同时截屏鼠标形状,为1会截取,为0不会截取
bitsperpixel                       = "24"  //截屏位图位数,只有三种可能性:16,24,32,  一般设置为24即可, 16则截屏效果较差,但可能cpu占用和录像文件相对较小
framerate                         = "25"  //设置的截屏帧率,只能设置为整数值,最大能支持多少由系统配置决定,25按理已经足够了,设置得越大cpu占用越高,录像文件也会相应大一些
rect_left                            = "0"  //要录制的屏幕的最左边的坐标
rect_top                            = "0" //要录制的屏幕的最上边的坐标
rect_width                         = "-1" //要录制的屏幕的宽度
rect_height                        = "-1" //要录制的屏幕的高度

[encoder]                                       
encoder                        = "0" //使用的编码算法,为0代表使用x264编码
disablegpu                    = "1"   //为0代表如果可能的话,使用GPU硬编码,为1代表禁用GPU硬编码

[x264]
lossless                          = "0" //为0是普通的h264算法,也就是有损编码算法;为1是无损编码的h264算法,会生成较大录像文件,并且下面参数就无效了
qp_min                        = "5" //对应x264代码里面的i_qp_min,也就是允许的最小量化值
qp_max                        = "30"  //对应x264代码里面的i_qp_max,也就是允许的最大量化值
abrbitrate                     = "2048" //每秒大约多少kbps的码流,越小越不清晰,2048就代表每秒大约2048kbps的码流,也就是大约每秒2048/8=256KB字节,一般范围在512至4096之间
gopsize                         = "50" //两个关键帧之间的帧数,一般设置为framerate或者framerate的两倍比较合适

lossless为1的情况下是无损编码的H264,生成的录像文件很大,下面的几个参数都是调整有损编码的图像质量和生成的文件大小的,无损下下面的参数都是无效的,无意义的。
qp_min, qp_max取值范围是1到51,越小视频越清晰,但录像文件就会大很多。两者相差越小则质量相差越小(也就是都是接近一样的清晰度)

rect_left rect_top rect_width rect_height 这几个设置要录制的区域,rect_width rect_height设置为-1则意味着这两个值按照屏幕全屏大小自己进行计算,
比如说屏幕大小本宽为1920,设置了rect_left = 200,而rect_width=-1,那么程序内部会处理为rect_width = 1920 - 200 = 1720

[audio]
enable                           = "1" //为0不录制声音,为1录制声音
microphone                   = "1" //为0不录制麦克风输入的声音,为1则录制麦克风输入的声音
speaker                          = "0" //为0不内录电脑播放的声音,为1则内录电脑播放的声音
channels                        = "2" //为1是采集一个声道,为2则是采集两个声道,目前只支持这两种情况
samplespersec               = "16000" //一般常用的是8000或者16000,是声音采样率
bitspersample                = "16" //一般常用的是8或者16,是一个采样点的比特位数

如果 microphone和speaker都设置为1,那么在录制电脑播放的声音的同时录制麦克风声音。

目前下面几个设置暂时不被支持:
forcebitblt encoder disablegpu

程序内置的"开始截屏"的热键是 CTRL + ALT + 数字小键盘上的0,表现在托盘菜单上就是 CTRL + ALT+ NUMPAD0
程序内置的"停止截屏"的热键是 CTRL + ALT + 数字小键盘上的9,表现在托盘菜单上就是 CTRL + ALT+ NUMPAD9
程序内置的"截图功能"的热键是 CTRL + ALT + 数字小键盘上的5,表现在托盘菜单上就是 CTRL + ALT+ NUMPAD5
这个配置文件里面的rect_left rect_top rect_width rect_height在程序开始运行起来后,只要没使用截屏功能修改区域设置,那么每一次录屏都会读取这个配置文件的值,
通过CTRL + ALT + 数字小键盘上的5调出截图功能后,可以选取录像区域,按"完成截图"按钮(黄色的勾),就能完成对录像区域的设置,只要后续没再做修改,
在程序没退出的情况下都会按照最后的设置进行区域抓屏录像。
同时编辑功能本身是独立的,按了勾之后,截图会保存到剪切板,可以粘贴到mspaint.exe等程序里面。可以在录像的时候调出这个功能进行截图涂鸦。
程序运行起来之后,会有一个托盘显示在任务栏最右边部分,为笑脸则热键注册成功,可以使用热键进行"截图功能" "开始截屏"和"停止截屏"的功能;
如果为哭脸,则用户无法使用热键,只能在主界面或者托盘图标鼠标右键之后的菜单上选择"截图功能" "开始录屏"和"停止录屏"功能
如果正在录屏,则托盘图标会是每秒钟间隔显示笑脸和哭脸,也就是说,如果你看到托盘图标在笑脸和哭脸之间切换,那么说明这时正在录屏
主界面上的右上角的"x",仅仅只是隐藏主界面,要退出软件,需要鼠标右键托盘图标之后,选择菜单"退出"
录屏文件保存在软件当前目录下,是标准的H264编码算法的avi文件格式,任意第三方播放器都可以正确播放。
支持的系统最低版本是windows xp,也包括windows pe系统。

热键的定义大致是这么几个构成:
CTRL(可选,对应CTRL键) + ALT(可选,对应ALT键) + SHIFT(可选,对应SHIFT键) + WIN(可选,对应WINDOWS图标键) + ABCDE...XYZ 0123456789 F1 F2 ...F12 NUMPAD0 NUMPAD1...NUMPAD9
比如说,你想定义开始录屏热键为ALT键+非数字键盘上的0,那么就是"ALT+0"
你想定义开始录屏热键为CTRL键+ALT键+F1键,那么就是"CTRL+ALT+F1"
你想定义开始录屏热键为CTRL键+数字小键盘上的数字5,那么就是"CTRL+NUMPAD5"
你想定义开始录屏热键为WINDOWS图标键+字母Y,那么就是"WIN+Y"
别的非常见的键也能定义,请参考微软件虚拟键的键名,比如"VK_HOME", "VK_LEFT", "VK_ESCAPE",我们内部支持所有的虚拟键,既可以写VK_开头,也可以省略VK_
比如"CTRL+ALT+F1"与"CTRL+ALT+VK_F1"是完全相同的。
成功的热键定义会显示到托盘菜单里面,没有写就是没成功。程序只在开始运行的时候设置热键,也就是中途修改配置文件之后,必须重新运行软件才会生效。
关于虚拟键键名,可以参考: https://docs.microsoft.com/en-us ... v/virtual-key-codes   里面的VK_xxx键都是支持的。
大体而言,一个热键由辅助键加上一个VK_xxx键组成,辅助键只有四种"CTRL" "ALT" "SHIFT" "WIN", 辅助键可以多个组合,也可以完全没有辅助键。虚拟键,也就是VK_xxx键最多只能有一个。

特别特别说明:如果热键用到了数字小键盘, 必须确保Num Lock键是开启的。

软件更新网址为: http://www.qqsdk.com/screensaver/

2021.12.08 14:30
ShareBit(QQ:82170290; QQGROUP:147553437, name is qqsdk)


评分

参与人数 4无忧币 +25 收起 理由
afen + 5
wlishihua + 5 很给力!
20090101 + 10 本人亲测,体验良好,给你加分。
plusv + 5 赞一个!

查看全部评分

110#
发表于 2023-8-18 11:54:26 来自手机 | 只看该作者
厉害了,这个好用
回复

使用道具 举报

109#
发表于 2023-8-18 11:16:17 | 只看该作者
多谢分享录屏工具
回复

使用道具 举报

108#
发表于 2023-8-18 05:29:44 | 只看该作者
谢谢分享
回复

使用道具 举报

107#
发表于 2023-8-18 00:16:43 | 只看该作者
只能说太给力了,多谢分享
回复

使用道具 举报

106#
发表于 2023-8-17 22:27:01 | 只看该作者
谢谢分享
回复

使用道具 举报

105#
发表于 2023-8-17 21:50:22 | 只看该作者
谢谢分享
回复

使用道具 举报

104#
发表于 2022-1-5 14:13:41 | 只看该作者
ShareBit 发表于 2022-1-4 16:04
我查了一下,不是 SHIFT+F12注册热键有问题,而是F12键作为热键是有问题的。具体参考:https://jingyan.b ...

谢谢楼主的解答,还真是F12的问题,不好意思.
回复

使用道具 举报

103#
 楼主| 发表于 2022-1-4 16:04:11 | 只看该作者
zts59 发表于 2022-1-4 09:35
不错,谢谢更新,关于热键问题,截图热键设置成: SHIFT+F12不成功
有些需要截图有菜单的时候需要用到这类 ...

我查了一下,不是 SHIFT+F12注册热键有问题,而是F12键作为热键是有问题的。具体参考:https://jingyan.baidu.com/article/e2284b2b883ad6e2e7118d51.html   大致就是 根据微软的MSDN文档说明,F12是保留给系统内核调试器用的,所以不能被其它应用程序注册为系统热键。

点评

谢谢楼主的解答,还真是F12的问题,不好意思.  详情 回复 发表于 2022-1-5 14:13
回复

使用道具 举报

102#
 楼主| 发表于 2022-1-4 15:46:04 | 只看该作者
zts59 发表于 2022-1-4 09:35
不错,谢谢更新,关于热键问题,截图热键设置成: SHIFT+F12不成功
有些需要截图有菜单的时候需要用到这类 ...

这个不成功就只有你自己去研究了。代码本身没问题,不成功是别的注册了或者别的什么原因。 没注册成功也已经图标上表现出来了,菜单上也表现出来了没注册成功。
回复

使用道具 举报

101#
发表于 2022-1-4 09:35:49 | 只看该作者
本帖最后由 zts59 于 2022-1-4 09:37 编辑

不错,谢谢更新,关于热键问题,截图热键设置成: SHIFT+F12不成功
有些需要截图有菜单的时候需要用到这类热键,不和菜单冲突

点评

我查了一下,不是 SHIFT+F12注册热键有问题,而是F12键作为热键是有问题的。具体参考:https://jingyan.baidu.com/article/e2284b2b883ad6e2e7118d51.html 大致就是 根据微软的MSDN文档说明,F12是保留给系统内核  详情 回复 发表于 2022-1-4 16:04
这个不成功就只有你自己去研究了。代码本身没问题,不成功是别的注册了或者别的什么原因。 没注册成功也已经图标上表现出来了,菜单上也表现出来了没注册成功。  详情 回复 发表于 2022-1-4 15:46
回复

使用道具 举报

100#
 楼主| 发表于 2021-12-10 17:08:06 | 只看该作者
temp2005 发表于 2021-12-10 08:46
1M不到的体积倒是很小,不知录制出来的体积怎样

录制出来的大小用户可以自行设置配置文件【x264】节下面的参数进行控制,至于音频没编码,这不重要,不管怎么说比起视频来,都是可以忽略的。
回复

使用道具 举报

99#
 楼主| 发表于 2021-12-10 16:03:31 | 只看该作者
wuyouman01 发表于 2021-12-10 14:07
只是单录扬声器,语速很快且嘈杂,不知别人是否正常。

这个看起感觉不是录像问题,也就是不是录制的声音有问题,而是播放器可能不太对导致的。 你可以换不同的播放器试一试。
回复

使用道具 举报

98#
发表于 2021-12-10 14:26:42 | 只看该作者

谢谢楼主分享
回复

使用道具 举报

97#
发表于 2021-12-10 14:07:53 | 只看该作者
ShareBit 发表于 2021-12-10 11:07
录制出来的音频应该不会有人可以做出更好的效果。 理由是:内录肯定是无杂质的,录麦克风也没有什么环节 ...

只是单录扬声器,语速很快且嘈杂,不知别人是否正常。

点评

这个看起感觉不是录像问题,而是播放器可能不太对导致的。 你可以换不同的播放器试一试。  详情 回复 发表于 2021-12-10 16:03
回复

使用道具 举报

96#
发表于 2021-12-10 11:31:32 | 只看该作者
谢谢楼主分享,这软件小巧实用。
回复

使用道具 举报

95#
 楼主| 发表于 2021-12-10 11:07:34 | 只看该作者
wuyouman01 发表于 2021-12-10 09:31
谢谢分享,录制的视频是正常的,不过录制的音频效果太差了。

录制出来的音频应该不会有人可以做出更好的效果。 理由是:内录肯定是无杂质的,录麦克风也没有什么环节是可以改进的,至于内录同时外录,有那么一点可能有人的算法更好,但这也仅仅只是可能。 录麦克风或者两者同录,是可以加上一些算法,比如降噪,回声消除等等,就我目前做出来的就是无损原始数据。而且我保存的也是原始格式的数据,所以如果你看到某个软件没有专门的降噪,回声消除等等选项,而能比我做出来的好,这个我是不太相信的。至于录制的通道,采样率,采样位数,这几个参数,只要你懂,那么你就可以自行在配置文件里面进行设置。

点评

只是单录扬声器,语速很快且嘈杂,不知别人是否正常。  详情 回复 发表于 2021-12-10 14:07
回复

使用道具 举报

94#
发表于 2021-12-10 09:31:04 | 只看该作者
谢谢分享,录制的视频是正常的,不过录制的音频效果太差了。

点评

录制出来的音频应该不会有人可以做出更好的效果。 理由是:内录肯定是无杂质的,录麦克风也没有什么环节是可以改进的,至于内录同时外录,有那么一点可能有人的算法更好,但这也仅仅只是可能。 录麦克风或者两者同录  详情 回复 发表于 2021-12-10 11:07
回复

使用道具 举报

93#
发表于 2021-12-10 08:46:24 | 只看该作者
1M不到的体积倒是很小,不知录制出来的体积怎样

点评

录制出来的大小用户可以自行设置配置文件【x264】节下面的参数进行控制,至于音频没编码,这不重要,不管怎么说比起视频来,都是可以忽略的。  详情 回复 发表于 2021-12-10 17:08
回复

使用道具 举报

92#
发表于 2021-12-10 00:50:40 | 只看该作者
ShareBit 发表于 2021-12-9 02:32
增加screen节下面的enable字段, 如果为0,则不录制屏幕,这时如果audio节下面的enable字段为1,则只会录制纯 ...

测试通过.

假如音频能使用 MP3 或 AAC 更好,减小文件体积.
回复

使用道具 举报

91#
 楼主| 发表于 2021-12-9 02:32:55 | 只看该作者
增加screen节下面的enable字段, 如果为0,则不录制屏幕,这时如果audio节下面的enable字段为1,则只会录制纯wav声音文件。

点评

测试通过. 假如音频能使用 MP3 或 AAC 更好,减小文件体积.  详情 回复 发表于 2021-12-10 00:50
回复

使用道具 举报

90#
 楼主| 发表于 2021-12-8 22:48:45 | 只看该作者
如果 microphone和speaker都设置为1,那么在录制电脑播放的声音的同时录制麦克风声音。至此,关于声音功能算是告一段落了。
回复

使用道具 举报

89#
 楼主| 发表于 2021-12-8 14:36:29 | 只看该作者
本帖最后由 ShareBit 于 2021-12-8 15:01 编辑

再次做出改进,增加对声音的录制,声音可以来自麦克风输入,也可以内录电脑播放的声音

[audio]
enable                           = "1" //为0不录制声音,为1录制声音
microphone                   = "1" //为0不录制麦克风输入的声音,为1则录制麦克风输入的声音
speaker                          = "0" //为0不内录电脑播放的声音,为1则内录电脑播放的声音
channels                        = "2" //为1是采集一个声道,为2则是采集两个声道,目前只支持这两种情况
samplespersec               = "16000" //一般常用的是8000或者16000,是声音采样率
bitspersample                = "16" //一般常用的是8或者16,是一个采样点的比特位数

如果 microphone和speaker都设置为1,那么按理应该解释为内录的同时录制麦克风输入的声音,但目前没有实现混音功能,这样设置目前内部处理为只录制麦克风声音。
回复

使用道具 举报

88#
发表于 2021-6-24 15:48:09 | 只看该作者
看到这个软件就一个程序,一个配置文件,也就楼主做出来了,实在是高!
回复

使用道具 举报

87#
发表于 2021-6-24 15:24:40 | 只看该作者
本帖最后由 plusv 于 2021-6-24 15:54 编辑

有一个功能我觉的颇重要,
就是模拟鼠标点击,
这样当鼠标点击 Menu/Button/..... 可以更清楚,
你可参考 InstantDemo/FastStone Capture/.....
这样功能就很完备了.

PS:
以我来说录声音,
用的机会很少,
有录声音也不错,
没有录声音也 OK.


回复

使用道具 举报

86#
发表于 2021-6-24 15:00:59 | 只看该作者
本帖最后由 plusv 于 2021-6-24 15:05 编辑
ShareBit 发表于 2021-6-24 02:38
做了一点改动,之前无损bitsperpixel=32的时候,我内部强制改变为bitsperpixel=24方式执行,现在无损编码设 ...

之前为了无损设置为 bitsperpixel=32 很满意,
也就是你说的所谓 只有 24 而以.

刚下了新版试了一下,
确实 24/32 眼睛看不出不同,
但文件大小确实也不一样,
不过 实事求是 的精神值的赞许,
24 就是 24,30 就是 30.



回复

使用道具 举报

85#
 楼主| 发表于 2021-6-24 02:38:09 | 只看该作者
做了一点改动,之前无损bitsperpixel=32的时候,我内部强制改变为bitsperpixel=24方式执行,现在无损编码设置下bitsperpixel=32生效了,虽然我感觉屏幕截屏bitsperpixel=32和bitsperpixel=24应该是没区别的。

点评

之前为了无损设置为 bitsperpixel=32 很满意, 也就是你说的所谓 只有 24 而以. 刚下了新版试了一下, 确实 24/32 眼睛看不出不同, 但文件大小确实也不一样.  详情 回复 发表于 2021-6-24 15:00
回复

使用道具 举报

84#
发表于 2021-5-31 22:02:32 | 只看该作者
感谢楼主
回复

使用道具 举报

83#
发表于 2021-5-29 17:46:26 | 只看该作者
好快更新, 截图功能中的文字功能,无法移动还在文本框中打好文字 ,另文字的大小和字体没有
回复

使用道具 举报

82#
发表于 2021-5-28 21:29:40 | 只看该作者
ShareBit 发表于 2021-5-28 21:07
再次修改,现在支持自定义任意热键,可能需要一点点虚拟键键名的知识。可以参考: https://docs.microsoft.c ...

Windows 7 X64 测试正常.
回复

使用道具 举报

81#
 楼主| 发表于 2021-5-28 21:07:21 | 只看该作者
本帖最后由 ShareBit 于 2021-5-28 21:16 编辑

再次修改,现在支持自定义任意热键,可能需要一点点虚拟键键名的知识。可以参考: https://docs.microsoft.com/en-us ... v/virtual-key-codes   里面的VK_xxx键都是支持的。  大体而言,一个热键由辅助键加上一个VK_xxx键组成,辅助键只有四种"CTRL" "ALT" "SHIFT" "WIN", 辅助键可以多个组合,也可以完全没有辅助键。虚拟键,也就是VK_xxx键最多只能有一个。

点评

Windows 7 X64 测试正常.  详情 回复 发表于 2021-5-28 21:29
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-18 22:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表