改变 ALSA 中的采样率

Tar*_*nfx 8 ubuntu alsa audio

我是计算机发烧友,我使用过 Windows(带有 ASIO4ALL)和 OSX 来播放音频。现在我将 Ubuntu 13 设为我的 HTPC/立体声音频。首先,我禁用了 Pulse 音频并将 GooMusicplayer 与 ALSA 一起使用。

我的 DAC 支持 24 位 96khz。我似乎找不到 ALSA 的配置来设置输出采样率。我该如何配置它?

Ces*_*ian 8

默认情况下,Alsa 使用与源相同的采样率和格式。然而,可以强制提高(或降低)采样率。

这是您可以做到的一种方法。(在/etc/asound.conf~/.asoundrc 中

pcm.device{
        format S24_LE
        rate 96000
        type hw
        card 0
        device 0
}
Run Code Online (Sandbox Code Playgroud)

然后将该 pcm 设为另一个 pcm 的从属,例如您的默认(立体声) pcm(警告:除非您有兼容的卡,否则 24 位格式将无法使用,我通常使用适用于大多数卡的 S32_LE。)

pcm.!default{
    type plug
    slave.pcm "device"
}
Run Code Online (Sandbox Code Playgroud)

然而,以上仅适用于立体声源(因此,如果您从默认使用环绕 51 pcm 的 5.1 源播放,事情会变得有点复杂)

我知道(和个人使用)关于如何强制非立体声源的采样率的一种方法是从这个 asound.conf/asoundrc 中获取部分(死链接)中并修改它们。(注意:我没有自己写那个文件)

(你可以找到我的asound.conf在这个问题中并直接复制它,而不是在下面手动修改它的麻烦)

首先复制“dmixed”pcm,并将其硬件部分修改为所需的采样率和格式。

然后按原样复制 !default、sound40 和 around51 pcms。这将有效地混合所有输出并将所有 2.0、4.0 和 5.1 源的采样率上变频到在 dmixed pcm 中设置的采样率。

在该配置文件中,您可能还会发现“upmix20_51” pcm 很有趣,因为它是一种通过选择性地将声音复制到其他通道来将 2.0 源上混到 5.1 的有效方法。如果要使用它,则必须将其类型从“plug”更改为“route”,然后将其设置为默认 pcm 的从属。

pcm.!default{
    type plug
    slave.pcm "upmix20_51"
}
Run Code Online (Sandbox Code Playgroud)

由于 pcm 使用的“surround51”使用“dmixed”作为从属设备,因此强制采样率也将适用于该 pcm。

可悲的是,现在的情况,单声道音源只会从左扬声器输出,但这几乎不是问题,因为这些爸爸们很少有单声道音源。我刚刚给出的示例正是我如何配置自己的asound.conf,如果您有 5.1 扬声器设置并希望强制使用 96khz 采样率,请尽情享受。

从理论上讲,我认为强制提高采样率不会为您带来任何好处(因为认为它会提高来自采样率较低的源的音频质量是一种荒谬的想法),因此您将成为将应用程序配置为使用 96khz 输出会更好。

但对我来说,如果我不强制使用 96khz 或 44.1khz 频率,我会遇到一些噼啪声(在特定游戏中,例如 Xcom:未知敌人)。看到我从强制 96khz(它既不会增加也不会降低 44.1/48khz 源的质量)中没有任何损失,这是一个完美的解决方案。


CL.*_*CL. 5

默认情况下,设备的采样率是应用程序为其配置的采样率,即原始文件的采样率。

  • 不,可能已经晚了一年,但我现在最喜欢的媒体播放器,大胆。如果我没记错的话,那个可以混合任意数量的khz。 (2认同)