【问题标题】:Audio Sampling on DebianDebian 上的音频采样
【发布时间】:2013-04-04 09:20:57
【问题描述】:

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

我们曾尝试直接查看 ALSA 调用,但由于很多资源都已经很旧,因此我们遇到了折旧函数的问题。

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

【问题讨论】:

    标签: c++ audio debian alsa


    【解决方案1】:

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

    #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: %s\n", 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: %s\n", 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: %s\n", snd_strerror(err));
                break;
            }
    
            // ...
        }
    
        snd_pcm_close(handle);
        return 0;
    }
    

    【讨论】:

      【解决方案2】:

      看看http://jackaudio.org/

      根据维基百科:

      JACK 音频连接套件(或 JACK)是一个专业的声音服务器守护程序,可为两个音频提供实时、低延迟的连接 和实现其 API 的应用程序之间的 MIDI 数据。杰克是一个 递归缩写。 JACK 是由一个开放的社区开发的 由 Paul Davis 领导的源代码开发人员(他在 2004 年)[3] 并且一直是基础设施和 Linux 上专业音频软件的事实标准 它于 2002 年成立。该服务器是免费软件,根据 GNU GPL,而该库在更宽松的 GNU 下获得许可 LGPL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-08
        • 2011-04-29
        • 2010-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-04
        相关资源
        最近更新 更多