【问题标题】:Select a default alsa PCM (not card) via environment variable通过环境变量选择默认的 alsa PCM(不是卡)
【发布时间】:2013-06-10 22:43:37
【问题描述】:

我经常使用耳机,选择是否使用耳机或 普通声卡我使用环境变量谢谢 到 ~/.asound.rc 中的这段代码:

@args.CARD {
  type string
  default {
    @func getenv
    vars {
      0 ALSA_CARD
    }
    default {
      @func refer
      name 'defaults.pcm.card'
    }
  }
}

不幸的是,新耳机 (hw:Set) 的频道颠倒了,所以我 创建了一个 pcm 来修复,将这些行添加到 ~/.asoundrc:

pcm.swapped {
    type  route
    slave {
        pcm "hw:Set"
    }
    ttable.0.1   1
    ttable.1.0   1
}


pcm.HeadsetSwapped {
  type plug
  slave {
    pcm "pcm.swapped"
  }
}

pcm 有效,但我如何决定通过环境使用它 多变的?目前 env 变量只接受卡名。 它可能与 -- name 'defaults.pcm.card' 相关 -- 线,但我无法修复它。

我知道我可以将 pcm.HeadsetSwapped 更改为 pcm.!default, 但我想避免每次都编辑文件 我想启动一个程序...

【问题讨论】:

    标签: linux alsa audio


    【解决方案1】:

    使用类似的东西,并将环境变量MY_DEVICE 设置为hwswapped

    pcm.!default {
        type plug
        slave.pcm {
            @func getenv
            vars [ MY_DEVICE ]
            default "hw"
        }
    }
    pcm.swapped {
        type route
        slave.pcm "hw:Set"
        ttable.0.1 1
        ttable.1.0 1
    }
    

    【讨论】:

    • 谢谢,完美。它的可读性很好,对于 alsa 相关的东西来说并不常见。
    • 提示:如果您使用默认“hw”点击“设备或资源繁忙”,请尝试默认“dmix”。我只是觉得进入了那个陷阱。
    猜你喜欢
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2022-12-31
    • 2014-12-18
    • 2012-03-12
    相关资源
    最近更新 更多