我的设置是 Vortexbox 2.3,一个基于 Fedora 的 Linux 音乐发行版。我有一个多通道声卡,来自 miniDSP 的 USBStreamer。我已经设置了单独的立体声设备,asound.conf
这样我就可以有多个squeezelite 实例播放到单独的输出通道。因为所有播放器只有一个时钟,所以音频需要具有相同的采样率。我的大部分音乐都是 44.1kHz,但也有一些是 48kHz,因此在播放 48kHz 文件时我需要进行一些重新采样。我已经解决了这个问题asound.conf
。然而,ALSA 似乎正在将所有内容重新采样到 44.1kHz,即使这是原始采样率,而不仅仅是播放器输出我预期的 48kHz。我希望无需重新采样即可播放原生 44.1 文件。我想处理 ALSA 中的采样率而不是播放器,这样我也可以添加其他播放器。
有没有办法让 ALSA 仅在速率不匹配时重新采样?
#
# Place your global alsa-lib configuration here...
#
#defaults.pcm.rate_converter "speexrate"
pcm_slave.miniDSP {
# pcm "hw:0,0"
pcm "hw:USBStreamer"
rate 44100 # fixed, because all dshare devices must use the same samplerate. Could use rate unchanged but not for here.
format S32_LE
channels 10
}
pcm.stereo_1_raw {
type plug
slave.pcm {
type dshare
ipc_key 662662
ipc_key_add_uid true
slave miniDSP
bindings [ 0 1 ]
}
}
pcm.stereo_2_raw {
type plug
slave.pcm {
type dshare
ipc_key 662662
ipc_key_add_uid true
slave miniDSP
bindings [ 2 3 ]
}
}
pcm.stereo_3_raw {
type plug
slave.pcm {
type dshare
ipc_key 662662
ipc_key_add_uid true
slave miniDSP
bindings [ 4 5 ]
}
}
pcm.stereo_4_raw {
type plug
slave.pcm {
type dshare
ipc_key 662662
ipc_key_add_uid true
slave miniDSP
bindings [ 6 7 ]
}
}
pcm.stereo_1_output {
type rate
slave {
pcm stereo_1_raw
rate 44100
}
#converter "speexrate_medium" This doesn't work for 4 channels.
converter "samplerate"
}
pcm.stereo_2_output {
type rate
slave {
pcm stereo_2_raw
rate 44100
}
converter "speexrate_medium"
}
pcm.stereo_3_output {
type rate
slave {
pcm stereo_3_raw
rate 44100
}
#converter "speexrate_medium"
converter "samplerate"
}
pcm.stereo_4_output {
type rate
slave {
pcm stereo_4_raw
rate 44100
}
#converter "speexrate_medium"
converter "samplerate"
}
答案1
该plug
插件rate
仅在需要时插入插件,但是当您rate
手动插入插件时,这就是您所得到的。
只需删除rate
插件即可;您可以stereo_x_raw
直接使用这些设备。 (对于重采样算法,您可以依赖默认设置。)