2013-04-12 126 views
0

我們正在運行Debian與ALSA,我們需要從我們的音頻輸入線提取音頻樣本。我們希望能夠用這些樣本填充緩衝區,所以在它們到來時對它們執行操作。音頻採樣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; 
} 
1

看看http://jackaudio.org/

acording維基百科:

Jack音頻連接工具包(或JACK)是一家專業的聲音服務器守護程序,提供實時,低延遲連接兩個音頻 以及實現其API的應用程序之間的MIDI數據。 JACK是遞歸首字母縮寫詞 。 JACK已經開發出的保羅·戴維斯(誰在 2004年贏得了開源獎,這部作品)率領開放 源碼開發人員社羣[3],一直是基礎設施的關鍵部分和 專業音頻的事實標準因爲 其在2002年成立之初的服務器上的Linux軟件是免費軟件,下 GNU GPL許可,而庫的更寬容的GNU LGPL許可。