i-rinat / apulse

PulseAudio emulation for ALSA
MIT License
609 stars 35 forks source link

Skype [apulse] [error] do_connect_pcm, snd_pcm_open, Устройство или ресурс занято #41

Closed 13ilya closed 7 years ago

13ilya commented 7 years ago

Привет, Ринат! У меня опять проблемы со скайпом и с переменной окружения APULSE_PLAYBACK_DEVICE="plughw:0,0". При загрузке скайпа с этой переменной LD_LIBRARY_PATH='/usr/lib/apulse' APULSE_CAPTURE_DEVICE="plughw:0,0" APULSE_PLAYBACK_DEVICE="plughw:0,0" skype получаю эти уведомления

[apulse] [error] do_connect_pcm, snd_pcm_open, Устройство или ресурс занято
[apulse] [error] do_connect_pcm, snd_pcm_open, Устройство или ресурс занято

При этом сам скайп видит pulse-сервер но не издаёт ни звука. При этом при дозвоне на echo123 наглухо виснет.

При загрузке скайпа без этой переменной. LD_LIBRARY_PATH='/usr/lib/apulse' APULSE_CAPTURE_DEVICE="plughw:0,0" skype Скайп работает условно нормально. (Раньше без неё у меня звук пропадал при разговоре, сейчас пока проверить это не могу.)

При этом я отключил всё, что может захватывать звуковуху, включая mpd, разве-что кроме KDE, в мультимедийных настройках которого, как и раньше, указан Gstreamer-овский default.

Ещё у меня установлен эквалайзер alsaequal и в ~/.asound

ctl.equal {
    type equal;
}

pcm.plugequal {
    type equal;
    slave.pcm "plug:dmix";
}

pcm.equal {
    type plug;
    slave.pcm plugequal;
}

Пробовал переименовать файл и запускать skype, но результат тот же, да и раньше это проблем не вызывало.

В чём может быть проблема? Куда копать и что можно поставить в APULSE_PLAYBACK_DEVICE вместо plughw:0,0?

i-rinat commented 7 years ago

В чём может быть проблема?

Два Mplayer'а одновременно через plughw:0,0 могут звук воспроизводить? Apulse мало отличается от других программ, использующих ALSA. Внутреннего микширования нет, микшированием занимаются стандартные плагины ALSA.

Наверное, если использовать свой .asoundrc, настройки по умолчанию отключаются совсем.

что можно поставить в APULSE_PLAYBACK_DEVICE вместо plughw:0,0?

У тебя в .asoundrc создаётся устройство под именем equal. Попробуй его использовать.

13ilya commented 7 years ago

Два Mplayer'а одновременно через plughw:0,0 могут звук воспроизводить?

Ни один mpv не воспроизводит через --audio-device=alsa/plughw:0,0 Устройство воспроизведения plughw:0,0 у меня, почему-то всегда занято, хотя раньше такого не было. При этом устройство захвата plughw:0,0 остаётся свободным. Не знаю нормально ли это и куда копать?

У тебя в .asoundrc создаётся устройство под именем equal. Попробуй его использовать.

Это нужно 32-битную версию equal компилить, что всё равно не решает проблему.

В итоге skype теперь работает только при: 0 - отсутствует APULSE_PLAYBACK_DEVICE вообще. 1 - APULSE_PLAYBACK_DEVICE="default" 2 - APULSE_PLAYBACK_DEVICE="plug:default" 3 - APULSE_PLAYBACK_DEVICE="plug:dmix"

Я остановился на последнем варианте. Стоит ли мне разбираться, почему с недавних пор что-то, скорее всего KDE, монопольно захватывает plughw:0,0 или эта ситуация допустима и можно просто использовать plug:dmix?

i-rinat commented 7 years ago

При этом устройство захвата plughw:0,0 остаётся свободным. Не знаю нормально ли это и куда копать?

Воспроизведение и запись — разные каналы, так что это совершенно нормально. Одно приложение может монопольно захватить вывод звука, и одновременно с этим множество приложений через dsnoop могут записывать звук без проблем. Это же разные тракты в железе. Я бы ожидал от них независимой работы.

Я остановился на последнем варианте.

Работает — и хорошо :-)

Стоит ли мне разбираться, почему с недавних пор что-то, скорее всего KDE, монопольно захватывает plughw:0,0 или эта ситуация допустима и можно просто использовать plug:dmix?

Экспертом по ALSA я так и не стал, так что квалифицированных советов дать не могу. Как по мне, работает — и ладно.

Насколько я понимаю, если в железе нет поддержки аппаратного микширования, то открывшее plughw:0,0 приложение захватывает вывод монопольно. plughw это почти что то же, что и hw, только передискретизация выполняется прозрачно.

использовать plug:dmix

Я бы предпочёл сделать так, чтобы default работало нормально, через dmix плагин. Скорее всего, существуют приложения, которые не имеют настроек по устройству вывода, а всегда используют default.

13ilya commented 7 years ago

Спасибо за разъяснения. :-)