如何同时将音频发送到耳机插孔和HDMI?


Answers:


7

没有提出完整的答案,但对此有一些想法。

让我们看一下硬件方面:不幸的是,原理图对Pi B +没有帮助,而对于Pi2甚至都不可用,因此我们暂时停留在B Rev 2.1。

耳机插孔的音频输出由PWM生成。直接从BCM2835的GPIO引脚40和45通过RC低通滤波器。(请参见第2页的原理图。)

另一方面,HDMI上的音频被认为是数字传输的。维基百科指出:“对于数字音频,如果HDMI设备具有音频,则需要实现基线格式:立体声(未压缩)PCM。” 实际上,之前提到的基于PWM的模拟音频不会馈入HDMI连接器。

因此,现在我们已经验证了一些旧消息:模拟耳机插孔与数字HDMI。以我的观点,这两个问题应分别和独立地处理,因此也应(准)同时处理。现在PulseAudio应该能够从一个源流式传输到多个声音硬件。我仍然想知道为什么在网络上找不到与此相关的内容。


我同意应该分别解决这些问题,我正在为一个树莓派工作的人问我,他们要求这样做,我向他们解释说我不相信这是可能的,但是我必须核实与更多地了解这个比我其他
Joker327

3

我也希望能够做同样的事情。至少我希望通过一些想法最终为合作发展做出贡献。

我想到的是,可能(并且应该)有两个并行加载的驱动程序模块实例,每个实例用于一条信号路径。但是,这将需要一些内核模块级别的参数,例如下面的理想示例,每个参数创建一个ALSA设备(示例中HDMI编号为0,耳机为3)。然后,您可以将声音发送到一个,另一个发送到另一个(或同时复制到两个)。

尝试使用google搜索snd_bcm2835模块源代码主页(以评估简单补丁的可行性),但是没有运气(和时间),所以我暂时放弃了。如果有人找到了源并提供了链接,我将再次进行研究。

注意 !!!以下只是内核模块加载命令的理想示例。在实际的Raspberry Pi软件中,不存在这样的参数(AFAIK)!

modprobe snd_bcm2835 out=hdmi alsa=0
modprobe snd_bcm2835 out=ear alsa=3

你好,欢迎光临!我也有兴趣
让它
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.