Параметры PCM для захвата звука (в реальном коде все проверяется):
Код: Выделить всё
snd_pcm_open(&pcm_handle, "plughw:0,0", mode, 0);
// ...
unsigned int sample_rate = 44100, channels = 1;
snd_pcm_uframes_t period_size = 256, buffer_size = period_size*channels*2;
snd_pcm_hw_params_set_access(pcm_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED);
snd_pcm_hw_params_set_format(pcm_handle, hw_params, SND_PCM_FORMAT_S16_LE);
snd_pcm_hw_params_set_channels(pcm_handle, hw_params, channels);
snd_pcm_hw_params_set_rate_near(pcm_handle, hw_params, &sample_rate, nullptr);
snd_pcm_hw_params_set_period_size_near(pcm_handle, hw_params,&period_size,nullptr);
buffer_size = period_size * channels * 2;
snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hw_params, &buffer_size);
Код: Выделить всё
std::vector bytes(buffer_size);
int ret;
while ((ret = snd_pcm_readi(pcm_handle, bytes.data(), period_size)) < 0)
snd_pcm_prepare(pcm_handle);
// all bytes[] is 0
Код: Выделить всё
arecord test-mic.raw -d5 -fS16_LE -r44100 -c1 -D"plughw:0,0"
Подробнее здесь: https://stackoverflow.com/questions/798 ... mpty-array
Мобильная версия