LINUX.ORG.RU

mpd требует эксклюзивного доступа к аудиосистеме

 


0

1

Машина с работающим dmix, с выводом звука из нескольких источников никаких проблем.
За исключением mpd: когда начинается воспроизведение, он намертво хватает устройства вывода и больше звука нет нигде. Mplayer, например, жалуется:

[AO_ALSA] alsa-lib: pcm_hw.c:1293:(snd_pcm_hw_open) open '/dev/snd/pcmC0D0p' failed (-16): Device or resource busy
[AO_ALSA] alsa-lib: pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
[AO_ALSA] Playback open error: Device or resource busy
Failed to initialize audio driver 'alsa'
Could not open/initialize audio device -> no sound.
Audio: no sound
Если что-то другое в данный момент выводит звук, ситуация обратная: mpd говорит «problems opening sound device» и молчит. Пробовал так:
audio_output {
        type            "alsa"
        name            "ALSA Device"
        device          "hw:0,0" 
}
так:
audio_output {
        type            "alsa"
        name            "ALSA Device"
}
и с закомментированной секцией audio_output.
Как это поправить?

★★★★★

УМВР. mpd 0.16.7

audio_output {
	type		"alsa"
	name		"My ALSA Device"
	format		"44100:16:2"	# optional
	mixer_type      "software"
}
pcm.!default {
  type plug
  slave.pcm "dmixer"
}

pcm.dmixer {
    type dmix
    ipc_key 1024
    ipc_key_add_uid false   # let multiple users share
    ipc_perm 0666
    slave {
      pcm "hw:0,0"
      channels 2
      period_time 0
      period_size 1024 # must be power of 2
      buffer_size 8192 
      rate 44100
    }
   bindings.0  0
   bindings.1  1
}

baverman ★★★
()

device «default»

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

А, это осталось с тех времен, когда бился с косым ресемплингом в альсе. Работает — не трож!

baverman ★★★
()
Ответ на: комментарий от GotF
aidaho@aidaho-laptop:~$ aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
front:CARD=Intel,DEV=0
    HDA Intel, ALC269 Analog
    Front speakers
surround40:CARD=Intel,DEV=0
    HDA Intel, ALC269 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Intel,DEV=0
    HDA Intel, ALC269 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Intel,DEV=0
    HDA Intel, ALC269 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Intel,DEV=0
    HDA Intel, ALC269 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Intel,DEV=0
    HDA Intel, ALC269 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers

За компанию:

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

pcm.swmixer {
        type dmix
        ipc_key 1234
        ipc_key_add_uid true
        slave {
                pcm "hw:0,0"
                period_time 0
                period_size 1024
                buffer_size 4096
                rate 44100
        }
}

aidaho ★★★★★
() автор топика
Ответ на: комментарий от GotF

от mpd
Дефолтный конфиг debian squeeze, натравленный на директорию с музыкой.

aidaho ★★★★★
() автор топика
Ответ на: комментарий от aidaho

В выводе aplay должно присутствовать «default», однако. Конфиг ALSA персональный или системный?

от mpd

Если нет особых причин для такого подхода, то очень советую

service mpd stop
insserv -r mpd
и настроить запуск под своим пользователем. Помнится, это может помочь в подобных случаях. Настройки звука тоже лучше держать в ~/.asoundrc

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

настроить запуск под своим пользователем

ipc_key*

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

В выводе aplay должно присутствовать «default», однако.

Что сделать для этого?

Конфиг ALSA персональный или системный?

Системный

Если нет особых причин для такого подхода

Особых — нет, но раз в debian предполагается запуск одного экземпляра в качестве system-wide плеера, то я не стал плыть против течения. Подозреваю, что проблема где-то в работе dmix с несколькими пользователями, но как чинить — не знаю.

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

Да, в документации так и написано, но в squeeze это не работает. Причём не только у меня, тут полно топиков было после релиза.

aidaho ★★★★★
() автор топика
Ответ на: комментарий от aidaho

Что сделать для этого?

Не знаю, у меня оно там по умолчанию. Твоего конфига должно быть достаточно.

Системный

Если физически юзер один, то удали, а содержимое помести в персональный.

но раз в debian предполагается запуск одного экземпляра в качестве system-wide плеера, то я не стал плыть против течения.

Не все умолчания хороши во всех случаях. MPD отлично работает под обычным пользователем, нужно только поправить пути в конфиге, положив его в ~/.mpdconf или ~/.mpd/mpd.conf Заодно можно включить управление через сокет и вырубить TCP.

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

Если физически юзер один, то удали, а содержимое помести в персональный.

Перенёс, ничего не изменилось. Если не удастся подружить dmix с несколькими юзерами, придётся запускать mpd от своего юзера.

aidaho ★★★★★
() автор топика
Ответ на: комментарий от GotF

I win!
/etc/asound.conf

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

pcm.swmixer {
        type dmix
        ipc_key 1234
        ipc_key_add_uid false
        ipc_perm 0666
        slave {
                pcm "hw:0,0"
                period_time 0
                period_size 1024
                buffer_size 4096
                rate 44100
        }
}
А плюс реализации по дефолту: звук продолжал играть пока система включалась/выключалась сейчас несколько раз :)

aidaho ★★★★★
() автор топика
Ответ на: комментарий от baverman

Всем бобра в этом треде!

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