如何在 ALSA(高级 Linux 声音架构)中让扬声器呈现 2 秒的静音输出

如何在 ALSA(高级 Linux 声音架构)中让扬声器呈现 2 秒的静音输出

我想通过使用以下方法将 0 的数据写入“默认”设备,使计算机上的音频扬声器静音 2 秒ALSA(高级 Linux 声音架构).下面是代码片段。

int val
int size = 24000;
u_char *tmp_buffer = (u_char *)malloc(size);
memset(tmp_buffer,0,size);

if ((val = snd_pcm_writei(pcm_handle, tmp_buffer, size)) == -EPIPE)
{

    snd_pcm_prepare(pcm_handle);
}
else if (val < 0)
{
    qDebug()<<"ERROR. Can't write to PCM device " << snd_strerror(val);

}
free(tmp_buffer);

使用上述代码,它会呈现为“chuck chuck ..”噪音而不是沉默。

如何将静音输出呈现到扬声器 2 秒?

答案1

采样率为 48000 Hz,两秒钟需要 96000 帧,因此这就是您需要提供给 的数字snd_pcm_writei()

每帧有四个字节,临时缓冲区的大小必须为 384000。

相关内容