如何在ubuntu中如何使用麦克风风

Ubuntu10.10麦克风没声音(ALC892芯片) - 查看主题 & Ubuntu中文论坛
&[ 8 篇帖子 ]&
&文章标题 : Ubuntu10.10麦克风没声音(ALC892芯片)发表于 :
21:18帖子: 42
送出感谢: 0 次
接收感谢: 0 次
在笔记本上装完都好好的,耳麦耳机都可以用,换到台式上问题就来了:声卡芯片是集成在AMD 880G 主板里的 ALC892,装完后耳机发音正常,耳麦却不能用。经过N多调试无果,用了最笨的办法,重装了一次Ubuntu,安装的时候特别留意了一下LiveUSB中系统的声音首选项,测试麦克风,正常发音,可以检测到。可是装完进入系统后发现问题依旧,麦克风检测不到……sudo alsamixer 试过了,顶多能让耳机听到耳麦录入的声音(起码可以排除硬件问题了),但是录音的话还是没有任何捕获……下过 gnome alsa混音器 调试过了,问题依旧。按照坛里的说法,不得已自己下了Realtek 公司最新的支持驱动,手动编译安装以后重启,结果不光耳麦不行,耳机也完了,在声音首选项中已经找不到任何音频设备了。刚刚加入Ubuntu不久,急求高手帮忙~现在的症状是,启动电脑时打开声音首选项输入选项卡里可以捕获到音频,但过段时间就又不行了。
&文章标题 : Re: Ubuntu10.10麦克风没声音(ALC892芯片)发表于 :
21:18帖子: 42
送出感谢: 0 次
接收感谢: 0 次
多媒体声音系统也改过,ALSA 和 Pulse Audio 都不行,问题依旧
_________________
&文章标题 : Re: Ubuntu10.10麦克风没声音(ALC892芯片)发表于 :
21:18帖子: 42
送出感谢: 0 次
接收感谢: 0 次
没人和我一个情况吗?这个声卡芯片比较新的啊我的主板型号是 映泰 TA880G HD 这款主板在Win下使用需要关闭前置音频面板侦测才能够正常使用前置面板,是不是和这个有关?
_________________
&文章标题 : Re: Ubuntu10.10麦克风没声音(ALC892芯片)发表于 :
20:03帖子: 20
送出感谢: 0 次
接收感谢: 0 次
我也是啊。880GM 主板 VIA VT1828S 声卡,麦不能用。
&文章标题 : Re: Ubuntu10.10麦克风没声音(ALC892芯片)发表于 :
22:58帖子: 4
送出感谢: 0 次
接收感谢: 0 次
我的也是麦克风没声音,下载 alsa来编译,半天没搞定,基本是不能编译了,很多头文件都找不到
&文章标题 : Re: Ubuntu10.10麦克风没声音(ALC892芯片)发表于 :
21:18帖子: 42
送出感谢: 0 次
接收感谢: 0 次
我很久没用这台机器,回来一开机,安装了230M的更新,不过很遗憾,问题依旧
_________________
&文章标题 : Re: Ubuntu10.10麦克风没声音(ALC892芯片)发表于 :
9:44帖子: 207
送出感谢: 0 次
接收感谢: 0 次
打开声音首选项--硬件,自行选一下配置文件,这里的配置文件控制着声音的输入输出,另外有时候不是配置文件的问题,是默认麦克风音量的问题,某些声卡在linux下设置音量过大或者过小都会导致接收不到声音,原因未知,可自行调节一下音量试试
_________________ubuntu 10.10 + RedOffice + Firefox + thunderbird
&文章标题 : Re: Ubuntu10.10麦克风没声音(ALC892芯片)发表于 :
10:01帖子: 980地址: 帝都
系统: Ubuntu 12.XX
找到一个办法,添加 &options snd-hda-intel position_fix=1 enable=yes& 到文件/etc/modprobe.d/alsa-base.conf 中(sudo gedit /etc/modprobe.d/alsa-base.conf)现在麦克风可以用,但不排除是偶然情况,正在测试中
_________________Ubuntu技巧汇总 --你遇到的各种问题可能已经在里面了我的技术博客Code tells you how, comments should tell you why.
显示帖子 : 全部帖子1天7天2周1个月3个月6个月1年&排序 作者发表时间文章标题 升序降序&
&[ 8 篇帖子 ]&
正在浏览此版面的用户:Exabot [Bot] 和 3 位游客
您 不能 在这个版面发表主题您 不能 在这个版面回复主题您 不能 在这个版面编辑帖子您 不能 在这个版面删除帖子您 不能 在这个版面提交附件
选择一个版面
------------------
公告/注意事项
& &新闻和通知
& &校园社团支持
& && &华东校区
& && &华南校区
& && &华北校区
& && &华中校区
& && &东北校区
& && &西北校区
& && &港澳台校区
& && &国外校区
& &软件推荐
& &非常任务
系统安装区
& &教学和常见问答
& && &课堂教学和培训
& &初学者园地 - 16.10 - Yakkety Yak
& &系统安装和升级
& && &新立得和软件源
& && &Wubi安装讨论
& &启动和引导
& &网卡问题以及网络和拨号
& && &校园网拨号
& &笔记本、UMPC支持
& &手机和平板
& && &Ubuntu移动应用开发
& &常用硬件支持
& &系统架构支持
配置美化区
& &字体美化和中文支持
& && &个人配置文件存放点
& &桌面特效
& &窗口管理器
& &屏幕抓图
& &办公、图像、机械电子设计等
& && &Vim和Emacs
& &因特网相关软件
& &影音多媒体
& &Wine及其分支
& &游戏和游戏模拟器
& &虚拟机和虚拟化
& &其它类软件
& &开源模板库
服务器管理
& &服务器基础应用
& &数据库管理
& &服务器维护和硬件相关
& &Ubuntu VPS
参与Ubuntu开发
& &软件和文档翻译
& &编译或打包
& &Ubuntu错误报告
程序设计区
& &Shell脚本
& &GTK+和QT
& &软件/网站开发
& && &Python/Php/Perl
& && &C/C++/Java
& &内核及嵌入式开发
& &开源小工具
& &Ubuntu 17.04
& &Ubuntu 16.04 LTS
& &Ubuntu 14.04 LTS
& &Ubuntu 12.04 LTS
& &Ubuntu 10.04 LTS
& &老旧版本支持
& && &Ubuntu 15.10
& && &Ubuntu 15.04
& && &Ubuntu 14.10
衍生发行版
& &Ubuntu GNOME
& &Kubuntu
& &Xubuntu & Lubuntu
& &Ubuntu中文衍生版
& && &UbuntuKylin
& &Ubuntu国外衍生版
& && &Mint
& &Ubuntu衍生版制作
& &其它类Unix OS发行版
& && &Arch发行版
& && &Debian发行版
& && &OpenSUSE发行版
& && &Deepin
& &深度PK版
& &Ubuntu故事和感慨
& &Full Circle开源杂志
分享交流区
& &同城交流
& &线下活动专版
& &Ubuntu宣传推广
& &论坛管理
& && && &Ubuntu中文网上商店耳机有声音了,麦克风还不能用 - 查看主题 & Ubuntu中文论坛
&[ 6 篇帖子 ]&
&文章标题 : 耳机有声音了,麦克风还不能用发表于 :
21:29帖子: 115
送出感谢: 0 次
接收感谢: 0 次
AO521,Conexant CX20585声卡芯片alsa-base.conf 添加了一行 options snd-hda-intel model=olpc-xo-1_5耳机可以用了,麦克风还不行;ubuntu10.04,麦克风可以用
21:06,总共编辑了 7 次
&文章标题 : Re: 耳机没音了——ubuntu10.10声卡驱动问题发表于 :
21:29帖子: 115
送出感谢: 0 次
接收感谢: 0 次
顶怎么解决啊,扬声器声音不太好,只能用耳机啊
&文章标题 : Re: 耳机没音了——ubuntu10.10声卡驱动问题发表于 :
20:02帖子: 741
系统: Ubuntu 12.04
送出感谢: 0 次
我也是这个情况,10.04下电脑和耳机都响,安装alsa-driver-linuxant_1.0.23.0_all.deb后,恢复正常。升级到10.10后,电脑会响,耳机没声,安装alsa-driver-linuxant_1.0.23.0_all.deb后,电脑和耳机都没有声音。所以,我又退回到10.04,又恢复正常了。
_________________退避九舍:富贵不能淫,贫贱不能移,威武不能屈:坚持ubuntu不动摇!
&文章标题 : Re: 耳机没音了——ubuntu10.10声卡驱动问题发表于 :
21:29帖子: 115
送出感谢: 0 次
接收感谢: 0 次
其实ubuntu对acer本支持很好的,尤其one系列,只有这个声音驱动问题。。。
&文章标题 : Re: 耳机没音了——ubuntu10.10声卡驱动问题发表于 :
13:47帖子: 4
送出感谢: 0 次
接收感谢: 0 次
acer 完全正常,到10.10耳机和音响都不行,郁闷!
&文章标题 : Re: 耳机没音了——ubuntu10.10声卡驱动问题发表于 :
21:29帖子: 115
送出感谢: 0 次
接收感谢: 0 次
popaa2009 写道:acer 完全正常,到10.10耳机和音响都不行,郁闷!AO521,Conexant声卡芯片alsa-base.conf 添加了一行 options snd-hda-intel model=olpc-xo-1_5解决,
显示帖子 : 全部帖子1天7天2周1个月3个月6个月1年&排序 作者发表时间文章标题 升序降序&
&[ 6 篇帖子 ]&
正在浏览此版面的用户:没有注册用户 和 2 位游客
您 不能 在这个版面发表主题您 不能 在这个版面回复主题您 不能 在这个版面编辑帖子您 不能 在这个版面删除帖子您 不能 在这个版面提交附件
选择一个版面
------------------
公告/注意事项
& &新闻和通知
& &校园社团支持
& && &华东校区
& && &华南校区
& && &华北校区
& && &华中校区
& && &东北校区
& && &西北校区
& && &港澳台校区
& && &国外校区
& &软件推荐
& &非常任务
系统安装区
& &教学和常见问答
& && &课堂教学和培训
& &初学者园地 - 16.10 - Yakkety Yak
& &系统安装和升级
& && &新立得和软件源
& && &Wubi安装讨论
& &启动和引导
& &网卡问题以及网络和拨号
& && &校园网拨号
& &笔记本、UMPC支持
& &手机和平板
& && &Ubuntu移动应用开发
& &常用硬件支持
& &系统架构支持
配置美化区
& &字体美化和中文支持
& && &个人配置文件存放点
& &桌面特效
& &窗口管理器
& &屏幕抓图
& &办公、图像、机械电子设计等
& && &Vim和Emacs
& &因特网相关软件
& &影音多媒体
& &Wine及其分支
& &游戏和游戏模拟器
& &虚拟机和虚拟化
& &其它类软件
& &开源模板库
服务器管理
& &服务器基础应用
& &数据库管理
& &服务器维护和硬件相关
& &Ubuntu VPS
参与Ubuntu开发
& &软件和文档翻译
& &编译或打包
& &Ubuntu错误报告
程序设计区
& &Shell脚本
& &GTK+和QT
& &软件/网站开发
& && &Python/Php/Perl
& && &C/C++/Java
& &内核及嵌入式开发
& &开源小工具
& &Ubuntu 17.04
& &Ubuntu 16.04 LTS
& &Ubuntu 14.04 LTS
& &Ubuntu 12.04 LTS
& &Ubuntu 10.04 LTS
& &老旧版本支持
& && &Ubuntu 15.10
& && &Ubuntu 15.04
& && &Ubuntu 14.10
衍生发行版
& &Ubuntu GNOME
& &Kubuntu
& &Xubuntu & Lubuntu
& &Ubuntu中文衍生版
& && &UbuntuKylin
& &Ubuntu国外衍生版
& && &Mint
& &Ubuntu衍生版制作
& &其它类Unix OS发行版
& && &Arch发行版
& && &Debian发行版
& && &OpenSUSE发行版
& && &Deepin
& &深度PK版
& &Ubuntu故事和感慨
& &Full Circle开源杂志
分享交流区
& &同城交流
& &线下活动专版
& &Ubuntu宣传推广
& &论坛管理
& && && &Ubuntu中文网上商店linux(ubuntu)怎么模拟一个麦克风使用音频输出作为输入?_问答_ThinkSAAS
linux(ubuntu)怎么模拟一个麦克风使用音频输出作为输入?
linux(ubuntu)怎么模拟一个麦克风使用音频输出作为输入?
相当于把麦克风对准音响。
最好使用C++实现,不过也可以推荐有这个功能的软件。
建议题主搜索一下“啸叫”和正激励。
麦克风对准音响是一个死循环,很快整套系统就烧掉了
添加你想要问的问题
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信麦克风不能启用,懂的人进来瞧瞧 - 查看主题 & Ubuntu中文论坛
&[ 12 篇帖子 ]&
&文章标题 : 麦克风不能启用,懂的人进来瞧瞧发表于 :
23:14帖子: 40
送出感谢: 0 次
接收感谢: 0 次
看图,音频的选项本来应该是这样的(这是办公室的电脑),但是家里的电脑上(笔记本,acer4745),不论怎么调,也见不到图中画圈处的选项,不知道怎么办好。。结果就是麦克风怎么都不能用。求解决方案
shengyin.png [ 20.94 KiB | 被浏览 2165 次 ]
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
21:55帖子: 58428地址: 长沙
没人说一定要可以选择这个吧。空白的没关系。只要不静音,音量适合就可以啊或者命令amixer set Mic unmuteamixer set Mic 60%
_________________● 鸣学
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
21:15帖子: 11
送出感谢: 0 次
接收感谢: 0 次
呵呵,我的笔记本也有这个问题,貌似opensuse没这个问题。。。至今郁闷ING
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
23:14帖子: 40
送出感谢: 0 次
接收感谢: 0 次
amixer set Mic unmuteamixer: Unable to find simple control 'Mic',0----------------------------一直都不行,今天内核都更新了,麦克风还是不能录音,录音机软件只能内录。和图上的“内部音频”相一致。。。麦克风倒底怎样才能启用啊。。
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
12:15帖子: 1026
送出感谢: 0 次
接收感谢: 0 次
同问,同困扰
_________________oneleaf 的教导记心间:
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
17:24帖子: 1989
大概你需要调整的是“抓取 Capture”
_________________latex 是个命令集,不是软件,所以在应用程序里找不到,也不存在启动。使用的话,自己写个 .tex 的文件,用 latex 编译。 的 4楼 有入门教程PDF下载。
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
21:55帖子: 58428地址: 长沙
● amixer scontrolsSimple mixer control 'Master',0Simple mixer control 'PCM',0Simple mixer control 'Mic',0Simple mixer control 'Mic Boost',0Simple mixer control 'IEC958',0Simple mixer control 'IEC958 Default PCM',0Simple mixer control 'Beep',0Simple mixer control 'Capture',0Simple mixer control 'Mix',0Simple mixer control 'Caller ID',0Simple mixer control 'External Amplifier',0Simple mixer control 'Internal Mic',0Simple mixer control 'Off-hook',0man amixer
_________________● 鸣学
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
12:15帖子: 1026
送出感谢: 0 次
接收感谢: 0 次
在国外的论坛上翻到的方法,仅适用部分acer本子,需要通用方案的查看我最后的链接首先代码:sudo lshw -C multimedia查看“Configuration”后面显示的是什么组件(比如, snd_hda_intel).(简单的翻译,不过我的显示的是“configuration: driver=HDA Intel latency=0”)接着代码:$ sudo gedit /etc/modprobe.d/options添加这么一句代码:options snd-hda-intel model=acer-aspire-4930g其中“acer-aspire-4930g”要按照笔记本的情况设置,我的acer aspire 4736g使用这个配置就可以正常了,也可以试试“acer”或者“acer-aspire”这两个配置,当然也可以试试你自己本子的型号,但是不一定有相应配置存在。我的4736g按照这个设置之后,microphone1是麦克风插口,microphone2是内置麦克风。同时声音输出里面不再有speaker、headphone的选项参考这里
_________________oneleaf 的教导记心间:
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
20:26帖子: 82
送出感谢: 0 次
接收感谢: 0 次
wheat0r 写道:在国外的论坛上翻到的方法,仅适用部分acer本子,需要通用方案的查看我最后的链接首先代码:sudo lshw -C multimedia查看“Configuration”后面显示的是什么组件(比如, snd_hda_intel).(简单的翻译,不过我的显示的是“configuration: driver=HDA Intel latency=0”)接着代码:$ sudo gedit /etc/modprobe.d/options添加这么一句代码:options snd-hda-intel model=acer-aspire-4930g其中“acer-aspire-4930g”要按照笔记本的情况设置,我的acer aspire 4736g使用这个配置就可以正常了,也可以试试“acer”或者“acer-aspire”这两个配置,当然也可以试试你自己本子的型号,但是不一定有相应配置存在。我的4736g按照这个设置之后,microphone1是麦克风插口,microphone2是内置麦克风。同时声音输出里面不再有speaker、headphone的选项参考这里帅哥...后面那个链接好像是法文...不是英文耶..看不懂
_________________ACER ASPIRE 4740GCPU:INTEL core i3GPU:NVDIA geforce 310MOS:
Ubuntu 10.04--------------------------------------I love Ubuntu,I love Linux...
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
12:15帖子: 1026
送出感谢: 0 次
接收感谢: 0 次
帅哥就算了是法文的,但是大概还是能看懂一点的
_________________oneleaf 的教导记心间:
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
17:24帖子: 1989
ls这个链接讲的还是8.04。
这个问题,看命令就是加载HDA声卡(法语不懂)。我不知道ubuntu是不是用alsamixer的。如果是的,看看自己有没有alsamixer。如果有驱动,就是加载不上去终极方案引用:1。终端输入代码:sudo gedit /etc/modprobe.d/alsa-base.conf2。然后在最后添加代码:代码:options snd-hda-intel model=laptop
_________________latex 是个命令集,不是软件,所以在应用程序里找不到,也不存在启动。使用的话,自己写个 .tex 的文件,用 latex 编译。 的 4楼 有入门教程PDF下载。
&文章标题 : Re: 麦克风不能启用,懂的人进来瞧瞧发表于 :
12:15帖子: 1026
送出感谢: 0 次
接收感谢: 0 次
就是为了加载声卡在不同机器上的配置方案不同的配置有不同的效果,选择合适的配置添加就可以
_________________oneleaf 的教导记心间:
显示帖子 : 全部帖子1天7天2周1个月3个月6个月1年&排序 作者发表时间文章标题 升序降序&
&[ 12 篇帖子 ]&
正在浏览此版面的用户:没有注册用户 和 0 位游客
您 不能 在这个版面发表主题您 不能 在这个版面回复主题您 不能 在这个版面编辑帖子您 不能 在这个版面删除帖子您 不能 在这个版面提交附件
选择一个版面
------------------
公告/注意事项
& &新闻和通知
& &校园社团支持
& && &华东校区
& && &华南校区
& && &华北校区
& && &华中校区
& && &东北校区
& && &西北校区
& && &港澳台校区
& && &国外校区
& &软件推荐
& &非常任务
系统安装区
& &教学和常见问答
& && &课堂教学和培训
& &初学者园地 - 16.10 - Yakkety Yak
& &系统安装和升级
& && &新立得和软件源
& && &Wubi安装讨论
& &启动和引导
& &网卡问题以及网络和拨号
& && &校园网拨号
& &笔记本、UMPC支持
& &手机和平板
& && &Ubuntu移动应用开发
& &常用硬件支持
& &系统架构支持
配置美化区
& &字体美化和中文支持
& && &个人配置文件存放点
& &桌面特效
& &窗口管理器
& &屏幕抓图
& &办公、图像、机械电子设计等
& && &Vim和Emacs
& &因特网相关软件
& &影音多媒体
& &Wine及其分支
& &游戏和游戏模拟器
& &虚拟机和虚拟化
& &其它类软件
& &开源模板库
服务器管理
& &服务器基础应用
& &数据库管理
& &服务器维护和硬件相关
& &Ubuntu VPS
参与Ubuntu开发
& &软件和文档翻译
& &编译或打包
& &Ubuntu错误报告
程序设计区
& &Shell脚本
& &GTK+和QT
& &软件/网站开发
& && &Python/Php/Perl
& && &C/C++/Java
& &内核及嵌入式开发
& &开源小工具
& &Ubuntu 17.04
& &Ubuntu 16.04 LTS
& &Ubuntu 14.04 LTS
& &Ubuntu 12.04 LTS
& &Ubuntu 10.04 LTS
& &老旧版本支持
& && &Ubuntu 15.10
& && &Ubuntu 15.04
& && &Ubuntu 14.10
衍生发行版
& &Ubuntu GNOME
& &Kubuntu
& &Xubuntu & Lubuntu
& &Ubuntu中文衍生版
& && &UbuntuKylin
& &Ubuntu国外衍生版
& && &Mint
& &Ubuntu衍生版制作
& &其它类Unix OS发行版
& && &Arch发行版
& && &Debian发行版
& && &OpenSUSE发行版
& && &Deepin
& &深度PK版
& &Ubuntu故事和感慨
& &Full Circle开源杂志
分享交流区
& &同城交流
& &线下活动专版
& &Ubuntu宣传推广
& &论坛管理
& && && &Ubuntu中文网上商店linux(13)
今天要在linux下搞音频编程,在网上查阅了一下资料,网上很多资料都是在linux下直接对/dev/dsp进行编程的,因为在以往的linux系统中,我们是可以通过cat &xxx.wav /dev/dsp 来很容易的播放一个音频文件,在应用程序中,也可以直接操作/dev/dsp,实现声音的播放:打开-&写入(实际上就能播放)-&关闭。
然而在换成了ubuntu-12.04&LST后,我发现/dev中根本找不到dsp,之前直接操作/dev/dsp的程序都无法正常运行,而是&can't&find&/dev/dsp.
经过我再三查找,发现现在基本上都不用dsp了,大多数人都在用ALSA音频编程(其实我也是个菜鸟)。首先介绍一下一些关于ALSA编程的知识:
1、GNU/Linux 系统下三大主流声卡驱动程序集:
Linux 有三个主流的声卡驱动程序集:OSS/Lite(也称为OSS/Free)、OSS/Full
(商业软件)、ALSA(自由软件)。
OSS/Lite 是现在linux内核中自带的声卡驱动程序集,最初由 Hannu Savolainen
开发。后来 Hannu 跑去开发 Open Sound System(也就是上面所说的OSS/Full)。
由于 Hannu 的“逃跑”,RH 资助 Alan Cox 增强 Hannu 开发的驱动程序,并使它们
完全模块化。现在 Alan Cox 是内核声卡驱程集的维护人。OSS/Lite 从kernel-2.0开
始并入内核,现在大家使用的声卡驱程默认都是OSS/Lite中的。
OSS/Full 是由 4Front Technologies 开发并销售的商业软件。它可以驱动很多
声卡并且可以用在很多 UNIX 系统中。OSS/Full 完全兼容以前基于 OSS/Lite 开发
的应用程序。作为一个商业软件,你虽然可以使用它,但是你得不到它的源代码,并且
你必须为此而付钱。
ALSA 是linux内核的下一代标准声卡驱动集。开始时 Jaroslav Kysela 等人为
Gravis UltraSound Card 开发驱动程序,后来该计划改名为 ALSA「先进的linux音频
体系」,因为他们认为 ALSA 比原来内核中的 OSS/Lite 驱动程序集更优秀,完全可以
代替 OSS/Lite。他们是对的,ALSA 支持的声卡比 OSS/Lite 多,完全兼容以前基于
OSS 开发的程序,SMP(多处理器) 与 线程安全设计,并且从 2.5 分支的内核开始,
ALSA 的驱动程序集开始并入内核,大家可以在今年的 2.6 版本的内核中看到使用它们。
2、为什么要使用 ALSA 开发音频程序
首先,ALSA 是 linux 以后声卡驱动程序的标准,OSS/Lite 迟早会从内核中去除。
开发基于 ALSA 的音频程序可以保证以后的兼容。
其次,我们简单比较一下开发基于 OSS 与 ALSA 的方法。
OSS 向应用程序提供了一系列的系统接口。开发基于 OSS 的应用程序需要使用
open,close,ioctl,read,write 等低级系统调用来完成音频设备的控制、音频流的输入
而 ALSA 则为应用程序开发人员提供了一个优秀的音频库。利用该音频库,开发
人员可以方便快捷地开发出自己的应用程序,细节则留给音频库内部处理。当然 ALSA
也提供了类似于 OSS 的系统接口,不过 ALSA 的开发者建议应用程序开发者使用音频
库而不是驱程API。
3、那么我该从何开始呢
第一步当然是安装 ALSA 驱动程序与音频库。
当前 ALSA 有两个分支,一个是以前的0.5版本,一个是现在的0.9。ALSA的开发者
已经不支持0.5版本了,所以我们要使用0.9。大家可以在 ALSA 的主页
上下载安装。这个页面上的信息对大家安装很有用:
,建议先浏览一下。
第二步是参考文档与例子。
在 ALSA 的文档页面上有两篇为应用程序开发者提供的文章:
ALSA 0.9.0 HOWTO [
Howto use the ALSA API [
当然,还有音频库API的在线参考:
在开发过程中大家肯定会遇到问题或者困难,这时请教跟讨论就少不了了。所以要
做的第三步就是订阅 ALSA 的邮件列表了: alsa-devel@lists.sourceforge.net 。或者
你 E 文不好的话,可以在这里跟别人讨论一下。不过不要期望过高,国内开发 ALSA
音频程序的人本来就少,能来这里的人就更少了。
要是你已经完成以上几步的话,那么你就应该开始开发了。
4.&ALSA设备文件结构
我们从alsa在linux中的设备文件结构开始我们的alsa之旅. 看看我的电脑中的alsa驱动的设备文件结构:
&cd /dev/snd
crw-rw----+ 1 root audio 116, 8
21:38 controlC0
crw-rw----+ 1 root audio 116, 4
21:38 midiC0D0
crw-rw----+ 1 root audio 116, 7
21:39 pcmC0D0c
crw-rw----+ 1 root audio 116, 6
21:56 pcmC0D0p
crw-rw----+ 1 root audio 116, 5
21:38 pcmC0D1p
crw-rw----+ 1 root audio 116, 3
crw-rw----+ 1 root audio 116, 2
21:38 timer
&&& 我们可以看到以下设备文件:
controlC0 --&&&&&&&&&&&&&&&&& 用于声卡的控制,例如通道选择,混音,麦克风的控制等midiC0D0& --&&&&&&&&&&&&&&&&&用于播放midi音频pcmC0D0c --〉&&&&&&&&&&&&&& 用于录音的pcm设备pcmC0D0p --〉&&&&&&&&&&&&&& 用于播放的pcm设备seq& --〉&&&&&&&&&&&&&&&&&&&&&&& 音序器timer --〉&&&&&&&&&&&&&&&&&&&&&& 定时器
其中,C0D0代表的是声卡0中的设备0,pcmC0D0c最后一个c代表capture,pcmC0D0p最后一个p代表playback,这些都是alsa-driver中的命名规则。从上面的列表可以看出,我的声卡下挂了6个设备,根据声卡的实际能力,驱动实际上可以挂上更多种类的设备,在include/sound/core.h中,定义了以下设备类型:
[c-sharp]&
&通常,我们更关心的是pcm和control这两种设备。
5.一些例子,这些例子在官方文档也有,请自行查阅:
1.)显示一些PCM的类型和格式:
#include &iostream&
#include &alsa/asoundlib.h&
int main()
&&&&&& std::cout && &ALSA library version: & && SND_LIB_VERSION_STR && std::
&&&&&& std::cout && &PCM stream types: & && std::
&&&&&& for (int val=0; val &= SND_PCM_STREAM_LAST; ++val)
&&&&&&&&&&&&& std::cout && snd_pcm_stream_name((snd_pcm_stream_t)val) && std::
&&&&&& std::cout && std::
&&&&&& std::cout && &PCM access types: & && std::
&&&&&& for (int val=0; val &= SND_PCM_ACCESS_LAST; ++val)
&&&&&&&&&&&&& std::cout && snd_pcm_access_name((snd_pcm_access_t)val) && std::
&&&&&& std::cout && std::
&&&&&& std::cout && &PCM subformats: & && std::
&&&&&& for (int val=0; val &= SND_PCM_SUBFORMAT_LAST; ++val)
&&&&&&&&&&&&& std::cout && snd_pcm_subformat_name((snd_pcm_subformat_t)val) && & (& && snd_pcm_subformat_description((snd_pcm_subformat_t)val) && &)& && std::
&&&&&& std::cout && std::
&&&&&& std::cout && &PCM states: & && std::
&&&&&& for (int val=0; val &= SND_PCM_STATE_LAST; ++val)
&&&&&&&&&&&&& std::cout && snd_pcm_state_name((snd_pcm_state_t)val) && std::
&&&&&& std::cout && std::
&&&&&& std::cout && &PCM formats: & && std::
&&&&&& for (int val=0; val &= SND_PCM_FORMAT_LAST; ++val)
&&&&&&&&&&&&& std::cout && snd_pcm_format_name((snd_pcm_format_t)val) && & (& && snd_pcm_format_description((snd_pcm_format_t)val) && &)& && std::
&&&&&& std::cout && std::
2.)打开PCM设备和设置参数
#include &iostream&
#include &alsa/asoundlib.h&
int main()
&&&&&& int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& snd_pcm_t*&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& snd_pcm_hw_params_t*&&&&&
&&&&&& unsigned int&&&&&&&&&&&&&&&&& val, val2;
&&&&&& int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& snd_pcm_uframes_t&&&&&&&&&&&&
&&&&&& if ( (rc = snd_pcm_open(&handle, &default&, SND_PCM_STREAM_PLAYBACK, 0)) & 0)
&&&&&&&&&&&&& std::cerr && &unable to open pcm devices: & && snd_strerror(rc) && std::
&&&&&&&&&&&&& exit(1);
&&&&&& snd_pcm_hw_params_alloca(&params);
&&&&&& snd_pcm_hw_params_any(handle, params);
&&&&&& snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED);
&&&&&& snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16_LE);
&&&&&& snd_pcm_hw_params_set_channels(handle, params, 2);
&&&&&& val = 44100;
&&&&&& snd_pcm_hw_params_set_rate_near(handle, params, &val, &dir);
&&&&&& if ( (rc = snd_pcm_hw_params(handle, params)) & 0)
&&&&&&&&&&&&& std::cerr && &unable to set hw parameters: & && snd_strerror(rc) && std::
&&&&&&&&&&&&& exit(1);
&&&&&& std::cout && &PCM handle name = & && snd_pcm_name(handle) && std::
&&&&&& std::cout && &PCM state = & && snd_pcm_state_name(snd_pcm_state(handle)) && std::
&&&&&& snd_pcm_hw_params_get_access(params, (snd_pcm_access_t *)&val);
&&&&&& std::cout && &access type = & && snd_pcm_access_name((snd_pcm_access_t)val) && std::
&&&&&& snd_pcm_hw_params_get_format(params, (snd_pcm_format_t*)(&val));
&&&&&& std::cout && &format = '& && snd_pcm_format_name((snd_pcm_format_t)val) && &' (& && snd_pcm_format_description((snd_pcm_format_t)val) && &)& && std::
&&&&& snd_pcm_hw_params_get_subformat(params, (snd_pcm_subformat_t *)&val);
&&&&& std::cout && &subformat = '& &&
&&& snd_pcm_subformat_name((snd_pcm_subformat_t)val) && &' (& && snd_pcm_subformat_description((snd_pcm_subformat_t)val) && &)& && std::
&&&&& snd_pcm_hw_params_get_channels(params, &val);
&&&&& std::cout && &channels = & && val && std::
&&&&& snd_pcm_hw_params_get_rate(params, &val, &dir);
&&&&& std::cout && &rate = & && val && & bps& && std::
&&&&&& snd_pcm_hw_params_get_period_time(params, &val, &dir);
&&&&& std::cout && &period time = & && val && & us& && std::
&&&&& snd_pcm_hw_params_get_period_size(params, &frames, &dir);
&&&&& std::cout && &period size = & && static_cast&int&(frames) && & frames& && std::
&&&&&& snd_pcm_hw_params_get_buffer_time(params, &val, &dir);
&&&&& std::cout && &buffer time = & && val && & us& && std::
&&&&&& snd_pcm_hw_params_get_buffer_size(params, (snd_pcm_uframes_t *) &val);
&&&&& std::cout && &buffer size = & && val && & frames& && std::
&&&&& snd_pcm_hw_params_get_periods(params, &val, &dir);
&&&&& std::cout && &periods per buffer = & && val && & frames& && std::
&&&&&& snd_pcm_hw_params_get_rate_numden(params, &val, &val2);
&&&&& std::cout && &exact rate = & && val/val2 && & bps& && std::
&&&&& val = snd_pcm_hw_params_get_sbits(params);
&&&&& std::cout && &significant bits = & && val && std::
&&&&& snd_pcm_hw_params_get_tick_time(params, &val, &dir);
&&&&& std::cout && &tick time = & && val && & us& && std::
&&&&& val = snd_pcm_hw_params_is_batch(params);
&&&&& std::cout && &is batch = & && val && std::
&&&&& val = snd_pcm_hw_params_is_block_transfer(params);
&&&&& std::cout && &is block transfer = & && val && std::
&&&&& val = snd_pcm_hw_params_is_double(params);
&&&&& std::cout && &is double = & && val && std::
&&&&&& val = snd_pcm_hw_params_is_half_duplex(params);
&&&&& std::cout && &is half duplex = & && val && std::
&&&&&& val = snd_pcm_hw_params_is_joint_duplex(params);
&&&&& std::cout && &is joint duplex = & && val && std::
&&&&&& val = snd_pcm_hw_params_can_overrange(params);
&&&&& std::cout && &can overrange = & && val && std::
&&&&& val = snd_pcm_hw_params_can_mmap_sample_resolution(params);
&&&&& std::cout && &can mmap = & && val && std::
&&&&& val = snd_pcm_hw_params_can_pause(params);
&&&&& std::cout && &can pause = & && val && std::
&&&&&& val = snd_pcm_hw_params_can_resume(params);
&&&&& std::cout && &can resume = & && val && std::
&&&&& val = snd_pcm_hw_params_can_sync_start(params);
&&&&& std::cout && &can sync start = & && val && std::
&&&&& snd_pcm_close(handle);
&&&&& return 0;
3.)一个简单的声音播放程序
#include &iostream&
#include &alsa/asoundlib.h&
int main()
&&&&&& long&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& snd_pcm_t*&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& snd_pcm_hw_params_t*&&&&&
&&&&&& unsigned int&&&&&&&&&&&&&&&&&
&&&&&& int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& snd_pcm_uframes_t&&&&&&&&&&&&
&&&&&& char*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& if ( (rc = snd_pcm_open(&handle, &default&, SND_PCM_STREAM_PLAYBACK, 0)) & 0)
&&&&&&&&&&&&& std::cerr && &unable to open pcm device: & && snd_strerror(rc) && std::
&&&&&&&&&&&&& exit(1);
&&&&&& snd_pcm_hw_params_alloca(&params);
&&&&&& snd_pcm_hw_params_any(handle, params);
&&&&&& snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED);
&&&&&& snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16_LE);
&&&&&& snd_pcm_hw_params_set_channels(handle, params, 2);
&&&&&& val = 44100;
&&&&&& snd_pcm_hw_params_set_rate_near(handle, params, &val, &dir);
&&&&&& frames = 32;
&&&&&& snd_pcm_hw_params_set_period_size_near(handle, params, &frames, &dir);
&&&&&& if ( (rc = snd_pcm_hw_params(handle, params)) & 0)
&&&&&&&&&&&&& std::cerr && &unable to set hw paramseters: & && snd_strerror(rc) && std::
&&&&&&&&&&&&& exit(1);
&&&&&& snd_pcm_hw_params_get_period_size(params, &frames, &dir);
&&&&&& size = frames * 4;
&&&&&& buffer = new char[size];
&&&&&& snd_pcm_hw_params_get_period_time(params, &val, &dir);
&&&&&& loops = 5000000 /
&&&&&& while (loops & 0) {
&&&&&&&&&&&&& loops--;
&&&&&&&&&&&&& if ( (rc = read(0, buffer, size)) == 0)
&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&& std::cerr && &end of file on input& && std::
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&& }
&&&&&&&&&&&&& else if (rc != size)
&&&&&&&&&&&&&&&&&&&& std::cerr && &short read: read & && rc && & bytes& && std::
&&&&&&&&&&&&& if ( (rc = snd_pcm_writei(handle, buffer, frames)) == -EPIPE)
&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&& std::cerr && &underrun occurred& && std::
&&&&&&&&&&&&&&&&&&&& snd_pcm_prepare(handle);
&&&&&&&&&&&&& }
&&&&&&&&&&&&& else if (rc & 0)
&&&&&&&&&&&&&&&&&&&& std::cerr && &error from writei: & && snd_strerror(rc) && std::
&&&&&&&&&&&&& else if (rc != (int)frames)
&&&&&&&&&&&&&&&&&&&& std::cerr && &short write, write & && rc && & frames& && std::
&&&&&& snd_pcm_drain(handle);
&&&&&& snd_pcm_close(handle);
&&&&&& free(buffer);
&&&&&& return 0;
4.)一个简单的记录声音的程序
#include &iostream&
#include &alsa/asoundlib.h&
int main()
&&&&&& long&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& snd_pcm_t*&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& snd_pcm_hw_params_t*&&&&&
&&&&&& unsigned int&&&&&&&&&&&&&&&&&
&&&&&& int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& snd_pcm_uframes_t&&&&&&&&&&&&
&&&&&& char*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& if ( (rc = snd_pcm_open(&handle, &default&, SND_PCM_STREAM_CAPTURE, 0)) & 0)
&&&&&&&&&&&&& std::cerr && &unable to open pcm device: & && snd_strerror(rc) && std::
&&&&&&&&&&&&& exit(1);
&&&&&& snd_pcm_hw_params_alloca(&params);
&&&&&& snd_pcm_hw_params_any(handle, params);
&&&&&& snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED);
&&&&&& snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16_LE);
&&&&&& snd_pcm_hw_params_set_channels(handle, params, 2);
&&&&&& val = 44100;
&&&&&& snd_pcm_hw_params_set_period_size_near(handle, params, &frames, &dir);
&&&&&& if ( (rc = snd_pcm_hw_params(handle, params)) & 0)
&&&&&&&&&&&&& std::cerr && &unable to set hw parameters: & && snd_strerror(rc) && std::
&&&&&&&&&&&&& exit(1);
&&&&&& snd_pcm_hw_params_get_period_size(params, &frames, &dir);
&&&&&& size = frames * 4;
&&&&&& buffer = new char[size];
&&&&&& snd_pcm_hw_params_get_period_time(params, &val, &dir);
&&&&&& loops = 5000000 /
&&&&&& while (loops & 0)
&&&&&&&&&&&&& loops --;
&&&&&&&&&&&&& rc = snd_pcm_readi(handle, buffer, frames);
&&&&&&&&&&&&& if (rc == -EPIPE)
&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&& std::cerr && &overrun occurred& && std::
&&&&&&&&&&&&&&&&&&&& snd_pcm_prepare(handle);
&&&&&&&&&&&&& }
&&&&&&&&&&&&& else if (rc & 0)
&&&&&&&&&&&&&&&&&&&& std::cerr && &error from read: & && snd_strerror(rc) && std::
&&&&&&&&&&&&& else if ( rc != (int)frames)
&&&&&&&&&&&&&&&&&&&& std::cerr && &short read, read & && rc && & frames& && std::
&&&&&&&&&&&&& rc = write(1, buffer, size);
&&&&&&&&&&&&& if (rc != size)
&&&&&&&&&&&&&&&&&&&& std::cerr && &short write: wrote & && rc && & bytes& && std::
&&&&&& snd_pcm_drain(handle);
&&&&&& snd_pcm_close(handle);
&&&&&& free(buffer);
&&&&&& return 0;
注意:编译的时候记得加上参数,g++ xxx.cpp -o xxx -lasound;如果编译时出现如下错误:
缺少一个库:
apt-get install libasound2-dev
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:21783次
排名:千里之外
原创:13篇
转载:16篇

我要回帖

更多关于 bosec5如何使用麦克风 的文章

 

随机推荐