您可以在 Autohotkey 中录制音频或系统音频吗?

问题描述

我知道您可以像这样使用 Soundplay 播放声音文件

q:: Soundplay,C:\Users\User\Desktop\testing\Ding Sound Effect.mp3

但是你能做一个记录系统音频的函数吗?

我正在尝试制作一个连续记录系统音频的功能,当我按 num9 之类的 smth 时,它会保存最后 10 或 5 秒并使用 "Soundplay" 播放。我只是想知道这是否可能,因为我搜索并找到了与我要查找的内容无关的内容

-我尝试过的: 当你用谷歌搜索解决方案时,你会发现这篇 2006-2010 年的旧帖子

https://autohotkey.com/board/topic/49559-recording-audio-seven-ways-in-ahk-6-ways-even-work/

我尝试了作者所说的每一种都有效......对我来说没有任何效果

  • 在 SndRec32.exe 方法中...因为您需要从网站将 SndRec32.exe 安装到 wind10...很难找到没有病毒的文件...甚至当我找到时一个并复制并粘贴到 system32(如作者建议的那样),保存后我看不到该文件,并且每当 ahk 脚本午餐时,您也需要处理出现的弹出窗口!

  • SoundRecorder.exe 方法需要你有wind 7 或vista ......我使用的是win10

  • SoX 方法:我安装了 sox 并运行了脚本,但就像 audacity 一样,它给了我错误“找不到 sox!请确保 sox.exe 位于:。”是的,它说位于 ( . )

  • MCI 方法:它没有用,但它是迄今为止最好的一个......它显示了 gui 并显示了录制动画,但是在保存文件时它给了你选择命名文件并选择位置,但它没有保存文件!这个和作者提到的录音机方法的最好的事情是(它们允许 AHK 控制录音机,即使它是“隐藏的”,即运行但在屏幕上不可见)

  • 正如作者所说,FMOD.DLL 和 BASS.DLL 方法仍在改进中......所以它们不起作用!

如果我做错了什么,请告诉我,我可能做错了什么。如果你也测试了这些方法,我真的会很高兴,我仍然会尝试重新阅读代码,我会尝试使大胆或 MCI 方法发挥作用,因为它们已经取得了最好的结果!

我试图理解 MCI 代码,但显然保存部分是什么把一切搞砸了,我就是不知道它到底是什么......

顺便说一句,这里是我从网站上使用的代码

Gui 文件 MCI Gui.ahk(我不得不把它删减到没有注释的部分.. 原始代码请参考上面的网站链接

n

还有主文件MCI.AHK(我不得不把它剪成没有注释的部分..请参考上面的网站链接获取原始代码

#Persistent
#SingleInstance FORCE
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance,ignore
DetectHiddenWindows,On
SetTitleMatchMode,2

#Include MCI.AHK

hMedia:=MCI_Open("new","","type waveaudio")
SetTimer showRecording,350
SetTimer showRecording,Off
Recording = 0
Step = 0


gui Margin,0
gui -MinimizeBox
gui Add,Button,w220   gRecord,Record/Pause
gui Add,wp hp  gExit,Exit (Save as .WAV)
Gui,Add,StatusBar,Ready
gui,Show,MCI
Return

Record:
    if (Recording = 0) {
        Recording = 1
        status := MCI_Record(hMedia)
        SetTimer showRecording,On
        gosub,showRecording
    } else {
        Recording = 0
        status := MCI_Pause(hMedia)
        SetTimer showRecording,Off
        SB_SetText("  Paused")
    }
return

showRecording:
    Step ++
    if (Step = 1)
        SB_SetText("Recording")
    else if (Step = 2)
        SB_SetText("                         Recording")
    else {
        SB_SetText("                                                   Recording")
        Step = 0
    }
return

ESC::
Exit:
GUIClose:
    MCI_Stop(hMedia)
    SetTimer showRecording,Off
    SB_SetText("  Saving")

    FileSelectFile,SavePath,S8,.wav,*.wav 

    MCI_Save(hMedia,SavePath)
    SB_SetText("  Saved")
    SB_SetText("  Closing")
    MCI_Stop(hMedia)
    MCI_Close(hMedia)
    ExitApp
return

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)