请随时将文档补丁发送到 vbox-dev 邮件列表。
调查音频问题
概述
为了进一步查明问题,首先必须确定音频问题是出在客户机端还是宿主机端。在宿主机端,有各种所谓的宿主机音频驱动程序(后端),它们是支持宿主机操作系统播放和录制客户机(VM)音频所必需的。
如果没有 VBox.log 文件和转储的音频输出文件,将无法进行诊断!
每日提示: 最好复制粘贴以下命令,以避免输入错误。
转储音频输出
要启用客户机音频输出转储,请执行以下操作
- 确保受影响的虚拟机不再运行。
- 运行
VBoxManage setextradata <Name-of-VM> "VBoxInternal2/Audio/Debug/Enabled" "true"
- 再次启动受影响的虚拟机。
现在,当在客户机上进行任何音频输出(播放)时,宿主机的临时目录中将创建单独的 .WAV 文件。
对于 Windows 宿主机,默认路径是 C:\Windows\Temp 或 C:\Users\<username>\AppData\Local\Temp。对于 Linux / Solaris / MacOS 宿主机,默认路径是 /tmp/。如有疑问,请分别查看 $TMP 或 $TMPDIR 环境变量。
要根据您的需要调整输出目录,请执行以下操作
VBoxManage setextradata <Name-of-VM> "VBoxInternal2/Audio/Debug/PathOut" "/path/to/your/output/directory"
创建的 .WAV 文件可以在宿主机上使用任何常规媒体播放器(例如 VLC、MPlayer 或 Windows Media Player)进行播放。
诊断
在运行中的虚拟机中播放 | 转储文件 | 诊断 |
---|---|---|
失真 | 正常 | 宿主机驱动程序(后端)问题 |
正常 | 失真 | 宿主机混音问题 |
失真 | 失真 | 设备仿真问题 |
启用扩展日志记录
注意:这些步骤仅适用于 VirtualBox 5.2 版本之前。新版本会自动执行这些步骤。
与往常一样,在诊断 VirtualBox 问题时,相应的 VBox.log 文件会很有用。为了收集有关实际音频状态的更详细信息,请执行以下操作
- 在 Windows 上
- 关闭所有虚拟机实例和 VirtualBox 程序,包括 VBoxSVC。
- 运行
setx VBOX_RELEASE_LOG "drv_host_audio.e.l.l2.l3.f+drv_audio.e.l.l2.l3.f+audio_mixer.e.l.l2.l3.f+dev_hda_codec.e.l.l2.l3.f+dev_hda.e.l.l2.l3.f+dev_ac97.e.l.l2.l3.f" /M
在管理员命令提示符下将其设置为系统级(必需)。
- 关闭管理员终端
- 以 普通用户 身份打开一个新终端
- 运行以下命令验证更改是否已正确应用
echo %VBOX_RELEASE_LOG%
- 启动 VirtualBox 管理器。
- 在 Linux/OS X/Solaris 上,停止 VirtualBox 管理器并通过在终端中运行以下命令来重新启动它
VBOX_RELEASE_LOG=drv_host_audio.e.l.l2.l3.f+drv_audio.e.l.l2.l3.f+audio_mixer.e.l.l2.l3.f+dev_hda_codec.e.l.l2.l3.f+dev_hda.e.l.l2.l3.f+dev_ac97.e.l.l2.l3.f VirtualBox
- 启动您要诊断音频的机器。
- 执行并重现音频操作。
好的,都完成了!现在怎么办?
重要: 新创建的 VBox.log 日志文件必须包含以下行
Audio: Verbose logging enabled
请从宿主机收集 VBox.log,将其打包(ZIP、RAR)成一个存档文件,并在我们的公共 Bug 跟踪器提交新的或现有的 Bug 报告时附上该存档文件。
注意:如果没有日志文件,我们将无法诊断您的问题,因此请务必始终附上。谢谢。
另外不要忘记再次禁用调试——否则这将很快用上述信息填满您的硬盘。
要禁用调试,请执行
VBoxManage setextradata <Name-of-VM> "VBoxInternal2/Audio/Debug/Enabled" ""