当前位置:   article > 正文

Linux 声音系统_audiolinux

audiolinux

驱动级

OSS 和ALSA

OSS(Open Sound System,开放声音系统),老系统中的音频框架

ALSA(Advanced Linux Sound Architecture,高级Linux声音体系),新系统中的音频框架,用于替代老的OSS。

两者结构都差不多,但ALSA有更多的优点,具体比较参考 https://blog.csdn.net/longwang155069/article/details/53256751

只需要理解底层驱动层是ALSA框架就行。下图是转载的网络上的ALSA结构示意图

ALSA工具集也带一些命令行工具用于对声卡的操作,例如aplay arecord amixer alsamixer 等等,用于测试声卡以及实现简单的播放录制。这些工具工作于alsa,可用于诊断驱动配置问题。

PulseAudio

pulseaudio,在alsa lib上又封装了一层,增加了很多pulseaudio自己定义的插件,这样大大扩展alsa lib的功能,同时混音方面也加强了

简单的来说就是增强了alsa lib的功能,下面的流程摘抄百度贴吧大神

https://tieba.baidu.com/p/3790145023?red_tag=3544148596

应用之前是app(aplay之类)-->alsa lib --->alsa driver--->发声音。
现在是app--->pulseaudio--->alsa lib--->alsa driver--->发声音。

或者为了兼容之前的老的软件,Pulseaudio还支持以alsalib做为自己的输入,输出的还可以用来做为输入,挺绕,但是挺好理解,兼容之前只支持alsa lib输出的程序。

为了兼容之前的app(只支持alsa lib的程序)
app--->alsa lib---> alsa lib的pulseaudio插件--->pulseaudio--->alsa lib--->alsa driver--->发声音。
上面这个图应用程序是alsa lib接口,不用改,但是声音又从pulseaudio过一次,享受了pulseaudio的功能。

更复杂一点是 

pulseaudio分client和server, 所以把这个区分出来后,完整的图应该是:
app--->alsa lib---> alsa lib的pulseaudio插件--->pulseaudio client--->pulseaudio server--->alsa lib--->alsa driver--->发声音。

Phonon----->gstreamer

这些属于更上层,具体的可以参考这个连接https://blog.csdn.net/meizum10/article/details/17437959

gstreamer介于软件层和音频输入层之间,优先于pulseaudio。gstreamer与众不同之处在于他不只是个音频处理框架,通过安 装解码器,你还可以通过他来播放音频视频文件。

程序音频最长的调用方式可以列出如下:

APP-->Phonon----->gstreamer -->pulseaudio--->alsa lib--->alsa driver--->发声音。

由于搞开发的这帮人极度迷信代码复用以及软件分层思想,所以linux的音频系统就搞的有点复杂,然后软件开发的音频系统出了问题,先要搞清楚软件到底工作在哪一层。好在现在的linux发行版不管是对图形还是多媒体,支持都非常完美了。绝大多数情况下,音频系统自然就是可以正常使用的。

HDA AC97

PC上的音频标准,现在基本都是HDA了,不过不管是AC97还是HDA标准,带头大哥都是intel真是厉害啊。搜了一下这两者区别,感觉结构上没啥大区别,HDA是新标准,功能更强大了。下面是网上嫖的一张图

可以看到,主板上集成的是HDA的控制器,下面挂的HDA link上可以挂不通的codec(D/A和A/D).

所以其实在linux终端查看声卡,lspci 能看到的

就是上面这个图里面控制器,至于codec,并没列出来 ,codec可以用aplay -l 或者arecord -l 来查看

电脑声音有问题,可以用alsamixer进行查看或者调整看是否有声音,或者aplay arecord进行播放或者录音验证声卡驱动功能。

默认alsamixer 调整的声卡和chip都是Pulseaudio,可以按F6进行声卡选取

默认是Pulseaudio,选HDA intel PCH,将可以对物理声卡进行调整。

实际的问题,需要实际分析,alsa提供的工具日常用的最多就是alsamixer aplay arecord

Pulseaudio同样提供工具, 在debian系的系统可以用 dpkg -L pulseaudio-utils 命令来查看所带的工具,有录音parecord,播放 paplay ,或者通用的pacat 以及pactl 等等。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/325998
推荐阅读
相关标签
  

闽ICP备14008679号