无忧启动论坛

标题: 我实现的一个简易录屏程序 [打印本页]

作者: ShareBit    时间: 2021-5-23 04:44
标题: 我实现的一个简易录屏程序
本帖最后由 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)



作者: ShareBit    时间: 2021-5-23 04:45
本帖最后由 ShareBit 于 2021-5-25 13:11 编辑

界面极其简洁:

gui.png (19.07 KB, 下载次数: 86)

gui.png

作者: 曾经沧海    时间: 2021-5-23 06:45
虽然俺不懂技术,但是,直觉这个程序很不错!支持!
作者: Liberation    时间: 2021-5-23 07:15
感谢楼主分享
作者: karaser    时间: 2021-5-23 07:24
谢谢分享
作者: temp2005    时间: 2021-5-23 07:55
选项少了点,如矩形、全屏等
作者: zlq_hysy    时间: 2021-5-23 09:43
希望开发者继续加油,继续完善,比如全屏、窗口,声音等。
作者: bspub    时间: 2021-5-23 09:59
疯狂点赞!!!!!!!!小声说一句:开源就好了。
作者: plusv    时间: 2021-5-23 10:24
本帖最后由 plusv 于 2021-5-23 10:46 编辑

很不错.

建议先加上自定义矩形 --> 左上坐标,矩形宽,矩形高

PS:
程序内置的"开始截屏"的热键是 CTRL + ALT + 数字小键盘上的0
程序内置的"停止截屏"的热键是 CTRL + ALT + 数字小键盘上的9

能否通用键盘上的 0 和 9 ?
原因:
1. 键盘上的 0 和 9 比较近,按 CTRL + ALT + 0 /9 比较好按.
2. 数字小键盘上的 0/9 我默认为方向键(PgUp/PgDn),要先按 NumLock 键.



作者: s958    时间: 2021-5-23 10:28
支持一下楼主。建议还是加上矩形、全屏等就更完美了。
作者: seawaycao    时间: 2021-5-23 12:11
赞一个!请问能录系统播放的声音吗?
作者: ShareBit    时间: 2021-5-23 12:17
plusv 发表于 2021-5-23 10:24
很不错.

建议先加上自定义矩形 --> 左上坐标,矩形宽,矩形高

之所以用数字键盘上的0和9,是因为这样与别的热键的冲突降低,而且0与9相隔很远,误操作的可能性也降低。 不过未来肯定是用户可以自定义热键。至于区域选择,这个内部实现非常简单,麻烦的是怎么让用户设置这个区域或者怎么表现让用户拉框选择区域,这个功能后续肯定也是会有的。
作者: plusv    时间: 2021-5-23 12:49
本帖最后由 plusv 于 2021-5-23 13:14 编辑
ShareBit 发表于 2021-5-23 12:17
之所以用数字键盘上的0和9,是因为这样与别的热键的冲突降低,而且0与9相隔很远,误操作的可能性也降低。 ...

>至于区域选择,这个内部实现非常简单,麻烦的是怎么让用户设置这个区域或者怎么表现让用户拉框选择区域,这个功能后续肯定也是会有的。

1.
纯手动:
screensaver.ini 设置:
Rect_LeftTop= X,Y
Rect_Width=A
Rect_Height=B

2.
自动 1 :
抓取屏幕上的程序,
得到程序的 Handle,
求程序上的 LeftTop X,Y 及 Width,Height

3.
自动 2 :
用户在屏幕上,点选一点并拉框选择区域,我是采取类似 FastStone Capture 的方法,
Show 十字线并拉框.




PS:默认为 .avi 有点怪,
Xˊ264 一般习惯为 .mp4

encoder = "0"  为  Xˊ264
我改成 1 也是 X264,
我还以为会变成 X265.


作者: ShareBit    时间: 2021-5-23 13:51
本帖最后由 ShareBit 于 2021-5-23 14:02 编辑
plusv 发表于 2021-5-23 12:49
>至于区域选择,这个内部实现非常简单,麻烦的是怎么让用户设置这个区域或者怎么表现让用户拉框选择区域 ...

因为我上面写了生效的那几个参数设置,其中encoder目前暂时属于不生效的设置,也就是是啥都不影响。.mp4文件格式我没达到精通状态,而avi文件格式我可以算是精通。帧率十分稳定的录像保存,基本上各种文件格式都能很好处理,而帧率完全不确定的(比如说,你设置的帧率非常高,而又有非常消耗cpu的软件运行着,那么这时录像帧率就是动态的,根本说不清楚各个时刻的帧率是多少)情况下,又能很好的支持播放随机定位(也就是播放器进度条随意拖动)的录像文件格式,我不太确定mp4格式是否支持,但我很确定我能用avi文件做出来,至少在我实现的播放器里面可以正确的播放(也就是播放进度和录像里面的时间保持一致,既没快播,也没慢播)。本来还打算在图像没变动的情况下,不编码,用空帧插帧到文件格式里面去就可以了的,avi文件格式有一个很合理的扩展可以实现插空帧,只是一些第三方播放器没能理解avi文件的空帧概念(他们认为空帧完全无意义,应该直接忽略,殊不知空帧的意义在于需要继续保持之前帧图像,用于时间延迟的),没能正确处理,会导致播放快播,所以为了更大限度的兼容,没变化的帧我也再次编码了,这会增大一点录像文件大小。

作者: plusv    时间: 2021-5-23 14:11
ShareBit 发表于 2021-5-23 13:51
因为我上面写了生效的那几个参数设置,其中encoder目前暂时属于不生效的设置,也就是是啥都不影响。.mp4 ...

1.
误会了,
我是说,假如文件名 xxx.avi 能默认为 xxx.mp4 会更好.

2.
disablegpu = "1"
以我使用 FFMpeg 的经验,
当使用 GPU 硬件加速,
速度是飞快,但质量会较差,
不知当 disablegpu = "0" 质量是否会较差 ??

3.
有时录制时以纯文本居多,如 CMD Console,
有时文本会有一点点模糊,
想问是否内部转成 .JPG ??
能否加参数设为 .PNG 或 .JPG 让用户自选 ??

作者: ShareBit    时间: 2021-5-23 14:25
本帖最后由 ShareBit 于 2021-5-23 14:30 编辑
plusv 发表于 2021-5-23 14:11
1.
误会了,
我是说,假如文件名 xxx.avi 能默认为 xxx.mp4 会更好.

使用nvida或者intel 显卡sdk进行硬编码的情况,录像效果是否会差一些,这个至少nvida显卡驱动你可以用的写的那个同窗远程桌面进行测试(没实现intel显卡硬编码,因为他需要一个窗口,而service里面本身是没窗口的,我的程序逻辑不太方便把他放到窗口程序里面去编码后再做处理),大体上而言和设置的码流有较大关系,就目前保存录像到本地的应用,码流大一些也没啥大的影响,所以未来有可能会让用户决定是否启用显卡硬编码。至于jpg等,本来我也有打算专门做一个热键,抓图为jpg或png等,那么encoder设置未来也可以用motion jpeg进行录像保存,x264本身也可以做出很高的录像质量,支持无损编码,只是看是否需要了,里面就几个参数的区别,这个也可以用同窗远程桌面在客户端左上角选择"无损压缩"看效果.

作者: plusv    时间: 2021-5-23 14:37
本帖最后由 plusv 于 2021-5-23 14:39 编辑
ShareBit 发表于 2021-5-23 14:25
使用nvida或者intel 显卡sdk进行硬编码的情况,录像效果是否会差一些,这个至少nvida显卡驱动你可以用的 ...

屏幕录像 原理: 是否为 将所有 图像 转成 视频 ??

若是,
我指的是 图像 这个部份,
在进行录像存储为 PNG 或 JPG 图像 能让用户自选.

简单说:
在进行录像
程序内 PNG 图像 转成 视频

程序内 JPG 图像 转成 视频
作者: ShareBit    时间: 2021-5-23 15:21
plusv 发表于 2021-5-23 14:37
屏幕录像 原理: 是否为 将所有 图像 转成 视频 ??

若是,

不是的,屏幕录像首先是抓屏为rgb555或者rgb24或者rgb32(这个对应的就是配置文件里面的bitsperpixel),用多快的频率抓屏(对应framerate ),这些是原始数据,然后转为YUV420P的视频原始格式,再使用编码算法进行编码,然后写入到文件容器里面(遵循文件容器规则).所以中间是不会有jpeg,png等文件形式的,只能是使用rgb的原始数据进行处理后才会有jpeg,png等形式的数据。
作者: plusv    时间: 2021-5-23 15:27
ShareBit 发表于 2021-5-23 15:21
不是的,屏幕录像首先是抓屏为rgb555或者rgb24或者rgb32(这个对应的就是配置文件里面的bitsperpixel), ...

那 屏幕录像 时,
有些时候我只想录制简单的文本视频,如 CMD Console 之类的,
可否能 无损 录制 ??
作者: plusv    时间: 2021-5-23 15:41
看了此帖,
很多人特别需要 区域 录像,

我觉的,
你是否能先实作 ??

12F 的
1.
纯手动:
screensaver.ini 设置:
Rect_LeftTop= X,Y
Rect_Width=A
Rect_Height=B

先解燃眉之急.
作者: ShareBit    时间: 2021-5-23 15:42
plusv 发表于 2021-5-23 15:27
那 屏幕录像 时,
有些时候我只想录制简单的文本视频,如 CMD Console 之类的,
可否能 无损 录制 ??

请重新下载,我已经设置参数,可以实现h264无损编码算法。请重新看说明和重新设置配置文件。
作者: plusv    时间: 2021-5-23 15:45
ShareBit 发表于 2021-5-23 15:42
请重新下载,我已经设置参数,可以实现h264无损编码算法。请重新看说明和重新设置配置文件。

先谢了, 晚点试.
我现在有事需要外出.

另外, 19F 也看看.
作者: ShareBit    时间: 2021-5-23 16:50
plusv 发表于 2021-5-23 15:45
先谢了, 晚点试.
我现在有事需要外出.

已经支持区域录像,看说明,重新下载测试
作者: plusv    时间: 2021-5-24 15:55
本帖最后由 plusv 于 2021-5-24 16:04 编辑
ShareBit 发表于 2021-5-23 16:50
已经支持区域录像,看说明,重新下载测试

嗯,测试完毕,很棒.

反应 3 个不重要的很小问题.

1.
矩形设置: 677x459
视频输出: 680x460

宽: 多了 3 Pix
高: 多了 1 Pix


2.
图标 换成 EXE 内的 ICO 比较能识别,
MFC ICO 没代表性.



3.
加个 重新加载 screensaver.ini 选项.
因为
运行程序 -> 改 screensaver.ini -> 离开程序 ->运行程序 -> 改 screensaver.ini -> 离开程序 ->运行程序 -> 改 screensaver.ini -> 离开程序 .....
若有 重新加载 screensaver.ini 选项 就方便直接修改后立刻测试.





作者: ShareBit    时间: 2021-5-24 16:45
plusv 发表于 2021-5-24 15:55
嗯,测试完毕,很棒.

反应 3 个不重要的很小问题.

1 这个是必然需要按照编码器规则设定最接近视频宽高的,也就是不是任意的宽高都可以,一般需要满足4的倍数,所以这是正常的,也没有人能做出任意宽高都可以的视频和图片(比如bmp位图文件,你就不可能看到奇数宽的)

2)接受
3)接受
作者: plusv    时间: 2021-5-24 17:48
ShareBit 发表于 2021-5-24 16:45
1 这个是必然需要按照编码器规则设定最接近视频宽高的,也就是不是任意的宽高都可以,一般需要满足4的倍 ...

了解.

谢谢.

辛苦了.

作者: ShareBit    时间: 2021-5-25 04:16
这次给大家带来了功能强大的区域选择,截图文件保存,截图编辑与修改功能,记得一定要记得按 CTRL + ALT + 数字小键盘上的5, 因为内置的强大功能目前就只有这种方式才能调出来。大致界面如下图

tools.png (147.04 KB, 下载次数: 67)

tools.png

作者: plusv    时间: 2021-5-25 05:34
本帖最后由 plusv 于 2021-5-25 06:11 编辑
ShareBit 发表于 2021-5-25 04:16
这次给大家带来了功能强大的区域选择,截图文件保存,截图编辑与修改功能,记得一定要记得按 CTRL + ALT +  ...

27F 还没加入.


建议 :

1. 截图保存



2.
截图保存 窗口 不要使用 Modal Dialog,
因为我不能从其它地方复制路径贴上,
建议 使用 Modaless Dialog.

3.



截图保存 小问题:




作者: qhkj999    时间: 2021-5-25 06:24
功能很强大啊,这些快捷键就是好用
作者: ShareBit    时间: 2021-5-25 09:48
plusv 发表于 2021-5-25 05:34
27F 还没加入.

图标美观性确实是有待改进。 截图保存路径目前而言,我认为没问题,你完全可以在默认的文件名前那里粘贴你的路径,后续只要不退出软件,那么就会默认都保存在那里了。第三个你的建议很快就会采纳,win7下你的截图举例,我到感觉是你截图范围小了一点点,导致正好没截到圆角区域。
作者: zts59    时间: 2021-5-25 10:19
加上录声音就完美了
作者: plusv    时间: 2021-5-25 10:26
本帖最后由 plusv 于 2021-5-25 10:29 编辑
ShareBit 发表于 2021-5-25 09:48
图标美观性确实是有待改进。 截图保存路径目前而言,我认为没问题,你完全可以在默认的文件名前那里粘贴 ...

>图标美观性确实是有待改进。 
这倒不是最重要的,这只是美观,不重要.
最重要的是
加个 重新加载 screensaver.ini 选项,这是功能性的问题.

>截图保存路径目前而言,我认为没问题,你完全可以在默认的文件名前那里粘贴你的路径,
>后续只要不退出软件,那么就会默认都保存在那里了。
你没理解我的问题点.

因为是 Modal Dialog,假如没有事先复制路径,就不能粘贴路径.
假如是 Modaless Dialog 没有事先复制路径,我随时都能复制路径,就能粘贴路径,这个灵活多了.

>第三个你的建议很快就会采纳.
很棒.

>win7下你的截图举例,我到感觉是你截图范围小了一点点,
>导致正好没截到圆角区域。
这不对,这是 Aero Glass 问题,
Vista/Windows 7 都有这个问题,
你试试 Vista/Windows 7 就知道了,
你可查找 Capture rounded corners in Vista/Win7 Aero Glass 就很多了.




作者: ShareBit    时间: 2021-5-25 10:36
plusv 发表于 2021-5-25 10:26
>图标美观性确实是有待改进。 
这倒不是最重要的,这只是美观,不重要.
最重要的是

win7 Aero主题,没觉得有啥问题。从你的贴图来看,确实是小了一点。当然如果你截出来和我的不一致的话,那估计也是没法改变的。

截图20210525103115.png (61.02 KB, 下载次数: 67)

截图20210525103115.png

作者: plusv    时间: 2021-5-25 10:49
ShareBit 发表于 2021-5-25 10:36
win7 Aero主题,没觉得有啥问题。从你的贴图来看,确实是小了一点。当然如果你截出来和我的不一致的话, ...


我指的ˋ是截图时,不是有锁定窗口时的框.

这是拉大抓取框,当然不会有问题.





作者: ShareBit    时间: 2021-5-25 11:01
我再次测试,选中窗口,弹出工具按钮直接保存,没问题。

截图20210525105930.png (50.09 KB, 下载次数: 74)

截图20210525105930.png

作者: plusv    时间: 2021-5-25 11:18
ShareBit 发表于 2021-5-25 11:01
我再次测试,选中窗口,弹出工具按钮直接保存,没问题。

我试了一下,
有些程序正常,
有些程序不正常.








建议:
BMP 文件大,少用.
PNG 无损.
调整上下顺序 PNG --> JPG --> BMP






作者: wugeng    时间: 2021-5-25 11:25
谢谢,好用。如果能把启动窗口放到右下角,录屏区域显示边界会更方便,影藏了没直观感受,窗口可能被拖动。至于格式和美化不是那么重要
作者: ShareBit    时间: 2021-5-25 11:33
plusv 发表于 2021-5-25 11:18
我试了一下,
有些程序正常,
有些程序不正常.

建议合理,采纳
作者: chtqq    时间: 2021-5-25 11:35
竟然如此简洁啊,谢谢
作者: xhwfq    时间: 2021-5-25 11:40
ShareBit 发表于 2021-5-23 15:21
不是的,屏幕录像首先是抓屏为rgb555或者rgb24或者rgb32(这个对应的就是配置文件里面的bitsperpixel), ...

用MirrorDriver更好,能达到35帧/秒.
作者: ShareBit    时间: 2021-5-25 11:53
xhwfq 发表于 2021-5-25 11:40
用MirrorDriver更好,能达到35帧/秒.

这只是我举例来说,存在某些情况下设定的帧率达不到。 实际上win8或之上系统使用dxgi可以做到很高的帧率,而即使是bitblt方式,非win7 Aero主题下,比如win xp下,cpu稍微好一点点,也能达到很高的帧率。
作者: ShareBit    时间: 2021-5-25 13:15
本帖最后由 ShareBit 于 2021-5-25 13:22 编辑

再次做出改进,界面修改如下

gui.png (9.95 KB, 下载次数: 72)

gui.png

gui.png (9.95 KB, 下载次数: 62)

gui.png

作者: plusv    时间: 2021-5-25 14:09
ShareBit 发表于 2021-5-25 13:15
再次做出改进,界面修改如下


1.
startuphidemainwin         = "1"
设置无效,仍会出现主界面,
前一版,没这种情况.

2.
rect_left                            = "0"
rect_top                            = "0"
rect_width                         = "-1"
rect_height                        = "-1"

被取消了,
但是 如果发生前面 窗口抓不准(Visia/Windows7),
无法准确 X,Y Width Height 抓取.

就不更新了,
使用前一版.



作者: zrz444    时间: 2021-5-25 14:19
貌似没有声音呢。其他 都很不错。
作者: 2011ohte    时间: 2021-5-25 15:46
喜欢精悍的小程序
作者: 静水=流深    时间: 2021-5-25 18:05
这个程序很不错!支持
作者: ShareBit    时间: 2021-5-25 21:37
plusv 发表于 2021-5-25 14:09
1.
startuphidemainwin         = "1"
设置无效,仍会出现主界面,

你反馈的这两个问题,1)这个现在生效了。 2)这个我现在又加上去了,但只有开始运行的时候会去读这个rect配置信息,所以目前如果要手工设置这些值的话,意味着软件也需要重新运行。 目前发现非100%dpi设置下抓图和区域录像都不正常,这个暂时只有手工设置这些rect值才能录出指定区域的正确录像。 未来会改进为在高dpi下正常。
作者: plusv    时间: 2021-5-25 22:49
本帖最后由 plusv 于 2021-5-25 23:17 编辑
ShareBit 发表于 2021-5-25 21:37
你反馈的这两个问题,1)这个现在生效了。 2)这个我现在又加上去了,但只有开始运行的时候会去读这个 ...

关于 第 2 点的作法 很不错,
能手工 也能自动,
很灵活.

PS 1:
我的环境为 Windows 7 X64,都是在 100% DPI 测试.

PS 2:
反应 1 个问题
bitsperpixel                       = "32"
lossless                          = "1"

并非无损,眼睛可看出质量变差.


你可用 Test.7Z 测试
打开图 123.png 为 1:1
用你的 screensaver.exe 录制.




TEST.7z

312.13 KB, 下载次数: 0, 下载积分: 无忧币 -2

测试文件


作者: tegl    时间: 2021-5-25 22:58
支持原创,请分享源码,谢谢
作者: ShareBit    时间: 2021-5-26 09:13
本帖最后由 ShareBit 于 2021-5-26 09:14 编辑
plusv 发表于 2021-5-25 22:49
关于 第 2 点的作法 很不错,
能手工 也能自动,
很灵活.

你没说错,之前的无损是指在量化环节是无损的,但是在点格式转换(从rgb到YUV420p)这个环节是有损的,本来从视频编码的角度讲,这个损失是可以忽略不计的,量化环节的损失才是图像最大的损失。既然你提出来了,我已经做了改动,实现了真无损。你重新下载测试。
作者: linzhi1168    时间: 2021-5-26 10:09
#在这里快速回复#看帖回帖传统美德
作者: plusv    时间: 2021-5-26 11:19
本帖最后由 plusv 于 2021-5-26 11:21 编辑
ShareBit 发表于 2021-5-26 09:13
你没说错,之前的无损是指在量化环节是无损的,但是在点格式转换(从rgb到YUV420p)这个环节是有损的,本来 ...

用了 50F TEST.7z 样本重测了一下,

bitsperpixel                       = "32"
lossless                          = "1"

还是 有损 质量变差.


作者: ShareBit    时间: 2021-5-26 11:38
plusv 发表于 2021-5-26 11:19
用了 50F TEST.7z 样本重测了一下,

bitsperpixel                       = "32"

请确定可执行文件是是9:03编译出来的,你自己重测吧,我自己测试是没问题的。
作者: ShareBit    时间: 2021-5-26 11:42
plusv 发表于 2021-5-26 11:19
用了 50F TEST.7z 样本重测了一下,

bitsperpixel                       = "32"

我附上一张图,你对比

截图20210526114059.png (180.55 KB, 下载次数: 71)

截图20210526114059.png

作者: plusv    时间: 2021-5-26 12:32
本帖最后由 plusv 于 2021-5-26 15:45 编辑
ShareBit 发表于 2021-5-26 11:42
我附上一张图,你对比

是最新的 EXE 没错.

测试到最后,
发现是我用了很多年最信赖的 PotPlayer 的问题,
同样的 视频 用 PotPlayer 拨放,竟然是模糊的,真是第  1 次遇到这种情况.
同样的 视频 用 MPlayer Classic Homecinema 拨放,竟然是清楚的,真是太奇怪了.

PS:
又测试手边所有能拨放视频的软件,全部都很清楚,
只有 PotPlayer 拨放是模糊的,真是不可思议的意外.



作者: fieryice    时间: 2021-5-26 14:26
简单快捷啊,图标有些简陋。
作者: zzmabmy    时间: 2021-5-26 15:16
感谢楼主分享
作者: plusv    时间: 2021-5-26 15:37
本帖最后由 plusv 于 2021-5-26 15:39 编辑

>录屏文件保存在软件当前目录下,是标准的H264编码算法的avi文件格式,任意第三方播放器都可以正确播放。
>支持的系统最低版本是windows xp,也包括windows pe系统。

在 Windows XP 中,
用 MS 内置的播放器无法拨放 AVI 文件,
原来误解了.


建议修改:
>录屏文件保存在软件当前目录下,是标准的H264编码算法的avi文件格式,任意第三方播放器都可以正确播放(需另装解码器)
>可执行文件支持的系统最低版本是windows xp,也包括windows pe系统。




作者: llrrqq    时间: 2021-5-26 15:52
不错的小程序!
作者: ShareBit    时间: 2021-5-26 17:08
今天上午的程序在修改为真无损的时候不小心引入了一个错误,导致有损的h264编码下半部分图像不对,我已经更新了。
作者: ShareBit    时间: 2021-5-26 18:54
再次修改,现在支持在非100%缩放,也就是高dpi设置下抓图和录像正常。
作者: jmwjy    时间: 2021-5-26 19:08
非常感谢楼主的无私奉献!
作者: ShareBit    时间: 2021-5-26 22:10
再次更新,解决了窗口自动框选误差太大的问题
作者: wugeng    时间: 2021-5-26 22:25
多谢大佬,提个小建议:建议主窗口放到右下角,点击截图功能后不要关闭窗口。点击保存截图直接保存到桌面或软件目录下,不要弹出路径选择。点击“对号”后直接开始录屏,不只是选择区域。最好能给录屏区域加边框和停止按钮。这些能省很多操作步骤
作者: plusv    时间: 2021-5-26 23:33
本帖最后由 plusv 于 2021-5-26 23:40 编辑
ShareBit 发表于 2021-5-26 22:10
再次更新,解决了窗口自动框选误差太大的问题


左图: 前 1 版,外框比较合理,抓的正确.
右图: 此版,外框偏小怪怪的,抓的不大正确.





作者: ShareBit    时间: 2021-5-26 23:56
plusv 发表于 2021-5-26 23:33
左图: 前 1 版,外框比较合理,抓的正确.
右图: 此版,外框偏小怪怪的,抓的不大正确.

这是因为你的电脑的dpi设置和高级缩放设置里面的修复那个按钮。 这次几乎是可以确定很准确,不准确的原因就在你电脑显示的设置上
作者: plusv    时间: 2021-5-27 00:03
ShareBit 发表于 2021-5-26 23:56
这是因为你的电脑的dpi设置和高级缩放设置里面的修复那个按钮。 这次几乎是可以确定很准确,不准确的原 ...



作者: ShareBit    时间: 2021-5-27 00:23
这次我主要是在win10上测试的,在dpi 100% 125% 150%上都做了测试,效果良好。刚又测试了在xp下也正常,在win7下确实不对,win8也是不对,看样子得让win7 win8系统执行以前的那种框选逻辑。
作者: plusv    时间: 2021-5-27 00:32
ShareBit 发表于 2021-5-27 00:23
这次我主要是在win10上测试的,在dpi 100% 125% 150%上都做了测试,效果良好。刚又测试了在xp下也正常,在w ...

我想可能是 Aero Glass 问题(Vista/Windows 7),
想不到 Windows 8 也有问题,那 Windows 8.1 可能也有问题,
所以你可能要判断 Vista/Windows 7/8/8.1 走另一个框选逻辑.

基本上,今天 PM 6:30 的版本蛮稳定的,
先不更新了.


作者: ShareBit    时间: 2021-5-27 00:37
我猜测应该只需要判断是否是win10,只有win10才需要用我晚上10点多的那个校正逻辑,别的系统可能都是不需要的,也就是别的系统可能晚上6:30的是正确的。
作者: plusv    时间: 2021-5-27 00:40
ShareBit 发表于 2021-5-27 00:37
我猜测应该只需要判断是否是win10,只有win10才需要用我晚上10点多的那个校正逻辑,别的系统可能都是不需 ...

你不是说 刚又测试了在xp下也正常 ?

难道 Windows XP 也用 Windows 10 的框选逻辑 ?
作者: plusv    时间: 2021-5-27 00:42
本帖最后由 plusv 于 2021-5-27 00:46 编辑

想问一下,
你还有可能会有哪些想做的功能(To do list) ??
作者: ShareBit    时间: 2021-5-27 02:37
plusv 发表于 2021-5-27 00:42
想问一下,
你还有可能会有哪些想做的功能(To do list) ??

暂时可能会停止了,有事要忙一段时间。 未来打算在捕捉音频输入,音频输出,两者混音,这三个功能可能会实现。这样的话,就能够既可以麦克风输入声音去配合桌面截屏,以及播放背景音录屏,以及背景音+麦克风混音+录屏。 还可能会增加画图工具,优化画图质量,比如直线反走样算法等。
作者: plusv    时间: 2021-5-27 10:08
本帖最后由 plusv 于 2021-5-27 10:15 编辑
ShareBit 发表于 2021-5-27 02:37
暂时可能会停止了,有事要忙一段时间。 未来打算在捕捉音频输入,音频输出,两者混音,这三个功能可能会 ...

嗯,这样是蛮不错的.

通常这类的软件,会有所谓的编辑修改功能,
后制上加上 文本,画图(直线/方框/箭头/马赛克/....)
不过这可能较复杂,
由于本程序是录制视频文件,
基本上也可用其它的视频编辑修改软件也是可以的.


目前的版本,
对我来说,很够用了.



作者: ShareBit    时间: 2021-5-27 11:30
昨晚3点的时候修改为了:只有win10系统才按照一定的规则校正了窗口自动框选区域,别的系统下不做校正,这样在我测试中感觉正确率高一些。 不过肯定有一些窗口不能获取到本希望获取到的区域,别的截屏软件按理也无法做到100%正确,因为这个校正规则属于一种经验性质的东西,而不是每一个软件都必然遵守。
作者: feihe    时间: 2021-5-27 11:52

疯狂点赞!!!!!!
作者: plusv    时间: 2021-5-27 14:58
ShareBit 发表于 2021-5-27 11:30
昨晚3点的时候修改为了:只有win10系统才按照一定的规则校正了窗口自动框选区域,别的系统下不做校正,这样 ...

Windows 7 X64 测试正常.

我使用 FastStone Capture 很多年,
没出现抓错区域,
你可以拿来测试.

作者: zts59    时间: 2021-5-28 08:28
截图功能的: Ctrl+alt 快捷键,有些用alt激活的菜单是截不了的。建议可能自定义它,或用SHIFT+xxx这类的。[url=]图片[/url]

截图快捷键.png (11.04 KB, 下载次数: 109)

截图快捷键.png

作者: ShareBit    时间: 2021-5-28 10:20
zts59 发表于 2021-5-28 08:28
截图功能的: Ctrl+alt 快捷键,有些用alt激活的菜单是截不了的。建议可能自定义它,或用SHIFT+xxx这类的。 ...

这个的解决思路恐怕不应该是换热键,而应该是截屏功能支持多个热键来启动,才能很好的避免某一些热键冲突导致的失效。也就是说,我们的几个热键恐怕应该支持用户自定义,并且一个功能可以对应多个热键。这个会考虑实现。
作者: ShareBit    时间: 2021-5-28 10:24
再次更新了一点,之前软件直接在开始运行时就需要系统有gdiplus.dll文件存在,虽然可以直接放一个gdiplus.dll到我的软件目录下面发布,我也测试windows pe之类的也都带这个文件,但为了保险起见,我这次修改为没这个文件存在录屏和作图不受影响,仅仅影响抓屏保存不正常。
作者: Dec2nd    时间: 2021-5-28 11:55
感谢分享
作者: ShareBit    时间: 2021-5-28 21:07
本帖最后由 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键最多只能有一个。

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

Windows 7 X64 测试正常.
作者: zts59    时间: 2021-5-29 17:46
好快更新, 截图功能中的文字功能,无法移动还在文本框中打好文字 ,另文字的大小和字体没有
作者: linuxdisk    时间: 2021-5-31 22:02
感谢楼主
作者: ShareBit    时间: 2021-6-24 02:38
做了一点改动,之前无损bitsperpixel=32的时候,我内部强制改变为bitsperpixel=24方式执行,现在无损编码设置下bitsperpixel=32生效了,虽然我感觉屏幕截屏bitsperpixel=32和bitsperpixel=24应该是没区别的。
作者: plusv    时间: 2021-6-24 15:00
本帖最后由 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.




作者: plusv    时间: 2021-6-24 15:24
本帖最后由 plusv 于 2021-6-24 15:54 编辑

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

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



作者: lusir401    时间: 2021-6-24 15:48
看到这个软件就一个程序,一个配置文件,也就楼主做出来了,实在是高!
作者: ShareBit    时间: 2021-12-8 14:36
本帖最后由 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,那么按理应该解释为内录的同时录制麦克风输入的声音,但目前没有实现混音功能,这样设置目前内部处理为只录制麦克风声音。

作者: ShareBit    时间: 2021-12-8 22:48
如果 microphone和speaker都设置为1,那么在录制电脑播放的声音的同时录制麦克风声音。至此,关于声音功能算是告一段落了。
作者: ShareBit    时间: 2021-12-9 02:32
增加screen节下面的enable字段, 如果为0,则不录制屏幕,这时如果audio节下面的enable字段为1,则只会录制纯wav声音文件。
作者: plusv    时间: 2021-12-10 00:50
ShareBit 发表于 2021-12-9 02:32
增加screen节下面的enable字段, 如果为0,则不录制屏幕,这时如果audio节下面的enable字段为1,则只会录制纯 ...

测试通过.

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

作者: temp2005    时间: 2021-12-10 08:46
1M不到的体积倒是很小,不知录制出来的体积怎样
作者: wuyouman01    时间: 2021-12-10 09:31
谢谢分享,录制的视频是正常的,不过录制的音频效果太差了。
作者: ShareBit    时间: 2021-12-10 11:07
wuyouman01 发表于 2021-12-10 09:31
谢谢分享,录制的视频是正常的,不过录制的音频效果太差了。

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

只是单录扬声器,语速很快且嘈杂,不知别人是否正常。
作者: fd1688    时间: 2021-12-10 14:26

谢谢楼主分享
作者: ShareBit    时间: 2021-12-10 16:03
wuyouman01 发表于 2021-12-10 14:07
只是单录扬声器,语速很快且嘈杂,不知别人是否正常。

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




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net./) Powered by Discuz! X3.3