本节介绍了如何为 Windows 应用程序和 X 应用程序配置 SGD 音频服务。其中还包括了 SGD 音频的故障排除信息。
本节包括以下主题:
设置音频涉及以下配置步骤:
针对音频配置应用服务器。
配置 Microsoft Windows 应用服务器。
要播放音频,必须在 Microsoft Windows 应用服务器上配置音频重定向。
要录制音频,必须在 Microsoft Windows 应用服务器上配置音频录制重定向。
配置 UNIX 和 Linux 平台应用服务器。
在 UNIX 或 Linux 平台应用服务器上配置 SGD 增强模块的音频模块。
配置 X 应用程序对象,以使用正确的音频设备和音频格式。
启用 SGD 音频服务。
针对音频配置客户端设备。
只有在 Windows 远程桌面会话主机上启用了音频重定向才可播放音频。
只有在 Windows 远程桌面会话主机上启用了音频录制重定向才可录制音频。
有关支持音频重定向和音频录制重定向的 Windows 平台的详细信息,请参见第 4.1.3 节 “配置 Microsoft Windows 远程桌面服务以与 SGD 配合使用”。
为了能够在 X 应用程序中收听音频,必须在 UNIX 或 Linux 平台应用服务器上安装并运行 SGD 增强模块的音频模块。
有关安装音频模块的说明,请参见《Oracle Secure Global Desktop 发行版 4.7 安装指南》。如果您在安装 SGD 增强模块时没有安装音频模块,则必须卸载然后重新安装 SGD 增强模块。
如果您正在 Oracle Solaris 平台上使用区域,则音频模块必须安装在全局区域中。
音频模块将安装 SGD 音频守护进程和音频驱动程序仿真器。在 Linux 平台上,音频驱动程序仿真器需要内核中的 soundcore
模块。音频驱动程序仿真器是一个开放式声音系统 (Open Sound System, OSS) 仿真器。
由于音频模块包括一个音频驱动程序仿真器,所以应用服务器实际上不需要声卡。
当启用了音频并且用户启动 X 应用程序时,SGD 登录脚本会在应用服务器上启动 SGD 音频守护进程 sgdaudio
。
音频守护进程将连接到 SGD 音频驱动程序仿真器 sgdadem
,并启动 /tmp/SGD/dev/sgdaudio
目录中的一个音频设备节点。音频守护进程将 SGDAUDIODEV
、AUDIODEV
和 AUDIO
环境变量设置为该音频设备节点的位置。然后在应用程序会话期间将使用该音频设备节点来播放音频。
音频守护进程将音频数据传输到 SGD 服务器,然后服务器将数据发送到客户端。
音频守护进程支持以下音频数据格式:
使用 8 位精度的 u-law 和 A-law
16 位线性脉冲编码调制 (Pulse-code modulation, PCM)
要播放音频,客户端设备还必须支持这些格式。
音频守护进程支持为一个或两个声道采用 8000 Hz 到 48 kHz 之间的任意采样率。音频守护进程使用管理控制台中 "Global Settings"(全局设置)→ "Client Device"(客户端设备)选项卡上的 "UNIX Audio Sound Quality"(UNIX 音频声音质量)属性指定的采样率。默认情况下,采样率为 22.05 kHz。
SGD 音频守护进程通过随机端口连接到 SGD 服务器。如果应用服务器与 SGD 服务器之间有防火墙,则防火墙必须允许在所有端口上从应用服务器连接到 SGD 服务器。
为了能够在 X 应用程序中收听音频,可能必须对 X 应用程序进行配置以使用正确的音频设备和音频格式来输出音频。
某些 X 应用程序被固定编码为使用 /dev/audio
或 /dev/dsp
设备进行音频输出。您可以启用 SGD 音频重定向库,以强制 X 应用程序使用由 SGDAUDIODEV
环境变量指定的设备。
在管理控制台中,转至 X 应用程序的 "Client Device"(客户端设备)选项卡,并选中 "Audio Redirection Library"(音频重定向库)复选框。
或者,也可以使用以下命令:
$ tarantella object edit --name obj
--unixaudiopreload true
由于 SGD 音频驱动程序仿真器是一个 OSS 驱动程序,所以可能必须对 X 应用程序进行配置以使用 OSS。如果您的系统使用高级 Linux 声音体系结构 (Advanced Linux Sound Architecture, ALSA),则可能必须在内核中启用 ALSA OSS 仿真模块。
如果用于 X 应用程序的 "Connection Method"(连接方法)(--method
) 是 SSH,并且应用程序的 "Window Type"(窗口类型)(--displayusing
) 是 Kiosk,则 "Session Termination"(会话终止)(--endswhen
) 属性必须设置为 "Login Script Exit"(登录脚本退出)或 "No Visible Windows"(无可见窗口)(--loginscriptnowindows
)。
为了能够在 Windows 应用程序和 X 应用程序中收听音频,必须为 SGD 阵列启用音频服务。
为了能够在 Windows 应用程序中录制音频,必须为 SGD 阵列启用 Windows 音频输入服务。
SGD 服务器之间的防火墙可能会干涉 Windows 音频所需的连接,请参见第 1.4.2 节 “SGD 服务器之间的防火墙”。
为了能够在 Windows 应用程序中收听音频,必须为阵列启用 SGD Windows 音频服务。默认情况下,Windows 音频服务处于禁用状态。
在管理控制台中,转至 "Global Settings"(全局设置)→ "Client Device"(客户端设备)选项卡,然后选中 "Windows Audio"(Windows 音频)复选框。
您还可以使用 tarantella config edit --array-audio
命令来启用 SGD Windows 音频服务。
音频服务仅对新用户会话生效。用户必须从 SGD 注销,然后重新登录才能在其当前 Windows 远程桌面服务会话中启用音频。
(可选)设置音频质量。
为 "Windows Audio Sound Quality"(Windows 音频声音质量)选择一个选项。
默认设置为 "Medium Quality Audio"(中等质量音频),使用的采样率为 22.05 kHz。仅当您遇到音频质量问题时才需更改此设置。
为了能够在 X 应用程序中收听音频,必须为阵列启用 SGD UNIX 音频服务。默认情况下,UNIX 音频服务处于禁用状态。
在管理控制台中,转至 "Global Settings"(全局设置)→ "Client Device"(客户端设备)选项卡,然后选中 "Unix Audio"(Unix 音频)复选框。
您还可以使用 tarantella config edit --array-unixaudio
命令来启用 SGD UNIX 音频服务。
音频服务仅对新用户会话生效。用户必须从 SGD 注销,然后重新登录才能在其 X 应用程序会话中启用音频。
(可选)设置音频质量。
为 "Unix Audio Sound Quality"(Unix 音频声音质量)选择一个选项。
默认设置为 "Medium Quality Audio"(中等质量音频),使用的采样率为 22.05 kHz。仅当您遇到音频质量问题时才需更改此设置。
为了能够在 Windows 应用程序中录制音频,必须为阵列启用 SGD Windows 音频输入服务。默认情况下,Windows 音频输入服务处于禁用状态。
在管理控制台中,转至 "Global Settings"(全局设置)→ "Client Device"(客户端设备)选项卡,然后选中 "Audio Input"(音频输入)复选框。
您还可以使用 tarantella config edit --array-audioin
命令来启用 SGD Windows 音频输入服务。
Windows 音频输入服务仅对新用户会话生效。用户必须从 SGD 注销,然后重新登录才能在其当前 Windows 远程桌面服务会话中启用音频录制。
为了能够在 Windows 应用程序或 X 应用程序中收听音频,客户端设备必须能够播放音频。
具有 Oracle Solaris 或 Linux 平台客户端设备的用户必须拥有对以下音频设备的读写访问权限:
Oracle Solaris 平台上的 /dev/audio
设备
Linux 平台上的 /dev/dsp
设备
对于 Linux 平台客户端设备,声音启发守护进程 (Enlightened Sound Daemon),也称为 ESD 或 EsounD,必须正在客户端设备上运行。
当客户端设备桌面会话启动时,ESD 通常会启动。否则,必须由 ESD 库根据请求自动产生该守护进程。请确保在 ESD 配置文件 /etc/esd.conf
中启用自动产生。正确的设置为 auto_spawn=1
。
支持客户端设备上的音频混合。在 Oracle Solaris 工作站、Microsoft Windows 和 Mac OS X 客户端设备上,由客户端硬件执行混合。在 Linux 和 Sun Ray 客户端设备上,必须具有 ESD 才能执行混合。
为了能够在 Windows 应用程序中录制音频,客户端设备必须能够录制音频。
以下是在 Windows 应用程序和 X 应用程序中使用音频时的常见问题:
如果在应用程序会话中根本不播放音频,请使用以下核对表来解决该问题。
对于 Windows 应用程序和 X 应用程序,您可以使用以下核对表。
Questions
5.3.7.1.1: 客户端设备是否有音频设备?
5.3.7.1.2: 对于 Linux 平台客户端设备,ESD 是否正在运行?
5.3.7.1.3: 客户端设备上音量是否设置为静音?
5.3.7.1.4: 应用服务器上音量是否设置为静音?
5.3.7.1.5: 是否已在 SGD 服务器上启用了音频服务?
5.3.7.1.6: 是否更改了音频质量?
5.3.7.1.7: 对于 Windows 应用程序,应用服务器上是否启用了音频重定向?
5.3.7.1.8: 对于 Windows 应用程序,是否启用了 "Remote Audio"(远程音频)属性?
5.3.7.1.9: 对于 Windows 应用程序,在托管用户会话的 SGD 服务器与托管应用程序会话的 SGD 服务器之间是否有防火墙?
5.3.7.1.10: 对于 X 应用程序,在应用服务器与 SGD 服务器之间是否有防火墙?
5.3.7.1.11: 对于 X 应用程序,是否正在运行 SGD 和 SGD 增强模块的兼容版本?
5.3.7.1.12: 对于 X 应用程序,是否已安装了 SGD 增强模块的音频模块?
5.3.7.1.13:
X 应用程序是否被固定编码为使用 /dev/audio
或 /dev/dsp
设备?
5.3.7.1.14: X 应用程序是否在以正确的格式输出声音?
5.3.7.1.15: 对于 UNIX 或 Linux 平台应用服务器,SGD 音频驱动程序是否已装入到内核中?
5.3.7.1.16: 对于 X 应用程序,SGD 音频守护进程是否正在应用服务器上运行?
5.3.7.1.17: 对于 X 应用程序,是否存在 SGD 音频设备节点?
5.3.7.1.18: 对于 X 应用程序,音频调试日志记录是否显示了应用程序的任何错误?
Questions and Answers
为了能够播放音频,客户端设备必须具有音频设备。如果具有音频设备,请检查该音频设备是否正常工作。
具有 Oracle Solaris 或 Linux 平台客户端设备的用户还必须拥有对以下音频设备的读写访问权限:
Oracle Solaris 平台上的 /dev/audio
设备
Linux 平台上的 /dev/dsp
设备
在 Oracle Solaris 平台上,如果 AUDIODEV
环境变量已设置为另一设备,则 SGD 客户端将先尝试使用该设备,然后才使用 /dev/audio
设备。
5.3.7.1.2: 对于 Linux 平台客户端设备,ESD 是否正在运行?
对于 Linux 平台客户端设备,ESD 必须正在运行。
可使用以下命令检查 ESD 是否正在运行:
$ ps -ef | grep esd
当客户端设备桌面会话启动时,ESD 通常会启动。如果 ESD 未在运行,请检查是否在 ESD 配置文件 /etc/esd.conf
中启用了自动产生。正确的设置为 auto_spawn=1
。
检查客户端设备上的音量控件以查看用户是否将音量设置为静音,或将音量级别设置得太低以致于听不到。
检查应用服务器或应用程序中的音量控件以查看用户是否将音量设置为静音,或将音量级别设置得太低以致于听不到。
5.3.7.1.5: 是否已在 SGD 服务器上启用了音频服务?
默认情况下,为 SGD 阵列禁用了 SGD 音频服务。
有关如何启用 SGD Windows 音频服务的详细信息,请参见第 5.3.5.1 节 “如何启用 SGD Windows 音频服务”。
有关如何启用 SGD UNIX 音频服务的详细信息,请参见第 5.3.5.2 节 “如何启用 SGD UNIX 音频服务”。
默认情况下,SGD 音频服务使用 "Medium Quality Audio"(中等质量音频)。将音频质量更改为 "Low Quality Audio"(低等质量音频)或 "High Quality Audio"(高等质量音频)将会限制应用程序会话中使用的音频格式,并且可能会造成客户端设备无法播放音频。
在管理控制台中的 "Global Settings"(全局设置)→ "Client Device"(客户端设备)选项卡上,将音频质量重置为 "Medium Quality Audio"(中等质量音频)。
5.3.7.1.7: 对于 Windows 应用程序,应用服务器上是否启用了音频重定向?
只有在 Windows 远程桌面会话主机上启用了音频重定向才可播放音频。有关支持音频重定向的 Windows 平台的详细信息,请参见第 4.1.3 节 “配置 Microsoft Windows 远程桌面服务以与 SGD 配合使用”。
在 Windows 远程桌面会话主机中,音频重定向默认情况下处于禁用状态。
5.3.7.1.8: 对于 Windows 应用程序,是否启用了 "Remote Audio"(远程音频)属性?
Windows 应用程序对象的 "Remote Audio"(远程音频)(--remoteaudio
) 属性将导致音频在 Windows 应用服务器上,而不是在客户端设备上播放。对于 Windows 应用程序对象,该属性默认情况下被禁用。
在管理控制台中,在 Windows 应用程序对象的 "Client Device"(客户端设备)选项卡上禁用 "Remote Audio"(远程音频)属性。
5.3.7.1.9: 对于 Windows 应用程序,在托管用户会话的 SGD 服务器与托管应用程序会话的 SGD 服务器之间是否有防火墙?
对于 Windows 应用程序,SGD 服务器之间的防火墙可能会干涉音频连接,请参见第 1.4.2 节 “SGD 服务器之间的防火墙”。
5.3.7.1.10: 对于 X 应用程序,在应用服务器与 SGD 服务器之间是否有防火墙?
对于 X 应用程序,SGD 音频守护进程将通过随机端口连接到 SGD 服务器。如果应用服务器与 SGD 服务器之间有防火墙,则防火墙必须允许在所有端口上从应用服务器连接到 SGD 服务器。
5.3.7.1.11: 对于 X 应用程序,是否正在运行 SGD 和 SGD 增强模块的兼容版本?
如果 SGD 的版本与 SGD 增强模块的版本不同,则 UNIX 音频服务可能无法正常工作。例如,要在通过 SGD 版本 4.7 显示的 X 应用程序中播放音频,Linux 和 UNIX 平台应用服务器必须运行 4.7 版的增强模块。
可使用以下命令检查 SGD 增强模块的当前版本:
$ /opt/tta_tem/bin/tem version
可使用以下命令检查 SGD 的当前版本:
$ tarantella version
有关如何升级 SGD 增强模块的详细信息,请参见《Oracle Secure Global Desktop 发行版 4.7 安装指南》。
5.3.7.1.12: 对于 X 应用程序,是否已安装了 SGD 增强模块的音频模块?
为了能够在 X 应用程序中播放声音,必须在应用服务器上安装并运行 SGD 增强模块的音频模块。
有关如何安装 SGD 增强模块的详细信息,请参见《Oracle Secure Global Desktop 发行版 4.7 安装指南》。
如果您正在 Oracle Solaris 平台上使用区域,则音频模块必须安装在全局区域中才能工作。
可使用以下命令检查 UNIX 音频进程是否正在运行:
$ /opt/tta_tem/bin/tem status
使用以下命令启动 UNIX 音频模块:
# /opt/tta_tem/bin/tem startaudio
您必须是超级用户 (root) 才能使用此脚本。
5.3.7.1.13:
X 应用程序是否被固定编码为使用 /dev/audio
或 /dev/dsp
设备?
如果应用程序被固定编码为使用 /dev/audio
或 /dev/dsp
设备,您可能必须启用 SGD 音频重定向库以确保应用程序使用 SGD 音频驱动程序仿真器。请参见第 5.3.4 节 “针对音频配置 X 应用程序”。
5.3.7.1.14: X 应用程序是否在以正确的格式输出声音?
SGD 音频驱动程序仿真器是一个 OSS 驱动程序。可能必须对 X 应用程序进行配置以使用 OSS。如果您的系统使用 ALSA,则可能必须在内核中启用 ALSA OSS 仿真模块。
5.3.7.1.15: 对于 UNIX 或 Linux 平台应用服务器,SGD 音频驱动程序是否已装入到内核中?
在应用服务器上安装 SGD 增强模块时,也将安装 SGD 音频驱动程序 sgdadem
。检查音频驱动程序是否已装入到内核中。
在 Oracle Solaris 平台上,可使用 modinfo -c 命令检查是否已装入了 sgdadem
模块。
在 Linux 平台上,可使用 lsmod 命令检查是否已装入了 sgdadem
和 soundcore
模块。
如果音频驱动程序已安装但未装入,您可以尝试手动装入该模块,如下所述:
在 Oracle Solaris 平台上,使用 modload -i moduleID
命令。使用 modinfo -c 命令查找 moduleID
。
在 Linux 平台上,可使用 modprobe sgdadem 命令。
如果手动装入音频驱动程序时产生任何错误,请尝试更正这些错误并重新装入该驱动程序。
如果未列出 SGD 音频驱动程序,请检查音频模块安装日志以查看是否有任何错误。安装日志为 /opt/tta_tem/var/log/tem_unixaudio_inst.log
。如果该日志报告了任何错误,请尝试更正这些错误并重新装入该驱动程序。
如果音频驱动程序未装入到内核中,请与 Oracle 支持人员联系。
5.3.7.1.16: 对于 X 应用程序,SGD 音频守护进程是否正在应用服务器上运行?
有一个名为 sgdaudio
的 SGD 音频守护进程在为通过 SGD 访问的每个 X 应用程序运行。可使用以下命令查看音频守护进程的实例:
$ ps -ef | grep -i sgdaudio
如果用户没有音频守护进程,请检查音频守护进程日志文件以查看是否有任何错误。SGD 音频守护进程将所有致命错误记录到 /opt/tta_tem/var/log/sgdaudio
文件中。
PID
.log
5.3.7.1.17: 对于 X 应用程序,是否存在 SGD 音频设备节点?
如果 SGD 音频守护进程正在运行,它将启动 /tmp/SGD/dev/sgdaudio
目录中的一个音频设备节点。
在 X 应用程序会话中,检查用户的 SGDAUDIODEV
、AUDIODEV
和 AUDIO
环境变量的值。这些变量必须设置为该 SGD 音频设备节点的位置。
如果已正确设置了环境变量,请检查 /tmp/SGD/dev/sgdaudio
目录中是否存在设备文件。
5.3.7.1.18: 对于 X 应用程序,音频调试日志记录是否显示了应用程序的任何错误?
在应用服务器上启用 UNIX 音频调试日志记录,并检查日志文件以查看是否有错误。
有关更多详细信息,请参见第 5.3.7.5 节 “启用 UNIX 音频调试日志记录”。
如果在 Windows 应用程序会话中音频录制无法正常运行,请使用以下核对表来解决该问题。
Questions
5.3.7.2.1: 客户端设备是否有音频录制设备?
5.3.7.2.2: 客户端设备上录制音量是否设置为静音?
5.3.7.2.3: 应用服务器上录制音量是否设置为静音?
5.3.7.2.4: 是否已在 SGD 服务器上启用了 Windows 音频输入服务?
5.3.7.2.5: 对于 Windows 应用程序,是否在应用服务器上启用了音频录制重定向?
5.3.7.2.6: 对于 Windows 应用程序,在托管用户会话的 SGD 服务器与托管应用程序会话的 SGD 服务器之间是否有防火墙?
Questions and Answers
为了能够录制音频,客户端设备必须具有音频录制设备。如果有音频录制设备,请检查该音频录制设备是否正常工作。
检查客户端设备上的录制音量控件以查看用户是否将录制音量设置为静音,或将音量级别设置得太低以致于听不到。
检查应用服务器或应用程序中的录制音量控件以查看用户是否将录制音量设置为静音,或将音量级别设置得太低以致于听不到。
5.3.7.2.4: 是否已在 SGD 服务器上启用了 Windows 音频输入服务?
默认情况下,为 SGD 阵列禁用了 SGD Windows 音频输入服务。
有关如何启用 SGD Windows 音频输入服务的详细信息,请参见第 5.3.5.3 节 “如何启用 SGD Windows 音频输入服务”。
5.3.7.2.5: 对于 Windows 应用程序,是否在应用服务器上启用了音频录制重定向?
只有在 Windows 远程桌面会话主机上启用了音频录制重定向才可录制音频。有关支持音频录制重定向的 Windows 平台的详细信息,请参见第 4.1.3 节 “配置 Microsoft Windows 远程桌面服务以与 SGD 配合使用”。
在 Windows 远程桌面会话主机中,音频录制重定向默认情况下处于禁用状态。
在 Microsoft Windows 7 Enterprise 平台上,将以下注册表项添加到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
项。
"fDisableAudioCapture"=dword:00000000
5.3.7.2.6: 对于 Windows 应用程序,在托管用户会话的 SGD 服务器与托管应用程序会话的 SGD 服务器之间是否有防火墙?
对于 Windows 应用程序,SGD 服务器之间的防火墙可能会干涉音频连接,请参见第 1.4.2 节 “SGD 服务器之间的防火墙”。
如果音频模糊或失真,请调整音频质量和音频压缩设置以查看该操作能否改善音频。您可以调整以下内容:
管理控制台中 "Global Settings"(全局设置)→ "Client Device"(客户端设备)选项卡上的 "Sound Quality"(声音质量)属性。
管理控制台中 SGD 服务器的 "Protocol Engines"(协议引擎)→ "Audio"(音频)选项卡上的 "Audio Output Packet Compression"(音频输出包压缩)或 "Audio Input Packet Compression"(音频输入包压缩)属性。
默认情况下,仅为较慢的连接启用了数据压缩。要为所有连接启用数据压缩,请使用 "Always"(始终)设置。
如果您在 Windows 应用服务器上启用了音频播放并启用了 SGD 音频服务,则所有用户都可以在其 Windows 应用程序会话中播放音频。
如果您在 Windows 应用服务器上启用了音频录制并启用了 SGD Windows 音频输入服务,则所有用户都可以在其 Windows 应用程序会话中录制音频。
不过,播放和录制音频会增加使用的网络带宽量,因此您可能希望限制这些功能的使用。当前,唯一的方法是对 Windows 应用服务器上的用户组禁用音频播放和音频录制。要执行此操作,请在 Computer Configuration\Administrative Templates\Windows Components\Remote Desktop\Device and Resource Redirection
中为组策略对象禁用 "Allow audio and video playback redirection"(允许音频和视频播放重定向)和 "Allow audio recording redirection"(允许音频录制重定向)设置。
对于 Windows Server 2008 R2 之前版本的 Windows 应用服务器,音频播放设置称为 "Allow audio redirection"(允许音频重定向),并且组策略对象位于 Computer Configuration\Administrative Templates\Windows Components\Terminal Services\Client Server Redirection
。
对这些设置的更改仅应用于新 Windows 远程桌面服务会话。
要启用 UNIX 音频调试日志记录,请在应用服务器上以超级用户 (root) 身份登录,然后编辑 /etc/sgdtem.conf
文件。在该文件中更改 SGDUNIXAUDIODEBUG
环境变量的值,如下所示:
SGDUNIXAUDIODEBUG=1; export SGDUNIXAUDIODEBUG
要获取调试日志记录输出,用户必须启动一个新的应用程序实例。暂停和恢复应用程序不会生成任何输出,也不会启动新的 SGD 音频守护进程实例。
调试日志记录输出将被发送到 /opt/tta_tem/var/log/sgdaudio
文件。
PID
.log