Linuxの
pulseaudioを
デスクトップでpacmd
でlist-sources
してMonitor of ***
に
$pacmd
>list-sources
>set-default-source 0
#include <alsa/asoundlib.h>
int main() {
const int n = 1024;
const int channels = 2;
snd_pcm_t* pcm;
snd_pcm_hw_params_t* params;
snd_pcm_format_t pcmfmt = SND_PCM_FORMAT_S16_LE;
snd_pcm_hw_params_alloca(¶ms);
if (snd_pcm_open(&pcm, "default", SND_PCM_STREAM_CAPTURE, 0) < 0) {
// エラー処理
};
if (snd_pcm_hw_params_any(pcm, params) < 0) {
// エラー処理
}
if (snd_pcm_hw_params_set_rate(pcm, params, 44100, 0) < 0) {
// エラー処理
}
if (snd_pcm_hw_params_set_access(pcm, params, SND_PCM_ACCESS_RW_INTERLEAVED) < 0) {
// エラー処理
}
if (snd_pcm_hw_params_set_format(pcm, params, pcmfmt) < 0) {
// エラー処理
}
if (snd_pcm_hw_params_set_channels(pcm, params, channels) < 0) {
// エラー処理
}
if (snd_pcm_hw_params(pcm, params) < 0) {
// エラー処理
}
if (snd_pcm_prepare(pcm) < 0) {
// エラー処理
}
snd_pcm_hw_free(pcm);
int16_t* buffer = (int16_t*) malloc(n*snd_pcm_format_width(pcmfmt)/8*channels);
if (snd_pcm_readi(pcm, buffer, n) < n) {
// エラー処理
}
free(buffer);
}
取得する