C++某个键关闭时录制音频,直到它打开

C++ Recording Audio When a Certain Key Is Down Until it is Up

本文关键字:音频 C++      更新时间:2023-10-16

基本上,我需要一个在Linux中运行并在按住alt时记录到.wav或.flac的程序。到目前为止,我有一个程序(C++),它可以识别 alt 何时启动或关闭,但我需要一种方法来记录直到我发布它。以下是我到目前为止的一些伪代码:

while 1:
    if altChanged:
        if altIsDown:
            //Call system(arecord OPTIONS > /tmp/blah.wav) to record audio.
        end
        else
            //Get PID
            //Use system(kill PID) to fake Ctrl+C and stop recording
        end
    end
end
这不起作用,因为我太愚蠢了,看不到当我进行第一次系统调用以尝试等待 arecord 结束时程序停止,但由于程序没有达到杀戮,它永远不会这样做。我需要弄清楚如何进行线程处理吗?或者有一个库,我可以在那里作弊并做一个记录.start();record.stop();函数集?

system()函数根本不适合太多(甚至可能比这更不合适)。调用外部应用程序的最佳选择是直接使用 fork()/execl()(或其他 exec 函数)。

由于您使用的是 Linux,因此最好的选择是将源代码拉到您当前调用 system() 的任何外部应用程序,并弄清楚如何将该功能添加到您自己的代码中。

此外,您可能希望有一个专用线程来观看事件以开始/停止录制。