LINUX.ORG.RU

переключить alsa playback на ходу без пульса

 ,


3

3

собственно задача: при подключении HDMI удевом вызывается скрипт, который переключает вывод на hdmi0
нужно также перебросить звук туда же.
можно этим же скриптом скопировать нужный asoundrc себе в ~, но после этого нужно перезапустить приложение.

хочется сделать так, чтобы звук переключалсся «на лету».
я знаю, как сделать это через pulseaudio, но ставить его не горю желанием.

возможно ли сделать такое без PA?

★★★★★

Ответ на: комментарий от anonymous

это никак не скажется на энергопотреблении/производительности?

snoopcat ★★★★★
() автор топика

решение

pcm.!default {
    type plug
    slave {
        pcm "both"
    }
}

pcm.both {
    type route
    slave {
        pcm multi
        channels 4
    }
        ttable.0.0 1.0
        ttable.1.1 1.0
        ttable.0.2 1.0
        ttable.1.3 1.0
}

pcm.multi {
    type multi
    slaves.a {
        pcm "internal"
        channels 2
    }

    slaves.b {
        pcm "external"
        channels 2
    }
    bindings.0.slave a
    bindings.0.channel 0
    bindings.1.slave a
    bindings.1.channel 1
    bindings.2.slave b
    bindings.2.channel 0
    bindings.3.slave b
    bindings.3.channel 1
}

pcm.internal {
    type dmix
    ipc_key 1024
    slave {
        pcm "hw:0,3"
        buffer_size 4096
        rate 48000
        channels 2
    }
}

pcm.external {
    type dmix
    ipc_key 1025
    slave {
        pcm "hw:0,0"
        buffer_size 4096
        rate 48000
        channels 2
    }
}

- .asoundrc

#!/bin/bash

user=annelin
display=:0

if [ $(cat /sys/class/drm/card0-HDMI-A-1/status)  == "connected" ]; then
	notify-send -i info "Настройки экрана" "Подключено HDMI-устройство"
	su - $user -c "DISPLAY=$display xrandr --output LVDS1 --auto --output HDMI1 --auto --same-as LVDS1"
	amixer set Master off
	amixer set IEC958 on
else
        notify-send -i info "Настройки экрана" "Отключено HDMI-устройство"
	su - $user -c "DISPLAY=$display xrandr --output LVDS1 --auto --output HDMI1 --off"	
        amixer set Master on
	amixer set IEC958 off
fi	
- /usr/bin/toggle-hdmi
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/bin/toggle-hdmi"
- /etc/udev/rules.d/80-hdmi.rules

snoopcat ★★★★★
() автор топика

В VLC Media Player заходишь в «Настройки» «Расширенные» «Аудио» «Вывод» «ALSA». Меняешь устрйоство. Жмёшь «применить». звук сразу идёт в другие колонки.

anonymous
()
Ответ на: комментарий от anonymous

а если это не vlc, а opera, например?

snoopcat ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.