Ram*_*rez 15 audio jack skype pulseaudio
Linux 系统在配置音频设备方面一直存在历史(> 5 年)问题,尤其是带有组合插孔的普通耳机。由于很多人想用自己喜欢的linux系统进行视频聊天,各种论坛上都有令人沮丧的未解决问题的记录。
我知道外部麦克风的驱动程序(在带有组合插孔的耳机中)当前不可用(或未开发(?))。
因此,用户应该能够使用内部麦克风进行输入和耳机进行输出。
沿着这条线,我陷入了困境(挖掘了长达 5-6 年的旧问题)并尝试了很多事情,但最终都没有成功(我使用的是普通的组合插孔耳机和运行 ubuntu 16.04 的 hp 笔记本电脑)。
许多人以不同的方式报告了这个问题。这是经常发生的事情..
内置麦克风和扬声器运行良好。
pacmd list-cards
显示:
ports:
analog-input-internal-mic: Internal Microphone (priority 8900, latency offset 0 usec, available: unknown)
properties:
device.icon_name = "audio-input-microphone"
analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: no)
properties:
device.icon_name = "audio-input-microphone"
analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
properties:
device.icon_name = "audio-speakers"
analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: no)
properties:
device.icon_name = "audio-headphones"
Run Code Online (Sandbox Code Playgroud)
通过耳机输出效果很好。但是外部麦克风(位于耳机上)不起作用(口吃的噪音,驱动程序不存在,好吧),但是内部麦克风也被“拔掉”了。(因此无法录制任何声音。)
pacmd list-cards
显示:
ports:
analog-input-internal-mic: Internal Microphone (priority 8900, latency offset 0 usec, available: no)
properties:
device.icon_name = "audio-input-microphone"
analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: yes)
properties:
device.icon_name = "audio-input-microphone"
analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: no)
properties:
device.icon_name = "audio-speakers"
analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: yes)
properties:
device.icon_name = "audio-headphones"
Run Code Online (Sandbox Code Playgroud)
所以,耳机提供输出,这很好,但是有没有办法强制内部麦克风输入?(不知何故available: yes
)
dir*_*rkt 22
Linux 没有“配置音频设备的历史问题”。问题实际上是设备制造商,主要是笔记本电脑,他们只是在笔记本电脑上预装了 Windows 驱动程序,可以准确地配置这些驱动程序来处理笔记本电脑硬件,因为制造商当然知道硬件是如何设置的。另一方面,制造商不想分享细节,不记录它们并保密;毕竟,他们提供了 Windows 驱动程序。这就是为什么通常笔记本电脑的所有非标准功能都必须通过痛苦而耗时的逆向工程才能在 Linux 下使用它们。
关于音频,基本上所有现代设备都使用 Intel HDA 架构,该架构是自描述的,并提供编解码器(模拟音频芯片)的图形表示。原则上,BIOS 应该提供“引脚配置”,即编解码器芯片的哪个引脚连接到内部扬声器和麦克风、线路输入、线路输出和耳机或耳机组合插孔。
但是,尤其是最近几年,制造商似乎没有必要正确配置 BIOS(毕竟他们已经提供了 Windows 驱动程序)。所以循环是:新的笔记本电脑型号问世,有人拥有实际的硬件和足够的技术理解,弄清楚 BIOS 是如何谎言的以及配置应该是什么样子,内核开发人员在处理这个问题的驱动程序,使用最新的驱动程序,使用相同硬件的其他人不会注意到并且很高兴。直到下一个模型出来,循环又开始了。与此同时,许多不满意的用户在它不起作用的情况下在互联网上到处留下他们的踪迹,在各地的论坛上提问,通常没有得到正确的答案。
所以是的,外部麦克风的驱动程序已经开发并可用(实际上,它们与编解码器的其余部分的驱动程序相同)。您可以通过检查内核源文件/sound/pci/hda/
和 grep 中的“怪癖”来查看累积的所有怪癖(非标准行为)。
这意味着,如果您的笔记本电脑的外部耳机麦克风无法正常工作,则必须有人(也许是您?)深入研究技术细节,使其正常工作,并将其报告给 ALSA 内核开发人员。
您可以查看编解码器芯片报告的有关其内部结构的内容
cat /proc/asound/card*/codec\#*
Run Code Online (Sandbox Code Playgroud)
这给出了内部图形,您可以手动跟踪它,或者尝试像codecgraph
可视化这样的程序(并不总是给出好的结果)。“引脚复合体”代表引脚。看看您拥有的那个,尝试猜测哪个可能代表外部麦克风,即使它的标签有误。使用hdajackretask
正确的标签,如果你已经确定了它的引脚(或猜测,直到你做的)。在驱动程序更新之前,有多种方法可以在启动时将此重新标记为默认值。
至于组合内置麦克风和耳机:ALSA 有一个混音器元素,称为“自动静音模式”。这将导致 ALSA 在插入或拔出耳机插孔时将内部麦克风/扬声器静音并取消外部麦克风/耳机静音(反之亦然)。在alsamixer
或 中禁用此amixer
功能,根据需要将内部和外部麦克风/扬声器/耳机静音和取消静音。
您也可以在 Pulseaudio: Start 中进行配置pavucontrol
,在输入和输出选项卡中选择正确的端口。
如果内部和外部“端口”都不可用,或者如果您想将其设为默认值,那也是可能的,尽管这样做有点麻烦:查看 中的文件/usr/share/pulseaudio/alsa-mixer/
,阅读解释它们如何工作的注释. 您需要为声卡进行新的“配置”,使用正确的 ALSA 混音器元素组合两个“路径”,一个用于内部麦克风,另一个用于外部耳机。这可能需要一些时间才能使其正常工作,Pulseaudio 在这方面不是很直观。
不,没有简单的方法可以做你想做的事;你得弄脏你的手。
小智 4
经过多次尝试和测试,我发现这个问题可以通过硬件而不是软件来解决。使用“USB 耳机/麦克风分配器”,我能够强制使用内部麦克风进行输入,使用耳机进行输出。
输出需要设置为“USB 音频设备”。
输入将是默认的内置内部扬声器。只需确保它已打开即可。
它也适用于 Skype。只需将输入和输出设置为默认并关闭麦克风的自动调节即可。