Debian上的音频采样

Audio Sampling on Debian

本文关键字:采样 音频 Debian      更新时间:2023-10-16

我们正在运行带有ALSA的Debian,我们需要从音频输入行提取音频样本。我们希望能够用这些样本填充缓冲区,所以当它们来的时候对它们执行操作。

我们已经尝试直接查看als协会的呼叫,但我们遇到了折旧功能的问题,因为那里的许多资源相当旧。

关于这个问题有什么好的参考或建议吗?

使用一些最新的例子,像这样:

#include <alsa/asoundlib.h>
static char *device = "default"; /* capture device */
unsigned short buffer[2 * 24000];
int main(void)
{
    int err;
    snd_pcm_t *handle;
    snd_pcm_sframes_t frames;
    if ((err = snd_pcm_open(&handle, device, SND_PCM_STREAM_CAPTURE, 0)) < 0) {
        printf("open error: %sn", snd_strerror(err));
        exit(EXIT_FAILURE);
    }
    if ((err = snd_pcm_set_params(handle,
                                  SND_PCM_FORMAT_S16,
                                  SND_PCM_ACCESS_RW_INTERLEAVED,
                                  2,
                                  48000,
                                  1,
                                  500000)) < 0) { /* 0.5 sec */
        printf(" open error: %sn", snd_strerror(err));
        exit(EXIT_FAILURE);
    }
    for (;;) {
        frames = snd_pcm_readi(handle, buffer, 24000);
        if (frames < 0)
            frames = snd_pcm_recover(handle, frames, 0);
        if (frames < 0) {
            printf("snd_pcm_readi failed: %sn", snd_strerror(err));
            break;
        }
        // ...
    }
    snd_pcm_close(handle);
    return 0;
}

看看http://jackaudio.org/

根据维基百科:

JACK Audio Connection Kit(或JACK)是一个专业的声音服务器守护进程,为两个音频提供实时、低延迟的连接以及实现其API的应用程序之间的MIDI数据。杰克是一个递归缩写。JACK是由一个开放的社区开发的由Paul Davis领导的源码开发人员(他在2009年获得了开源奖)2004年为这项工作)[3],一直是基础设施和关键的一部分在Linux上的专业音频软件事实上的标准它成立于2002年。服务器是免费软件,在GNU GPL,而库是在更宽松的GNU下授权的LGPL .