2015-10-23 5 views
1

Ubuntu 14.04. У меня PulseAudio работает как демон и настроен на потоковое вещание. В /etc/pulse/default.pa я добавил следующее, чтобы принимать соединения TCP:Пульсаусуляция звука для нескольких пользователей на tcp с использованием Guacamole VNC

load-module module-native-protocol-tcp auth-ip-acl=192.168.1.0/24 auth-anonymous=1 

поддержка VNC гуакамоле в получает аудио через соединение с сервером PulseAudio. См. Соответствующую статью по адресу: Guacamole Audio support (via PulseAudio). Я могу получить звук для потоковой передачи с одного рабочего стола VNC, но не более одного, несмотря на включение нескольких соединений VNC (это разные соединения) в /etc/guacamole/user-mapping.xml. Например:

<!-- First user --> 
<authorize username="user1" password="abcd"> 
    <connection name="vnc"> 
     <protocol>vnc</protocol> 
     <param name="hostname">localhost</param> 
     <param name="port">5903</param> 
     <param name="password">abcd</param> 
     <param name="enable-audio">true</param> 
     <param name="audio-servername">localhost</param> 
    </connection> 
</authorize> 

<!-- Second user --> 
<authorize username="user2" password="abcd"> 
    <!-- First authorized connection --> 
    <connection name="vnc"> 
     <protocol>vnc</protocol> 
     <param name="hostname">localhost</param> 
     <param name="port">5904</param> 
     <param name="password">abcd</param> 
     <param name="enable-audio">true</param> 
     <param name="audio-servername">localhost</param> 
    </connection> 
</authorize> 

PulseAudio принимает соединения на порт 4713.

$ netstat -ln | grep 4713 
tcp  0  0 0.0.0.0:4713   0.0.0.0:*    LISTEN 
tcp6  0  0 :::4713     :::*     LISTEN 

обрабатывать ли PulseAudio несколько пользователей гуакамоле VNC?

Поскольку Guacamole регистрируется в/var/log/syslog, я изолировал журналы для двух экземпляров соединений. Это журналы.

Первое соединение - это пользователь guacamole_guest, и он не имеет звука.

Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Protocol "vnc" selected 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Connection ID is "$299e5678-59de-4dbd-9408-ad256785f732" 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: VNC server supports protocol version 3.8 (viewer 3.8) 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: We have 2 security types to read 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: 0) Received security type 2 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Selecting security type 2 (0/2 in the list) 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: 1) Received security type 16 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Selected Security Scheme 2 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: VNC authentication succeeded 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Desktop name "guacamole_guest's X desktop (lubuntu-ThinkCentre-M58p:3)" 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Connected to VNC server, using protocol version 3.8 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: VNC server default format: 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: 32 bits per pixel. 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Least significant byte first in each pixel. 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: TRUE colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Audio will be encoded as audio/ogg 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Starting audio stream 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Connecting to PulseAudio... 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Starting client 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Authorizing PulseAudio connection... 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Sending client name... 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: PulseAudio now ready 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Will use default sink: "auto_null" 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: Starting streaming from "Dummy Output" 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: PulseAudio stream being created... 
Oct 23 02:31:23 lubuntu-ThinkCentre-M58p guacd[18848]: PulseAudio stream now ready 
Oct 23 02:31:33 lubuntu-ThinkCentre-M58p guacd[18848]: Client disconnected 
Oct 23 02:31:33 lubuntu-ThinkCentre-M58p guacd[18848]: Audio stream finished 
Oct 23 02:31:33 lubuntu-ThinkCentre-M58p kernel: [1207939.582306] guacd[18848]: segfault at 67452305 ip b6b7ce15 sp bfd99cc0 error 4 in libguac-client-vnc.so.0.0.0[b6b73000+e000] 

Второй пользователь называется lubuntu. У него звук.

Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Protocol "vnc" selected 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Connection ID is "$6344d2fb-c5fe-4073-82d7-88dea358b8f6" 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: VNC server supports protocol version 3.8 (viewer 3.8) 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: We have 2 security types to read 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: 0) Received security type 2 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Selecting security type 2 (0/2 in the list) 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: 1) Received security type 16 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Selected Security Scheme 2 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: VNC authentication succeeded 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Desktop name "lubuntu's X desktop (lubuntu-ThinkCentre-M58p:2)" 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Connected to VNC server, using protocol version 3.8 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: VNC server default format: 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: 32 bits per pixel. 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Least significant byte first in each pixel. 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: TRUE colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Audio will be encoded as audio/ogg 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Starting audio stream 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Connecting to PulseAudio... 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Authorizing PulseAudio connection... 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Sending client name... 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Starting client 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: PulseAudio now ready 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Will use default sink: "auto_null" 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: Starting streaming from "Dummy Output" 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: PulseAudio stream being created... 
Oct 23 02:31:37 lubuntu-ThinkCentre-M58p guacd[18871]: PulseAudio stream now ready 
Oct 23 02:31:43 lubuntu-ThinkCentre-M58p guacd[18871]: Client disconnected 
Oct 23 02:31:43 lubuntu-ThinkCentre-M58p guacd[18871]: Audio stream finished 
Oct 23 02:31:43 lubuntu-ThinkCentre-M58p kernel: [1207949.566374] guacd[18871]: segfault at 67452305 ip b6b7ce15 sp bfd99cc0 error 4 in libguac-client-vnc.so.0.0.0[b6b73000+e000] 

На поверхности они выглядят одинаково. Не уверен, где продолжить. Segfaults выглядят не очень хорошо, но они происходят в обоих случаях.

ответ

1

Включает ли PulseAudio несколько пользователей VNC Guacamole?

PulseAudio не будет знать о соединениях VNC Guacamole. Guacamole будет объединять аудиопоток от PulseAudio с графическим потоком от VNC, но соединения VNC и PulseAudio в остальном полностью независимы.

Guacamole can ручка потоков PulseAudio для разных пользователей/соединений, но эти потоки должны будут поступать с разных хостов. Это происходит потому, что гуакамол будет выполнять следующее при подключении к PulseAudio от имени соединения VNC:

  1. Установить соединение TCP с сервером PulseAudio описываемого audio-servername.
  2. Создайте источник монитора вокруг раковины по умолчанию и передайте принятые аудиопакеты.

Поскольку сервер PulseAudio на localhost будет тот же сервер PulseAudio в обоих подключениях, и есть только один по умолчанию раковина, вы будете слышать звук из той же раковине в обоих случаях.

Первое соединение - это пользователь guacamole_guest, и у него нет звука. ... Второй пользователь называется lubuntu. У него звук.

Хотя интересный факт, что вы слышите звук только в одном из ваших соединений, скорее всего, имеет отношение к тому, как аудио направляется в PulseAudio. Я уверен, что есть причина, но выяснение того, что причина не приведет к решению вашей проблемы. Два соединения PulseAudio, связанные с двумя вашими разъемами VNC: гарантировали, что будет идентичным в вашем случае.

Если вы хотите разместить настольные компьютеры нескольких пользователей на одном и том же оборудовании, я бы рекомендовал вместо этого разместить рабочий стол каждого пользователя в виртуальной машине, используя что-то вроде VirtualBox или KVM. Это обеспечит вам лучшую изоляцию между пользователями, а также уникальный сетевой адрес для соответствующих им серверов PulseAudio.

Segfaults выглядят не очень хорошо, но они случаются в обоих случаях.

Действительно, guacd определенно не должен быть непоправимым. Если вы можете надежно воспроизвести segfault, лучше всего будет сделать отчет об ошибке для проекта. В случае Segfault, инструкции для делать это несколько вовлечены, но необходимо, чтобы определить, где и как выдаёт ошибку сегментации происходит:

  1. Убедитесь guacd мертв (так что мы можем запустить его снова под отладчиком).

    $ killall guacd 
    guacd: no process found 
    $ 
    
  2. нагрузки guacd под GDB, поджимать плагин для протокола терпит неудачу.

    $ LD_PRELOAD=/usr/local/lib/libguac-client-vnc.so gdb /usr/local/sbin/guacd 
    GNU gdb (GDB) 7.4.1-debian 
    Copyright (C) 2012 Free Software Foundation, Inc. 
    ... 
    (gdb) 
    
  3. Велит GDB следовать следующему дочернему процессу (guacd создает новый дочерний процесс, чтобы изолировать и обработать каждое новое соединение).

    (gdb) set follow-fork-mode child 
    (gdb) 
    
  4. Run guacd в GDB, используя -L debug, чтобы включить ведение журнала уровня отладки в пределах guacd.

    (gdb) run -L debug 
    Starting program: /usr/local/sbin/guacd 
    [Thread debugging using libthread_db enabled] 
    Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 
    guacd[29589]: INFO:  Guacamole proxy daemon (guacd) version 0.9.8 started 
    guacd[29589]: DEBUG: Unable to bind socket to host ::1, port 4822: Address family not supported by protocol 
    guacd[29589]: DEBUG: Successfully bound socket to host 127.0.0.1, port 4822 
    guacd[29589]: INFO:  Listening on host 127.0.0.1, port 4822 
    ... 
    
  5. Воспроизвести проблему. Как только это произойдет, вы вернетесь к подсказке gdb. Получить трассировку от БГДА:

    (gdb) bt 
    
  6. Отправить получившуюся трассировку вместе с описанием того, как воспроизвести проблему в новом выпуске в JIRA of the Guacamole project.

Смежные вопросы