我正在构建一个基于 Linux 的音频流媒体,用于高品质音频。我有几个应用程序希望能够同时访问音频设备。(例如 shairport-sync、roon 和音乐播放器守护进程)
我发现混合ALSA 插件,可以将两个音频流混合到一个音频设备中。但是,混合要求我在定义 dmix 设备时设置采样率,并且我需要采样率根据从源输出的采样率而变化。
是否有允许在输入之间切换的插件?或者我在 dmix 中遗漏了什么?
答案1
你应该使用速度(汇率转换)或插头(自动转换)插件。请参阅alsa-lib 插件列表。
配置应该在位于用户主目录 ( .asoundrc
) 中的 alsa-lib 配置文件中完成。
速度
此插件转换流速率。输入和输出格式必须是线性的。
使用示例:
pcm.<name> {
type rate
slave <slave_name>
}
插头
该插件可根据要求转换频道、速率和格式。
使用示例:
pcm.<name> {
type plug
slave <slave_name>
}
使用 dmix 和自动转换插件的示例
# Overwrites 'default'
pcm.!default {
type plug
slave.pcm "dmixer"
}
pcm.dmixer {
type dmix
ipc_key 1024 # Any unique value for Interprocess Communication
slave {
pcm "hw:1,0"
period_size 1024
buffer_size 4096
rate 44100
}
}