如何在一段时间内逐渐降低 Windows 的音量?

2021-06-21 22:24:47 +08:00
 feng32

有些用户在晚上放音乐时会有这个需求

Linux 下应该可以用 Bash 非常方便地实现

Foobar2000 的一些插件或许也可以实现,但是解决方案和具体软件绑定不太好


请问有什么现成的工具可以实现这一需求吗?

2653 次点击
所在节点    程序员
17 条回复
lalalaqwer
2021-06-21 22:49:27 +08:00
现成工具不知道,不过感觉 autohotkey 写个脚本应该可以的
lloovve
2021-06-21 22:56:51 +08:00
单片机做个虚拟键盘,发送音量键值
lazycat
2021-06-21 23:14:17 +08:00
用 powershell 啊
kokutou
2021-06-21 23:55:06 +08:00
ahk 写脚本+1
转制成 exe
然后 cmd 里延迟调用或者 at 计划任务调用
dingwen07
2021-06-22 01:00:10 +08:00
Task Scheduler + NirCmd
dangyuluo
2021-06-22 01:53:35 +08:00
用单片机+步进电机控制音响的音量旋钮
haimall
2021-06-22 07:00:01 +08:00
搜索 定时音量控制
celeron533
2021-06-22 08:56:21 +08:00
PhaSelEza
2021-06-22 08:57:56 +08:00
控制精度要求不高的话,可以定时模拟键盘输入,用 SendInput 发送 VK_VOLUME_DOWN 。
wanguorui123
2021-06-22 09:01:32 +08:00
按键精灵?
killeder
2021-06-22 09:24:17 +08:00
随着打呼噜的声音变大,而逐渐减小吗
newmlp
2021-06-22 09:33:26 +08:00
半个小时就能写出来的程序
ysc3839
2021-06-22 09:45:54 +08:00
可以参考 EarTrumpet 的代码,实现一个设置音量的工具。
https://github.com/File-New-Project/EarTrumpet
Lemeng
2021-06-22 09:56:25 +08:00
现成的估计需求的人少,没有。自己写差不多
g00001
2021-06-22 10:27:45 +08:00
仅仅是模拟按键可能不行,这个还要读取音量进行比对,
能直接控制计划任务会更好。用 aardio 简单实现了一下:

import win.ui;
/*DSG{{*/
var winform = win.form(text="定时自动降低音量";)
winform.add(
edit={cls="edit";left=29;top=69;right=728;bottom=430;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=2};
trackbar={cls="trackbar";left=22;top=20;right=722;bottom=50;dl=1;dr=1;dt=1;max=100;min=0;z=1}
)
/*}}*/

import sys.audioVolume;
var volumeCtrl = sys.audioVolume();
winform.trackbar.setRange(0,100);
winform.trackbar.pos = volumeCtrl.volume;

import win.taskScheduler
var taskScheduler = win.taskScheduler(winform);

var task;
task = taskScheduler.create("自动降低音量开始",function( arguments ){
if(volumeCtrl.volume<=10) return; //小于最低音量时取消任务
task.enabled = false;

winform.setInterval(
function(){

volumeCtrl.volume = volumeCtrl.volume - 5;

//小于最低音量时停止任务
if(volumeCtrl.volume<=10){
volumeCtrl.volume = 10;
task.enabled = true;
return 0;
}
},1000
)
})

//每天 10 点 11 分开始执行任务
task.time = {minute = 18 ; hour = 10 ;}

//启动计划任务
taskScheduler.start();

//用于同步显示系统音量
winform.setInterval(
function(){winform.trackbar.pos = !volumeCtrl.mute ? volumeCtrl.volume : 0;},2000
)

winform.show(true)
win.loopMessage();
Plague
2021-06-22 11:58:00 +08:00
用 python 写一个就行,很简单
oyasumi
2021-06-22 12:00:36 +08:00
@dangyuluo 优秀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/784938

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX