ALSA 不通过扬声器播放声音

ALSA 不通过扬声器播放声音

我有一个应用程序,可将 PCM 数据的语音数据包从一个节点发送到另一个节点。该程序还会在启动时播放 wav 文件。可以听到 wav 文件,但听不到我的音频。我在 asound.conf 文件中添加了以下内容:

pcm.playmix {
  type softvol
  slave {
    pcm "hw:0,0"
  }
  control.name "SpeakerVolume"
  control.card 0
}

pcm.writeFile {
  type file
    slave {
        pcm playmix # Now write to the actual sound card
    }
    file "/tmp/output.raw"
    format "raw"
}

pcm.dsp0 {
  type plug
  slave.pcm "writeFile"
}

我使用 Audacity 查看 output.raw 文件,发现启动 wav 文件和来自 LAN 的 PCM 音频均存在。但是,我没有在接收计算机的扬声器上听到任何音频,即 LAN 流量。我目前不知道下一步该怎么做。在将数据传输到内核以在设备上播放时,output.raw 文件是否会被保存?如果我使用 aplay,那么我选择的任何 wav 文件都会播放。我唯一缺少的音频是来自 LAN 另一端的 PCM。

如有任何建议,我们将不胜感激。

答案1

事实证明,为 EMB-2610 的放大扬声器端口创建硬件的人只连接了左声道。我预先录制的 wav 文件是立体声的,所以我听到了一些声音。我创建了以下 ALSA 配置以将两个通道连接在一起。

    pcm.mixed {
    type dmix
    ipc_key 9752933 #must be unique for all dsnoop plugins
    ipc_key_add_uid yes
    slave.pcm "hw:1"  # or whatever
}

pcm.channel1 {
    type route
    slave {
        pcm mixed
        channels 2
    }
    ttable [ [ 1 0 ] ]
}

pcm.channel2 {
    type route
    slave {
        pcm mixed
        channels 2
    }
    ttable [ [ 0 1 ] ]
}

pcm.channel1_softvol {
    type softvol
    slave.pcm channel1
    control.name "Channel 1 Capture Volume"
}
pcm.channel2_softvol {
    type softvol
    slave.pcm channel2
    control.name "Channel 2 Capture Volume"
}

pcm.mixed_with_volumes {
    type multi
    slaves {
        a { pcm channel1_softvol channels 1 }
        b { pcm channel2_softvol channels 1 }
    }
    bindings [
        { slave a channel 0 }
        { slave b channel 0 }
    ]
}

pcm.dsp0 {
    type plug
    slave.pcm mixed_with_volumes
    ttable [ [ 1.0 1.0 ] ]
}

我使用谷歌搜索找到了这个,有人试图将输入连接到一个流。 ipc_key 只需要是一个唯一的数字。

相关内容