gpt4 book ai didi

检查麦克风是否已在 Linux 上与 C 一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:01 29 4
gpt4 key购买 nike

我在玩 Pulseaudio API,由于我对声音系统的工作原理知之甚少,所以我不太理解为什么多个应用程序可以同时使用麦克风。

或者更准确地说:为什么不调用 fprintf 我有 2 个应用程序正在主动记录内容,我启动了以下程序?

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <pulse/simple.h>
#include <pulse/error.h>
#define BUFSIZE 1024


int main(int argc, char*argv[]) {
/* The sample type to use */
static const pa_sample_spec ss = {
.format = PA_SAMPLE_S16LE,
.rate = 44100,
.channels = 2
};
pa_simple *s = NULL;
int ret = 1;
int error;

/* Create the recording stream */
if (!(s = pa_simple_new(NULL, argv[0], PA_STREAM_RECORD, NULL, "record", &ss, NULL, NULL, &error)))
fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error));

return 0;
}

最佳答案

我猜您没有收到错误消息,因为程序已成功创建到脉冲音频服务器的 pa_simple 连接。

您可能希望添加 pa_simple_free(s);在你返回之前到你的 main() 的末尾。

另外,这里有一个 pa_simple 记录程序示例的链接:parec-simple_8c-example

参见 Pulse Audio API at freedesktop.org


编辑:您的问题“为什么不调用 fprintf”是因为 Pulse Audio Simple API 不保证对麦克风的独占访问。因此,当其他两个应用程序已经在“使用”麦克风时,并且您创建到服务器的简单流连接时,不会生成错误。您的问题真的是“如何确定是否有任何程序正在使用麦克风 - 以及是哪个程序”?

关于检查麦克风是否已在 Linux 上与 C 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40556594/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com