linux - 通过环境变量选择默认的 alsa PCM(不是卡)

标签 linux alsa audio

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

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

不幸的是,新耳机 (hw:Set) 有反向 channel ,所以我 创建了一个 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 有效,但我如何决定通过环境使用它 多变的?目前环境变量只接受卡片名称。 它可能是围绕着 -- name 'defaults.pcm.card' -- 行,但我无法修复它。

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

最佳答案

使用这样的东西,并将环境变量 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
}

关于linux - 通过环境变量选择默认的 alsa PCM(不是卡),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17105845/

相关文章:

c - Linux 系统调用、libc、VDSO 和实现剖析

linux - 检索 ALSA 播放延迟

javascript - Node JS : Capturing a stereo PCM wave stream into mono AudioBuffer

android - Android App 无法播放 "opus"文件

ios - 在 iOS Swift 中检测设备上正在播放哪个音轨

Objective-c - 如何将音频文件序列化为可以播放的小数据包?

regex - 如何在Linux中使用正则表达式输出数字?

c++ - 在 Linux/Ubuntu 中捕获窗口事件(屏幕捕获 + 鼠标/键盘事件)

linux - 如何在没有互联网连接的情况下为 GCC 安装 C 编译器? (RHEL6)

linux - 连接到 ALSA