linux下ALSA API採集聲音遇到的坑

2021-08-19 19:47:58 字數 828 閱讀 1694

alsa 的api網上一大把,昨天抄了個抓取程式放在自己的程式中,一讀資料就崩潰,折騰了好久

alsa 音效卡資料抓取函式原型:

snd_pcm_sframes_t snd_pcm_readi (snd_pcm_t * pcm,  const void * buffer,    snd_pcm_uframes_t size);

呼叫如下:

#define  frame_size 160

uint8_t buf[frame_size*4];

snd_pcm_readi (pcm,  buf,   sizeof(buf));  ----呼叫後,程式掛掉

後來:#define  frame_size 160

uint8_t buf[frame_size*4*100];

snd_pcm_readi (pcm,  buf,  frame_size*4);  ----呼叫後,程式ok了, 顯然與緩衝區有關係, 百思不得其解

早上來, 繼續鬱悶。 偶然看看函式原型, 發現了第三個引數:

snd_pcm_uframes_t size        這個size不會是 frame_size吧?

#define  frame_size 160

uint8_t buf[frame_size*4];

snd_pcm_readi (pcm,  buf, frame_size);  ----呼叫後,程式ok了

再看: snd_pcm_sframes_t snd_pcm_writei (snd_pcm_t * pcm,   const void * buffer, snd_pcm_uframes_t size )

也是這樣子

linux系統下 資料採集環境配置

注 在執行下面命令前先解壓 htidc.tgz 到 根目錄下 1.清理舊的程式 cd htidc htidc c mkdir bin make clean 2.編譯安裝freetds軟體包,用root使用者執行以下的指令碼。cd htidc freetds 0.82 configure prefix...

Rancher體系下容器日誌採集

乙個完整的容器平台,容器日誌都是很重要的一環。尤其在微服務架構大行其道狀況下,程式的訪問監控健康狀態很多都依賴日誌資訊的收集,由於docker的存在,讓容器平台中的日誌收集和傳統方式很多不一樣,日誌的輸出和採集點收集和以前大有不同。本文就 一下,rancher平台內如何做容器日誌收集。縱覽當前容器日...

Rancher體系下容器日誌採集

乙個完整的容器平台,容器日誌都是很重要的一環。尤其在微服務架構大行其道狀況下,程式的訪問監控健康狀態很多都依賴日誌資訊的收集,由於docker的存在,讓容器平台中的日誌收集和傳統方式很多不一樣,日誌的輸出和採集點收集和以前大有不同。本文就 一下,rancher平台內如何做容器日誌收集。縱覽當前容器日...