Как я могу решить конфликт между openFrameworks и другими аудио приложениями? - PullRequest
2 голосов
/ 19 июня 2011

Когда я пытаюсь выполнить audioOutputExample, поставляемый с openFrameworks , я получаю

RtApiAlsa :: getDeviceIno: snd_pcm_open ошибка для устройства (hw: 0,0), устройства или Ресурс занят.

RtApiAlsa :: probeDeviceOpen: устройство pcm (hw: 0,0) не открывается для вывода.

RtApi :: поток не открыт!

Процесс вернул 0 (0x0) выполнение время: 3.462 с продолжить.

когда

  • Rhythmbox играет
  • Rhythmbox недавно играл (менее 5 секунд назад)
  • В Firefox есть вкладка с Grooveshark, либо играющая мелодию, либо пауза
  • Вкладка Groovshark была недавно закрыта (менее 5 секунд назад)
  • Firefox имеет вкладку с видео YouTube, либо воспроизводится, либо находится в режиме паузы
  • Вкладка Youtube недавно была закрыта (менее 5 секунд назад)

В противном случае пример работает нормально, даже если раньше я использовал Rhythmbox, Grooveshark или Youtube.

Как мне разрешить этот конфликт, чтобы разрешить одновременное использование audioOutputExample и, скажем, Rythmbox.

P.S. Я использую Ubuntu 11.04, использую openFrameworks_v0062_linux64_FAt ...

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

это всего лишь предположение, так как я не знаком с OF на Linux, но я думаю, что OF нужен доступ к низкоуровневому устройству ALSA, чтобы получить функциональность RT.Таким образом, он не может использовать устройство совместно с PulseAudio (или чем-либо еще, что они используют в наши дни), что позволяет совместно использовать аудиоустройства между приложениями.Вы можете попробовать посмотреть на JACK для мультиплексирования между PulseAudio и вашей программой ALSA.

1 голос
/ 24 апреля 2014

Я нашел решение. Проблема была в том, что у меня зарегистрировано два внутренних звуковых устройства - HDMI и PCH. Устройство HDMI всегда назначалось на card0 , что можно проверить, набрав

aplay -l 

в терминал. Это перечислит различные устройства.

Затем я изменил свою конфигурацию alsa, используя

gksudo gedit /etc/modprobe.d/alsa-base.conf

и добавление в конце

options snd-hda-intel index=-2

, тем самым вынуждая HDMI быть назначенным на card1, а другое устройство на card0. Другой вариант есть поставить

options snd-hda-intel id=PCH,HDMI index=0,1

присвоение картотеки. Тем не менее, я прочитал здесь HDMI, PCH , что это не работает для всех.

Примечание детали этого метода зависят от устройств на вашем компьютере. Найдите известных Алсе, набрав aplay -l .

...