Debian上的音频采样
Audio Sampling on Debian
我们正在运行带有ALSA的Debian,我们需要从音频输入行提取音频样本。我们希望能够用这些样本填充缓冲区,所以当它们来的时候对它们执行操作。
我们已经尝试直接查看als协会的呼叫,但我们遇到了折旧功能的问题,因为那里的许多资源相当旧。
关于这个问题有什么好的参考或建议吗?使用一些最新的例子,像这样:
#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: %sn", 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: %sn", 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: %sn", snd_strerror(err));
break;
}
// ...
}
snd_pcm_close(handle);
return 0;
}
看看http://jackaudio.org/
根据维基百科:
JACK Audio Connection Kit(或JACK)是一个专业的声音服务器守护进程,为两个音频提供实时、低延迟的连接以及实现其API的应用程序之间的MIDI数据。杰克是一个递归缩写。JACK是由一个开放的社区开发的由Paul Davis领导的源码开发人员(他在2009年获得了开源奖)2004年为这项工作)[3],一直是基础设施和关键的一部分在Linux上的专业音频软件事实上的标准它成立于2002年。服务器是免费软件,在GNU GPL,而库是在更宽松的GNU下授权的LGPL .
相关文章:
- 用c++阅读音频
- 为什么这个音频包络不能通过开关的情况?
- 如何用RISC-V GD32VF103CBT6开发板卸载精确的ADC过采样
- FFMpeg库:如何在音频文件中精确查找
- 需要反转音频步进公式
- 如何在音频处理中使用超能力时间拉伸类
- C++新手,想知道如何使用VS code 2019播放音频文件
- 如何暂停插孔音频客户端
- 如何使用采样器立方体作为数组
- FFmpeg - 重新采样的音频,噪音很大
- 音频单位采样值范围
- 音频采样频率音调
- 音频从 44100 上采样到 96000 Hz 和线性插值
- 如何获得Windows音频播放的当前采样率
- 我如何在Java或C中监控/采样输出音频
- iOS:如何在运行时使用audio Unit重新采样音频(PCM数据)
- 上采样原始音频从22050到48000赫兹
- Debian上的音频采样
- Android:如何在C/ c++中获得首选(本地)音频缓冲区大小和音频采样率
- 处理线性上采样音频阵列