在 Linux ( Ubuntu )下,可以使用 PulseAudio 库来捕获系统声音。以下是一个简单的示例代码片段,可以通过 g++编译:
```
#include <pulse/simple.h>
#include <pulse/error.h>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define BUFSIZE 1024
int main(int argc, char const *argv[]) {
pa_sample_spec ss;
ss.format = PA_SAMPLE_S16LE;
ss.channels = 2;
ss.rate = 44100;
int error;
pa_simple *s = pa_simple_new(NULL, argv[0], PA_STREAM_RECORD, NULL, "record", &ss, NULL, NULL, &error);
if (!s) {
cerr << "pa_simple_new() failed: " << pa_strerror(error) << endl;
return 1;
}
char buf[BUFSIZE];
int cnt = 0;
while (cnt++ < 100) {
int ret = pa_simple_read(s, buf, BUFSIZE, &error);
if (ret < 0) {
cerr << "pa_simple_read() failed: " << pa_strerror(error) << endl;
break;
}
fwrite(buf, 1, ret, stdout);
}
pa_simple_free(s);
return 0;
}
```
该代码将捕获系统声音,并将其输出到标准输出( stdout )。您可以将其修改为将音频写入文件或进行其他处理。
notion AI