我們正在運行Debian與ALSA,我們需要從我們的音頻輸入線提取音頻樣本。我們希望能夠用這些樣本填充緩衝區,所以在它們到來時對它們執行操作。音頻採樣Debian的
我們試圖直視ALSA調用但我們因爲有很多資源在那裏運行與折舊功能問題是很老。
在關於這一問題的方向而言的任何有益的參考或建議?
我們正在運行Debian與ALSA,我們需要從我們的音頻輸入線提取音頻樣本。我們希望能夠用這些樣本填充緩衝區,所以在它們到來時對它們執行操作。音頻採樣Debian的
我們試圖直視ALSA調用但我們因爲有很多資源在那裏運行與折舊功能問題是很老。
在關於這一問題的方向而言的任何有益的參考或建議?
使用一些先進的最新例子,像這樣:
#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;
}
acording維基百科:
Jack音頻連接工具包(或JACK)是一家專業的聲音服務器守護程序,提供實時,低延遲連接兩個音頻 以及實現其API的應用程序之間的MIDI數據。 JACK是遞歸首字母縮寫詞 。 JACK已經開發出的保羅·戴維斯(誰在 2004年贏得了開源獎,這部作品)率領開放 源碼開發人員社羣[3],一直是基礎設施的關鍵部分和 專業音頻的事實標準因爲 其在2002年成立之初的服務器上的Linux軟件是免費軟件,下 GNU GPL許可,而庫的更寬容的GNU LGPL許可。