【用户手册】常见问题 (FAQ)

VirtualAudioCable14年前 (2010-10-10)用户手册

...(某个术语)代表什么?

如果您在VAC 控制面板或音频中继器界面或本用户手册 中看到未知术语,请尝试在本地手册/帮助数据库 (.chm 文件)的“搜索”选项卡中输入该术语。如果右侧显示某些手册页,请阅读相应的主题。


如何将 VAC 用于/与...(某些任务/应用程序)一起使用?

尝试选择一些描述任务的关键字或应用程序名称,然后在“搜索”选项卡上输入它们。也许有一个食谱。


我正在评估试用版并听到重复的“试用”声音。这是否意味着 VAC 工作正常?

不,事实并非如此。这仅意味着加载了 VAC 驱动程序的试用版,并且信号以某种方式从虚拟电缆音频端点传输到扬声器/耳机。为了确保 VAC 适合您,请建立一个适当的信号路由链来传输有用的信号(如果使用 试用版,则与“试用”声音混合)。

换句话说,如果试用版完全按照您的需要工作,成功路由您的音频信号,并且唯一的不良影响是定期语音提醒,那么您可以认为 VAC 适合您。

如果您不知道从哪里开始,请尝试从头开始。


为什么 VAC 控制面板中的某些字段呈灰色?

这意味着该产品版本功能有限。


VAC 可以捕获/拦截系统中的所有声音吗?

不,不能。VAC 驱动程序绝不会影响音频流,除非明确请求。如果应用程序想要向特定音频设备播放声音或从特定音频设备录制声音,VAC 不会阻止它。要捕获/拦截来自/到应用程序的声音,您需要通过为 应用程序指定源/目标音频端点、将某些端点分配为默认端点等 来建立适当的路由场景。


VAC 能否确保绝对可靠和稳定的流媒体传输?

很不幸的是,不行。由于Windows不是实时操作系统,流媒体不稳定有一些客观原因,因此无法保证Windows下的流媒体绝对可靠和稳定。此外,纯软件流媒体不如硬件辅助流媒体稳定。

因此,必须采取一些特殊措施来实现更可靠、更稳定的流传输。请了解系统性能检查和调整、音频分层 问题、高级使用规则、操作方法 和故障排除部分。

如果由于时钟速率差异影响而出现缓冲问题,请使用电缆时钟校正功能。目前,只有音频中继器应用程序支持 动态电缆时钟调整。


为什么 VAC 有时会产生故障,而硬件设备却不会?

当应用程序在硬件设备上播放或录制时,只有软件部分(应用程序本身、中间库(如果有)、系统音频组件和设备驱动程序)会遇到不可预测的延迟,从而破坏流的稳定性。音频硬件与主CPU物理分离,独立工作,因此更加稳定,通常可以补偿一些延迟。

相反,像VAC这样的虚拟设备驱动程序服务于没有专用硬件支持的虚拟设备,因此驱动程序代码被迫与所有其他应用程序和系统组件竞争CPU资源。

此外,当应用程序在VAC等虚拟设备上播放或录制时,对面必须至少有一个应用程序。因此,所有这些应用程序和 VAC 驱动程序以及所有其他涉及的软件组件都会相互竞争并经历不可预测的执行延迟。数据处理涉及更多代码,但没有独立、稳定的组件可以补偿延迟。

在某些情况下,这些延迟甚至比硬件可以补偿的时间还要长。例如,如果您仅使用硬件设备运行低延迟(缓冲持续时间小于 15-20 毫秒)流媒体软件,并产生繁重的 CPU 和/或网络负载,请将大文件复制到外部 USB 设备或从外部 USB 设备复制大文件,请使用系统管理功能(笔记本电脑上的 Fn 键、锁定工作站然后再解锁的 Win-L、节能功能等),您可能也会注意到音频故障。


为什么音频流可能不稳定?

为了保持稳定的音频流,所有涉及的硬件和软件组件必须一致且及时工作。如果任何组件延迟反应,则整个流可能会失败,从而产生故障(咔嗒声、爆裂声或间隙)。

在 Windows 中,无法保证 应用程序(甚至内核模式驱动程序)代码一定会在给定的时间内执行。对于相对较长的时间段,比如一秒,概率几乎是100%,甚至100毫秒,概率也非常高。所以,一般来说,多线程工作得很好。但对于短期(20、10 甚至 1-3 毫秒),这种概率会显着下降。只有在所有数据处理层上使用足够的缓冲,才能防止任意数据丢失。然而,通过提高流的稳定性,长缓冲区也会增加延迟。

由于多种原因会出现意外的处理延迟:

  • Windows 不是实时操作系统。它成功地为许多实时应用程序提供服务,特别是如果调整得当,但不能保证 不会出现不可预测的延迟。如果不进行调整,延迟可能会达到数百毫秒。通过基本调整,它们可以减少到数十个。但您需要进行深度调整才能将它们减少到毫秒单位,更不用说微秒了。

  • 某些系统或电源管理功能使用可能调用BIOS和/或EC功能的ACPI 。这就需要切换到一种独占CPU核心的特殊执行模式,直到操作完成。

  • 大多数音频应用程序仅使用本质上更加稳定和高效的硬件音频设备进行测试,因此没有性能裕度来补偿纯软件虚拟设备增加的延迟。

  • 安全需求不断增长,越来越多的硬件和软件资源花费在安全上。特别是硬件中的SMM、 Intel ME、AMD PSP 、软件中的 HVCI ,可能会产生不可预测的执行延迟。

  • 某些内核模式部分(包括 MS 本机部分)可能会违反自旋锁的 25-mcs 限制和/或DPC 的 100-mcs 限制,从而长时间抢占任何用户模式代码。它可以在LatencyMon中清晰可见。

  • 硬件变得越来越强大,而软件开发人员却常常忽视优化。由于大多数开发人员努力为他们的工作站使用顶级硬件,因此他们可能会遇到足够的性能,但在用户的硬件上,性能可能会低得多。

  • 硬件变得更便宜,而软件开发变得更昂贵。大多数软件开发人员认为,升级硬件比优化软件更好。

  • 硬件和软件的复杂性不断增加,控制所有组件变得更加困难。

不幸的是,由于所有这些特性,以低延迟实现高流稳定性是一种萨满教。通常,台式机系统比笔记本电脑更稳定、更可预测,因为笔记本电脑比台式机具有更多的节能功能。在某些情况下,不可能同时拥有稳定的流媒体和高网络和/或 USB 吞吐量,您必须牺牲一些东西。


VAC 是否使用注册密钥、互联网激活程序或其他技术许可措施?

不,事实并非如此。购买许可证后,您将获得完整版包,只需安装它即可,而不是精简版/试用版。


我创建了几条虚拟电缆,但只有其中一些是可见的。为什么?

从Vista 开始的 Windows 版本 使用音频端点生成器服务,为低级引脚 创建高级端点。在每次重新配置引脚时,Endpoint Builder 必须查询引脚以获取各种信息并创建/修改/删除适当的端点。

从一个版本到另一个版本,Endpoint Builder 的行为变得越来越糟糕。它向每个引脚发出数百个冗余查询。为了防止系统负载过高,Windows 可能会使用某种限制,在顺序查询之间插入暂停。系统负载减少,但处理时间显着增加。对于具有 1-3 个端点的典型硬件设备,时间绝不会超过几秒。但 VAC 驱动程序为每条虚拟电缆暴露了 4 个引脚,因此对于 15-20 条电缆,处理可能需要 2-3 分钟。创建 100-150 根电缆可能需要多达数百兆字节的 RAM 和 15-20 分钟的 100% CPU 负载。如果电缆数量显着减少,也会产生相同的效果。

电缆端点在列表中出现的顺序未定义。例如,“第 10 行”可能会立即出现,然后是“第 2 行”,然后是“第 1 行”,依此类推。


我的音频适配器(声卡)没有“What You Hear”或“Stereo Mix”录音功能。VAC 实施了吗?

不,事实并非如此。VAC 不与其他音频设备交互。它不能自动拦截任何音频信号,只有在音频路径中明确使用虚拟电缆设备时,它才能路由信号。

如果您使用的是 Vista/Win7,您的音频适配器中可能存在环回源线路,但默认情况下处于禁用状态。要检查它,请右键单击系统托盘中的扬声器图标,选择“录音设备”,右键单击列表中的任何设备,然后选择“显示禁用的设备”。可能会出现一些附加设备。如果有“Stereo Mix”之类的设备,请右键单击它并选择“启用”。

您可以通过将应用程序和/或系统的音频输出定向到某些虚拟电缆设备来录制应用程序和/或系统的声音。可以通过在应用程序的音频设置中选择虚拟电缆设备或使用虚拟电缆作为系统默认设备来实现。

由于音频输出将进入虚拟电缆而不是声卡,因此您需要监视电缆才能听到声音。


我的音频适配器(声卡)具有模拟和数字输出,但我无法同时使用它们。VAC 可以提供帮助吗?

很不幸的是,不行。VAC 无法扩展有限的硬件功能。如果音频适配器允许同时使用其输入/输出并且其驱动程序不限制它,那么您应该能够独立使用它们。但一些适配器具有简化的驱动程序,仅允许使用单个输出线。您可以寻找另一个驱动程序,也许它存在。例如,Windows 5.x的驱动程序也适用于Windows 6.x +。


VAC 可以通过网络在不同 PC 之间路由声音吗?

不可以,VAC 仅在本地运行。但您可以将 VAC 与网络音频软件一起使用。


我尝试过试用版但不满意。完整版效果会更好吗?

不,不会的。完整版具有与试用版相同的功能。完整版仅未在信号中添加女声提醒。试用版和完整版的音质相同,试用版不会出现信号质量下降的情况。

如果您已成功将试用版应用于您的配置,则完整版将适合您。如果试用版的功能不足以满足您的需要,完整版无法提供更多功能。

如果您对试用版的稳定性不满意,完整版在相同条件下 不会更好地工作,因为条件不允许软件可靠地工作。在这种情况下,请检查您的系统是否适合,并了解流媒体稳定性指南。


我需要多少条虚拟电缆来执行我的任务?

您需要与要在应用程序之间传递的 独立音频信号 一样多的电缆:

  • 要将单个音频信号从一个应用程序传递到另一个应用程序,您需要一根电缆。

  • 要混合来自三个应用程序的三个信号并将单个组合信号传递到第四个应用程序,您仍然需要一根电缆。

  • 要传递两个独立的信号,您需要两根电缆。

  • 要将两个信号混合为一个组合信号,并将其他三个信号混合为一个单独的组合信号,您仍然需要两根电缆,依此类推。

请注意,每根电缆都是单向的。因此,如果您有两个能够同时产生和接收音频信号的应用程序,则需要两根电缆来在这些应用程序之间创建双向通信。


VAC 的声音延迟是多少?

VAC 本身几乎不会增加延迟,但实际值更多地取决于应用程序使用的音频接口和应用程序的音频缓冲区配置,而不是虚拟电缆定时事件 频率。

使用独占模式设备访问( Windows 5.x中的硬件加速DirectSound、Windows 6.x +中的WASAPI) 可以实现非常好的性能和延迟。为了获得更好的性能和更低的延迟,您可以直接使用KS 协议,或通过ASIO4ALL或ASIO2KS等ASIO包装器使用。共享模式流方法具有最低的性能和最高的延迟,但它们更能容忍意外的执行延迟。

通常,延迟时间与音频缓冲区粒度 相当。例如,如果应用程序使用的总缓冲时间为 500 毫秒,分为四个缓冲区部分,则平均应用程序延迟时间将为 500 / 4 = 125 毫秒。如果电缆配置为每次中断 10 毫秒,则电缆延迟将不超过 10 毫秒。如果使用 KS 以外的音频接口,系统音频引擎会增加一些延迟。

要减少延迟时间,首先尝试降低应用程序的音频缓冲区粒度。一些MME应用程序允许指定音频缓冲区的数量和总缓冲时间;将这些值设置为每个缓冲区部分 50..100 毫秒,总时间为 500..1000 毫秒。DirectSound应用程序还可以允许指定用于处理的最小缓冲区片段大小。

您还可以尝试减少电缆 每次中断的毫秒数,但这可能有助于仅将延迟时间减少几毫秒。

通过精心调整的配置(硬件、操作系统和应用程序),可以将延迟时间缩短至几毫秒。在 Windows 中,延迟小于 1-2 毫秒是不可能的,因为最低计时间隔为 1 毫秒。


VAC 支持 ASIO 吗?

不,事实并非如此。要获得本机ASIO支持,应为 VAC 内核模式驱动程序创建额外的 ASIO 驱动程序 DLL。该DLL应该调用驱动程序来传输音频数据。为了与 VAC 驱动程序交互,此类 DLL 可能使用KS 协议或专有协议。

但是 VAC 内核模式驱动程序有效地实现了KS 协议(传统协议和 RT Audio),并且有现成的 ASIO 到 KS 包装器,例如ASIO4ALL和ASIO2KS。此类包装器将 ASIO 操作转换为 KS 操作。看来至少ASIO4ALL足够高效,因此拥有原生 ASIO 实现并不比上面描述的 ASIO-to-KS 实现更好。

如果有准确的测量结果表明 VAC 的 ASIO4ALL 性能明显低于直接 KS 性能,那么这就是为 VAC 实现本机 ASIO 驱动程序的原因。如果您有此类数据,请分享。 


ASIO 比标准 Windows 音频接口更好吗?

ASIO于 20 世纪 90 年代推出,当时 Windows 只有用于通用目的的MME 音频接口,而DirectSound刚刚发布用于互动游戏。当时还没有适合低延迟播放、录音和准确时间戳、用于专业音频环境的标准音频接口。

大多数多媒体用户对多客户端和格式转换功能的需求远高于低延迟和/或BitPerfect 传输。因此微软专注于兼容性,而斯坦伯格和其他专业硬件制造商则专注于精确和低延迟的处理。由于简单可靠,ASIO 已优选用于多通道音频处理和混合,而不是典型的多媒体流。

在 20 世纪 90 年代末,微软实现了Kernel Streaming,这是一种内核模式音频接口,足以执行任何可以想象的音频传输和/或处理方式,而开销可以忽略不计。20多年来,KS得到了显着的改进,但并没有发生任何根本性的变化。每个新功能都是通过简单地添加新属性和事件来实现的,不会影响基本原理、性能或失去向后兼容性。

如果 KS 在 ASIO 之前添加(并公开),它可以成功地用于开发 ASIO 的所有任务,并且 ASIO 就不是必需的。但KS不仅实施较晚,而且长期不向公众开放。多年来,没有公开的 KS 文档存在。即使现在,KS 还没有完整记录;文档仅完整涵盖端口类驱动程序微型端口。

因此,ASIO 已成为实时运行、要求尽可能低的延迟且无需中间信号处理(一般而言)的音频硬件和软件的行业标准。KS 已成为常见的、通用的基本 Windows 界面,所有其他界面都构建在其之上。

所有其他 Windows 音频接口的效率都比 ASIO 和 KS 低得多。就效率而言最接近的是 处于独占模式的WASAPI。

ASIO 和 KS 具有相同的效率,都是直接与其设备通信,没有中间层。更重要的是,KS在形式上更高效,因为它完全由内核模式驱动程序实现,而 ASIO 是由用户模式 DLL 实现的,无法直接与硬件一起工作,并且为此需要内核模式驱动程序,因此有两层而不是一层。但 ASIO 驱动程序 DLL 可以是一个非常薄的软件层,因此性能差异可以忽略不计。

开发内核模式驱动程序以支持 ASIO 和 KS,从技术上讲,创建基本 KS 驱动程序并在 KS 之上实现 ASIO(如ASIO4ALL或ASIO2KS  所做的那样)是最佳的。但碰巧的是,大多数将 KS 驱动程序与 ASIO 驱动程序一起提供的硬件供应商,创建单独的内核模式 KS 驱动程序模块,或者与 KS 协议分开实现 ASIO 专有协议。其原因尚不清楚。也许这是因为高效的 KS 协议比高效的专有协议更难实现,因此正在创建一个最简单的微型端口驱动程序,足以实现最低的 KS 要求。

如果同一硬件同时存在 ASIO 和 KS 驱动程序,并且两者均以尽可能高的效率正确实现,则使用哪个接口没有区别。两者都将确保相同的效率、延迟和精度。但在实践中,纯 ASIO 驱动程序的实现更加仔细和正确,因此它们通常工作得更好。

由于ASIO用于大多数专业音频软件,因此它通常被认为是“高科技”、“专业”、“酷”、“最佳选择”等。但ASIO本身并没有什么酷或高科技。任何接口只要实现得当,就会稳定、可靠、准确地工作。如果执行不当,效果就会很差。

因此,最好的接口是应用程序能够更好地实现和更好地支持的接口,无论其名称和/或评级如何。在实践中,大多数用于实时信号处理的应用程序(声音合成、吉他或语音效果、多通道混音、录音室录音等)都可以更好地与 ASIO 配合使用。大多数用于音频流(播放或录音)的应用程序与标准 Windows 界面配合得更好。 


VAC 可以将默认音频设备映射到不同的电缆以适应不同的应用吗?

VAC 不映射音频设备。如果您将某些虚拟电缆设备指定为系统默认录制和/或播放设备,则映射将由 Windows 执行。

从Win10版本 1803 开始,系统支持按应用程序设备/端点选择:(Windows 声音设置-应用程序音量和设备首选项(Win11中的音量混合器),但此功能可能无法正常工作。

在Windows 5.x中,您可以使用不同的用户帐户为不同的应用程序以不同的方式映射默认设备。


VAC可以在虚拟机(虚拟服务器、VPS/VDS)上使用吗?

VAC 可在任何 Windows 计算机上使用,无论其类型如何。但由于 VAC 是内核模式驱动程序,而不是用户模式应用程序,因此存在一些重要问题。请阅读有关虚拟化环境兼容性问题的信息。

远程工作,请阅读有关远程访问兼容性问题的信息。


新旧 5.1 和 7.1 扬声器/声道配置有何区别?

名为“ 5.1 ”或“ 5.1 back ”的 旧 5.1扬声器/通道配置包含后置扬声器/通道(左后和右后)。新配置包含侧扬声器/通道,并被命名为“ 5.1 环绕”。

名为“ 7.1 ”或“ 7.1 宽” 的旧 7.1 扬声器/通道配置包含“中心左前”和“中心右前”扬声器/通道。新配置包含左侧和右侧扬声器/通道,并被命名为“ 7.1 环绕”。 


为什么 24 位格式在音频属性的“高级”选项卡上列出两次?

这是因为24 位样本可以存储在 24 位(三字节)或 32 位(四字节)容器中。如果电缆的最大样本位数为 24,则只能使用三字节容器,并且您将看到每种 24 位格式一条记录。但如果最大位数为 32,则三字节和四字节容器都可以使用。由于此列表不指示容器大小,因此您会看到每种 24 位格式都有两个相同的记录。单击“测试”按钮,您可以在VAC控制面板的“当前格式”栏中看到详细信息。

Windows 不使用三字节或四字节容器来存储 8 位和 16 位样本,也不使用 20 位和 22 位样本,因此其他格式不存在歧义。


当仅使用 VAC 端点时,为什么麦克风端点会显示在托盘中?

Windows 在系统托盘 中显示麦克风图标,表示正在使用录音设备(实际执行录音)。这是为了防止秘密监听和秘密录音。

系统无法可靠地区分真实硬件音频设备和虚拟硬件音频设备,因此它指示任何设备的使用。,仅在使用麦克风类型端点时显示此类图标是不够的,因为麦克风也可以连接到线路输入,甚至可以通过适配器连接到数字输入。因此,如果遇到任何  录音操作, Windows 都会显示该图标。

但这些检查仅针对高级音频接口(WASAPI、DirectSound、MME 等)执行。在KS和ASIO级别上,不执行任何检查,因此存在秘密监听的风险。唯一的安慰可能是大多数音频驱动程序都是单客户端,因此保存 KS引脚唯一可用实例以进行秘密监听的进程会阻止系统音频引擎使用此引脚进行高级录音。因此,如果您尚未授权任何音频录制操作,但尝试从音频端点录制失败并出现“设备已在使用”之类的错误,这可能表明系统中存在隐藏活动,该活动使用某些功能从 pin 进行录制。低级音频接口。


VAC 消耗了多少 CPU?

它主要取决于同时处理的音频流数量,然后取决于 CPU 类型、时钟频率、内核数量、L1/L2 缓存大小、内存类型、时钟频率、Windows 配置、使用的音频接口、应用程序/设备交互算法、音频缓冲区大小、使用的缓冲区数量、电缆事件速率、音量控制、格式转换选项等。

例如以下配置:

  • T8300(2 核,2.4 GHz)、Q9550(四核,2.8 GHz)或 3610QM(四核,2.3 GHz)CPU

  • 单个虚拟电缆设备配置为每个事件 5 毫秒,无音量控制

  • 32 个音频中继器 KS 实例(虚拟电缆 1到虚拟电缆1、44100/16/2、每个缓冲区 20 毫秒、4 个缓冲区、无格式转换)

创建由 VAC 驱动程序处理的 64 个独立音频流,产生约 1% 的总体 CPU 负载。负载主要取决于流的数量。例如,16 根电缆和 32 个音频中继器 KS 实例(虚拟电缆 N 到虚拟电缆 N+1)产生相同的 1% 负载。

32 个音频中继器 MME 实例(每个缓冲区 500 毫秒,12 个缓冲区)创建由系统音频引擎处理的 64 个流和由 VAC 驱动程序处理的单个流,在 Windows 7 下产生大约 5-10% 的总体 CPU 负载。

通过格式转换和/或音量控制,每个流处理可能会消耗高达百分之十几的CPU资源。采样率和通道数越高,处理流所需的 CPU 资源就越多。

请注意,系统跟踪/调试功能(例如Driver Verifier)可能会显着增加 CPU 负载并降低流处理性能和稳定性。


使用虚拟电缆时,我发现CPU负载很高。正常吗?

如果当前电缆格式与录制/播放客户端的格式之间 存在格式差异,这是正常的。在这种情况下,将执行格式转换。它需要大量的CPU 资源。

检查所有活动电缆的每个中断参数的毫秒数。如果对于某些电缆此参数非常低 (1..2),请尝试将其至少增加到 3..7。

CPU资源还用于执行音量控制。如果您不需要特定电缆的音量控制,最好将其禁用。


在 Vista/Win7 中,我看到AudioDG进程 产生高CPU负载。正常吗?

在Windows 6.x +中,AudioDG进程(系统音频引擎)承载了系统中几乎所有的音频处理(基本音频接口支持、本地和全局音频效果(LFX/GFX)等)。如果您运行多个创建多个音频流的音频应用程序,尤其是使用音频效果,则无论是否使用虚拟电缆设备,AudioDG 都可能会产生大量 CPU 负载。


VAC 可以将我的 MIDI 序列渲染为 Wave 文件吗?

不,不能。VAC 模拟简单的电缆 并传输编码的数字音频,而 MIDI 序列根本不包含数字音频,它只包含乐谱等指令。将 MIDI 序列转换为声音需要特殊的解释器和音乐合成器。VAC 无法从 MIDI 序列合成声音。尽管如此,VAC 可以帮助您将某些软件合成器的输出录制到 Wave 文件中。您还可以使用内置的 Windows GS 软件合成器,将合成波形播放到系统默认播放设备。


此软件“仅限学习交流,不能用于商业用途”如用于商业用途,请到官方购买正版软件,追究法律责任与本站无关!

我们每月需支付高额服务器费用,捐赠将保证服务器有更好的配置和稳定运行;非常感谢您的捐赠支持。
(资源收集整理维护不易,敬请珍惜并感谢开发者。)