1

Я пытаюсь воспроизводить аудио на двух аппаратных устройствах одновременно, megalodon и analog , используя два устройства dmix. megalodon - это USB-гарнитура, analog - это всего лишь 3,5 мм порт на моем компьютере. Когда я направляю аудио в dmix для megalodon под названием headsetout а также направляю его напрямую на analog , он работает просто отлично. Однако, если маршрут я его как headsetout и analogout (DMIX для analog я получаю ошибку ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable быть использованы. Если я вывожу только на analogout выход, либо воспроизводя его напрямую, либо создав мульти-выходное устройство, которое выводит только на analogout выход, он работает просто отлично.

Как правильно headsetout вывод на гарнитуру и analogout выход?

Вот соответствующие части моего asound.conf, чтобы было легче понять, что происходит. Кроме того, я попробовал как обернуть устройства dmix в plug устройство, как они есть в приведенном ниже конфиге, так и использовать их напрямую, но безрезультатно.

pcm.megalodon {
    type hw
    card "Megalodon"
}

pcm.analog {
    type hw
    card "PCH"
    device 0
}

#Play to headphones and earbuds
pcm.splitout {
    type plug
    slave.pcm {
        type multi
        slaves {
            a { channels 2 pcm "headsetout" }
            b { channels 2 pcm "analog" }
        }
        bindings {
            0 { slave a channel 0 }
            1 { slave a channel 1 }
            2 { slave b channel 0 }
            3 { slave b channel 1 }
        }

    }
    ttable [
        [ 1 0 1 0 ]
        [ 0 1 0 1 ]
    ]
}

#Theoretically play to headphones and earbuds
#this one doesn't work
#error:
#ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
#aplay: set_params:1204: Broken configuration for this PCM: no configurations available
#
#However, analogout works when used on it's own
pcm.splitout1 {
    type plug
    slave.pcm {
        type multi
        slaves {
            a { channels 2 pcm "headsetout" }
            b { channels 2 pcm "analogout" }
        }
        bindings {
            0 { slave a channel 0 }
            1 { slave a channel 1 }
            2 { slave b channel 0 }
            3 { slave b channel 1 }
        }

    }
    ttable [
        [ 1 0 1 0 ]
        [ 0 1 0 1 ]
    ]
}

#dmix output for headphones
pcm.headsetout {
    type plug
    slave.pcm {
        type dmix
        ipc_key 192959
        ipc_key_add_uid true
        ipc_perm 0666
        slave {
            pcm "megalodon"
            rate 48000
            channels 6

            period_time 0
            period_size 1024
            buffer_time 0
            buffer_size 16384
        }
    }
}

#dmix output for analog jack (3.5mm)
pcm.analogout {
    type plug
    slave.pcm {
        type dmix
        ipc_key 3785682
        ipc_key_add_uid true
        ipc_perm 0666
        slave {
            pcm "analog"
            rate 48000
            channels 2

            period_time 0
            period_size 1024
            buffer_time 0
            buffer_size 16384
        }
    }
}

1 ответ1

0

Я решил просто добавить разные плагины к этой проблеме, и я смог это исправить с помощью upmix. У меня сложилось впечатление, что type plug могла бы справиться с этим для меня, но это не так.

До:

#dmix output for headphones
pcm.headsetout {
    type plug
    slave.pcm {
        type dmix
        ipc_key 192959
        ipc_key_add_uid true
        ipc_perm 0666
        slave {
            pcm "megalodon"
            rate 48000
            channels 6

            period_time 0
            period_size 1024
            buffer_time 0
            buffer_size 16384
        }
    }
}

После:

#dmix output for headphones
pcm.headsetout {
    type upmix
    slave.pcm {
        type plug
        slave.pcm {
            type dmix
            ipc_key 192959
            ipc_key_add_uid true
            ipc_perm 0666
            slave {
                pcm "megalodon"
                rate 48000
                channels 6

                period_time 0
                period_size 1024
                buffer_time 0
                buffer_size 16384
            }
        }
    }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .