如果将多个网络摄像头或麦克风连接到客户端,则可以在具有实时音频-视频功能的远程桌面中使用一个首选网络摄像头和一个首选麦克风。要指定首选的网络摄像头或麦克风,用户可以在设置菜单中配置相应选项,或者管理员可以编辑配置文件。
如果有首选网络摄像头或麦克风,则远程桌面将使用首选网络摄像头;如果没有,则将重定向所有网络摄像头或麦克风。
利用实时音频-视频功能,网络摄像头和音频输入设备无需使用 USB 重定向即可工作,所需的网络带宽量也大大减少。也支持模拟音频输入设备。
必备条件
- 如果要配置首选网络摄像头,请确认客户端系统中已安装并可正常使用该网络摄像头。
- 如果要配置首选麦克风,请确认客户端系统中已安装并可正常使用该麦克风。
- 验证您是否在远程桌面中使用 VMware Blast 或 PCoIP 显示协议。
首选网络摄像头和麦克风配置的工作原理
Horizon Client 支持通过两种不同的方法来配置用于实时音频-视频的首选网络摄像头和麦克风:设置菜单或 /etc/vmware/config 配置文件。下文介绍了每种方法设置的配置如何生效以及如何与其他配置同步。
- 当用户在设置菜单中更改首选网络摄像头和麦克风配置后,新配置将立即生效。此配置优先于 /etc/vmware/config 中定义的现有配置。
- 当管理员在 /etc/vmware/config 中更改首选网络摄像头和麦克风配置后,只有在用户启动 Horizon Client 或重新连接到远程会话后,新配置才会生效。此时,设置菜单中的配置将进行同步以反映 /etc/vmware/config 中的新配置。
- 要查看当前的网络摄像头和麦克风配置,请打开 ~/.vmware/rtav-preferences 文件。
有关如何使用任一方法设置首选网络摄像头和麦克风配置的说明,请参阅以下部分。
使用“设置”菜单配置首选网络摄像头和麦克风
- 启动 Horizon Client,然后连接到服务器。
- 单击桌面和应用程序选择窗口右上角的设置按钮(齿轮图标)。
- 选择实时音频-视频。
- 配置首选设备。
- 要配置首选网络摄像头,请从首选网络摄像头下拉菜单中选择特定网络摄像头。
- 要配置首选麦克风,请从首选麦克风下拉菜单中选择特定麦克风。如果选择默认,将使用在客户端系统设置中配置的默认麦克风。
如果选择特定设备,则只有选定的设备才会被重定向到远程桌面。
如果选择全部,将按以下方式进行重定向:
- 对于网络摄像头,Horizon Client 会重定向系统的 Video4Linux (V4L) 设备列表中显示的所有设备。
- 对于麦克风,Horizon Client 会重定向连接到客户端系统的所有音频输入设备。
使用 /etc/vmware/config 配置首选网络摄像头和麦克风
要在 /etc/vmware/config 文件中设置属性并指定首选设备,您必须确定特定字段的值。您可以在日志文件中搜索这些字段的值。
- 对于网络摄像头,应将 rtav.srcWCamId 属性设置为网络摄像头的 UserId 字段值,将 rtav.srcWCamName 属性设置为网络摄像头的 Name 字段值。
rtav.srcWCamName 属性的优先级高于 rtav.srcWCamId 属性。这两个属性都应指定同一个网络摄像头。如果这两个属性指定不同的网络摄像头,并且 rtav.srcWCamName 指定的网络摄像头确实存在,将使用该网络摄像头。如果该网络摄像头不存在,将使用 rtav.srcWCamId 指定的网络摄像头。如果这两个网络摄像头均找不到,则使用默认的网络摄像头。
- 对于音频输入设备,应将 rtav.srcAudioInId 属性设置为脉冲音频 device.description 字段的值。
- 启动客户端,打开网络摄像头或麦克风应用程序,以触发照相机设备或音频设备的枚举并记录到客户端日志中。
- 添加您要使用的网络摄像头或音频设备。
- 使用 vmware-view 命令启动 Horizon Client。
- 发起一次通话,然后停止。
此过程将会创建一个日志文件。
- 查找网络摄像头或麦克风的日志条目。
- 使用文本编辑器打开调试日志文件。
包含实时音频-视频日志消息的日志文件位于 /tmp/vmware-<username>/vmware-RTAV-<pid>.log 中。客户端日志位于 /tmp/vmware-<username>/vmware-view-<pid>.log 中。
- 搜索日志文件,查找引用连接的网络摄像头和麦克风的日志文件条目。
- 以下示例显示了选定网络摄像头的摘录内容:
main| I120: RTAV: static void VideoInputBase::LogDevEnum() - 3 Device(s) found main| I120: RTAV: static void VideoInputBase::LogDevEnum() - Name=UVC Camera (046d:0819) UserId=UVC Camera (046d:0819)#/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.4/1-3.4.5 SystemId=/dev/video1 main| I120: RTAV: static void VideoInputBase::LogDevEnum() - Name=gspca main driver UserId=gspca main driver#/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.4/1-3.4.7 SystemId=/dev/video2 main| I120: RTAV: static void VideoInputBase::LogDevEnum() - Name=Microsoft® LifeCam HD-6000 for Notebooks UserId=Microsoft® LifeCam HD-6000 for Notebooks#/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.6 SystemId=/dev/video0 main| W110: RTAV: static bool AudioCaptureLin::EnumCaptureDevices(MMDev::DeviceList&) - enumeration data unavailable
- 以下示例显示了选定音频设备的摘录内容以及每个设备当前的音频等级:
vthread-18| I120: RTAV: bool AudioCaptureLin::TriggerEnumDevices() - Triggering enumeration vthread-18| I120: RTAV: static void AudioCaptureLin::PulseAudioGetSourceCB(pa_context*, const pa_source_info*, int, void*) - PulseAudio Get Source (idx=1 'alsa_output.usb-Logitech_Logitech_USB_Headset-00-Headset.analog-stereo.monitor' 'Monitor of Logitech USB Headset Analog Stereo') vthread-18| I120: RTAV: static void AudioCaptureLin::PulseAudioGetSourceCB(pa_context*, const pa_source_info*, int, void*) - channel:0 vol:65536 vthread-18| I120: RTAV: static void AudioCaptureLin::PulseAudioGetSourceCB(pa_context*, const pa_source_info*, int, void*) - channel:1 vol:65536 vthread-18| I120: RTAV: static void AudioCaptureLin::PulseAudioGetSourceCB(pa_context*, const pa_source_info*, int, void*) - PulseAudio Get Source (idx=2 'alsa_input.usb-Logitech_Logitech_USB_Headset-00-Headset.analog-mono' 'Logitech USB Headset Analog Mono') vthread-18| I120: RTAV: static void AudioCaptureLin::PulseAudioGetSourceCB(pa_context*, const pa_source_info*, int, void*) - channel:0 vol:98304 vthread-18| I120: RTAV: static void AudioCaptureLin::PulseAudioGetSourceCB(pa_context*, const pa_source_info*, int, void*) - PulseAudio Get Source (idx=3 'alsa_output.usb-Microsoft_Microsoft_LifeChat_LX-6000-00-LX6000.analog-stereo.monitor' 'Monitor of Microsoft LifeChat LX-6000 Analog Stereo') vthread-18| I120: RTAV: static void AudioCaptureLin::PulseAudioGetSourceCB(pa_context*, const pa_source_info*, int, void*) - channel:0 vol:65536
-
如果选定设备的任何源音频级别均不符合脉冲音频标准、源未设置为 100% (0 dB) 或选定源设备已静音,则会显示如下所示的警告:
vthread-18| I120: RTAV: static void AudioCaptureLin::PulseAudioSourceInfoCB(pa_context*, const pa_source_info*, int, void*) - Note, selected device channel volume: 0: 67% vthread-18| I120: RTAV: static void AudioCaptureLin::PulseAudioSourceInfoCB(pa_context*, const pa_source_info*, int, void*) - Note, selected device channel is muted
- 以下示例显示了选定网络摄像头的摘录内容:
- 使用文本编辑器打开调试日志文件。
- 复制设备的描述并使用它在 /etc/vmware/config 文件中设置相应的属性。
- 以网络摄像头为例,可通过复制 Microsoft® LifeCam HD-6000 for Notebooks 和 Microsoft® LifeCam HD-6000 for Notebooks#/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.6 将 Microsoft 网络摄像头指定为首选的网络摄像头,并按如下方法设置属性:
rtav.srcWCamName = “Microsoft® LifeCam HD-6000 for Notebooks” rtav.srcWCamId = “Microsoft® LifeCam HD-6000 for Notebooks#/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.6”
在此例中,您也可以将 rtav.srcWCamId 属性设置为 "Microsoft"。rtav.srcWCamId 属性支持部分匹配和完全匹配。rtav.srcWCamName 属性仅支持完全匹配。
- 对于音频设备示例,复制 Logitech USB Headset Analog Mono,以将 Logitech 耳机指定为首选音频设备,并按照如下所示设置属性:
rtav.srcAudioInId="Logitech USB Headset Analog Mono"
- 以网络摄像头为例,可通过复制 Microsoft® LifeCam HD-6000 for Notebooks 和 Microsoft® LifeCam HD-6000 for Notebooks#/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.6 将 Microsoft 网络摄像头指定为首选的网络摄像头,并按如下方法设置属性:
- 保存所做的更改,并关闭 /etc/vmware/config 配置文件。
- 从桌面会话中注销,然后启动新会话。
新配置将在启动新会话后生效。