关于ubuntu下声音编程的一些问题
时间:2011-12-15
来源:互联网
传统的linux的声音编程是打开/dev下的dsp等声音设备,然后就像类似文件操作一样简单。但ubuntu下却不同,没有dsp这个设备,用的是alsa编程。通过上网查资料,我找到了一些alsa编程的一些资料。但是还有很多不懂的问题,希望大家帮帮忙。最大的问题就是 read(0, buffer, size) 和 write(1, buffer, size)。一个是读入声音,一个是写入声音。(这两个分别是我从录音功能和播放功能下截取出来的)。单独使用都可以 比如 可以./record(录音) >1.raw 或者播放 ./play(播放) <1.raw 。或者让两个同时工作, ./record | ./play 。这么运行的话 就是把说的话给直接播放出来。 但是不理解的是 如果我把这两句写在一个文件里,就不行。 这两个语句意思应该是 读出buffer里的声音数据和把声音数据写入buffer里面吧?
还有就是 如果淡入运行录音功能,而没有把他输出(./record) 屏幕就会一直刷乱码。。。不理解啊。
还有就是 如果淡入运行录音功能,而没有把他输出(./record) 屏幕就会一直刷乱码。。。不理解啊。
作者: ssssongbo 发布时间: 2011-12-15
read(0, buffer, size) 是指从声卡的缓存区读取数据,用于录音
write(1, buffer, size)就是把声音放进缓存区,用来放音、保存等。
我用了一块dsp+arm的板子,arm就是用alsa来读取数据然后在dsp中进行处理的,使用alsa库进行的编程,下面是我程序中的一段
rc = snd_pcm_readi(handle, buffer, frames);
if (rc == -EPIPE)
{
/* EPIPE means overrun */
fprintf(stderr, "overrun occurred\n");
snd_pcm_prepare(handle);
} else if (rc < 0) {
fprintf(stderr,
"error from read: %s\n",
snd_strerror(rc));
} else if (rc != (int)frames) {
fprintf(stderr, "short read, read %d frames\n", rc);
}
rc = write(outfile, buffer, size);
if (rc != size)
fprintf(stderr,"short write: wrote %d bytes\n", rc);//outfile是我之前打开的一个文件
write(1, buffer, size)就是把声音放进缓存区,用来放音、保存等。
我用了一块dsp+arm的板子,arm就是用alsa来读取数据然后在dsp中进行处理的,使用alsa库进行的编程,下面是我程序中的一段
rc = snd_pcm_readi(handle, buffer, frames);
if (rc == -EPIPE)
{
/* EPIPE means overrun */
fprintf(stderr, "overrun occurred\n");
snd_pcm_prepare(handle);
} else if (rc < 0) {
fprintf(stderr,
"error from read: %s\n",
snd_strerror(rc));
} else if (rc != (int)frames) {
fprintf(stderr, "short read, read %d frames\n", rc);
}
rc = write(outfile, buffer, size);
if (rc != size)
fprintf(stderr,"short write: wrote %d bytes\n", rc);//outfile是我之前打开的一个文件
作者: xiongmin060102 发布时间: 2011-12-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28