【用户手册】音频中继器应用

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

音频中继器是一款简单的应用程序,可将实时音频流从任何录制端点传输到任何播放端点。音频中继器可与 VAC 一起使用,将音频数据从真实声卡传输到虚拟电缆,使用真实声卡监视通过虚拟电缆的信号,在两条虚拟电缆之间传输音频数据等。

该应用程序有两个版本:plain (MME)和Kernel Streaming。

普通 (MME) 版本

普通版本的音频中继器使用MME 接口来访问高级音频端点。这意味着虚拟电缆的播放以共享模式通过系统音频引擎层进行,因此音频中继器无法完全控制用于系统音频引擎引脚实例创建的实际音频格式(请参阅音频分层问题)。要通过KS接口访问 ,请使用Kernel Streaming 版本。

要为虚拟电缆提供真实的音频信号,请在音频中继器的Wave In字段中选择声音适配器(卡)端点(麦克风、线路输入或其他),然后在Wave Out字段中选择虚拟电缆的端点。要监视通过虚拟电缆传输的音频信号,请在“波形输入”字段中选择虚拟电缆的端点,并在“波形输出”字段中选择声音适配器(卡)端点(扬声器、耳机或其他)。

在简单的情况下,您可以使用“监听”功能(自Win7起可用)而不是音频中继器。

您可以在“Wave Out ”字段 中保留“无” 。在这种情况下,Audio Repeater 只会从Wave In字段 中指定的  端点进行录制,而不播放录制的数据。如果您不需要进一步传递信号,它对于视觉信号电平监控非常有用。

在MME中,端点名称长度限制为 31 个字符,因此您不会总是看到完整的端点名称。

在开始使用音频中继器传输之前,选择可能接近连接到该虚拟电缆的其他应用程序使用的格式的格式参数。为了消除冗余的格式转换,请注意音频分层问题。

通道配置参数指定典型的通道配置(单声道、立体声、环绕声等)或允许您选择任何通道组合的自定义模式。

如果两个端点之一都与虚拟音频电缆 (VAC) 驱动程序关联,您可以打开VAC 时钟控制来消除时钟速率差异问题。

单击“开始”按钮后即开始传输。音频中继器打开两个音频端点并在它们之间维护连续的数据流。

通道配置复选框下的仪表指示器显示相应通道中的峰值信号电平。指标是对数的。低于 -6 dB 的电平显示为绿色,-6 至 -3 dB 的电平显示为黄色,高于 -3 dB 的电平显示为红色。

MME缓冲队列指示器

队列 仪表显示缓冲区队列中保存的数据缓冲区部分的百分比。如果计量器向右移动,则表示队列的数据量增加,反之亦然。在最稳定的状态下,两个队列都接近满状态(100%,右侧的指标)。

传输时间越长,队列大小差异越大,流中断概率越高。副活动(例如磁盘读/写、应用程序启动、高CPU 负载)可能会影响流稳定性。

指示灯颜色显示队列状态:绿色 - 正常,黄色/棕色 - 短,红色 - 非常接近重新同步点。

如果队列之一随着时间的推移不断变短,则可能表明 输入和输出端点之间存在显着的时钟速率差异。如果一个或两个端点都属于 VAC 驱动程序,请尝试使用VAC 时钟控制。

溢出和下溢计数器

有两个计数器:溢出和下溢。 当音频中继器没有用于记录数据的空闲缓冲区部分时,溢出计数器会递增(输入队列标尺位于左侧)。当音频中继器没有可播放的缓冲区部分(输出队列计量器位于左侧)时,下溢计数器会递增。

由于系统负载过重(当音频中继器没有接收到足够的CPU 时间)、时钟速率差异效应等, 可能会发生上溢和下溢。

在音频中继器中使用虚拟电缆端点,请注意这些应用程序的上溢和下溢与电缆的上溢和下溢相反。例如,当音频中继器没有可用缓冲区传递到电缆的录音端时,它会记录下溢(没有数据)。相反,电缆有数据但无法提供数据,因为没有缓冲区部分,因此电缆记录溢出(没有数据空间)。

由于定时事件周期不同,可能会出现队列耗尽和上溢/下溢的情况。每个音频设备都有自己的时间段来通知驱动程序和/或客户端应用程序有关流处理的进度。例如,如果设备每 15 毫秒发出一个通知事件,并且您指定 8 个部分(每个部分 5 毫秒)的总缓冲时间为 40 毫秒,则每个通知将指示录制/播放 3-4 个部分。它是整个缓冲区的重要部分,因此流传输会很粗糙且不稳定。您将需要增加缓冲时间和/或缓冲部分的数量以使流更加平滑。不幸的是,只有虚拟电缆允许指定定时事件周期;其他设备不会公开此信息,您应该通过实验来确定。

实际采样率和VAC时钟控制指标

上溢/下溢计数器旁边的SR字段显示流期间测量的 实际采样率。

它们上方的VAC 时钟字段显示VAC 客户端时钟控制的状态(如果使用此类控制)。只有单侧可以使用时钟控制,因此只能有一个指示灯处于活动状态。

该指示器在不同位置显示不同尺寸的矩形标签(从细垂直线到宽条)。标签的位置表示 VAC 时钟因子(1 - 位于中间,小于 1 - 向左移动,大于 1 - 向右移动)。标签的宽度表示时钟因子的稳定性:标签窄意味着因子变化较小,因此同步可靠;宽标签意味着该因子会受到强烈波动,并且可能会丢失同步。

电缆客户端时钟因子的实际值由VAC 控制面板在其电缆信息窗口中 显示。

选择合适的缓冲参数

要优化音频传输,您可以改变缓冲 时间(总缓冲区)和缓冲区部分 (数据块)的数量。总缓冲时间(以毫秒为单位)指定保留多少音频数据/空间来补偿传输/执行速率波动。缓冲时间越大,传输越稳健,由于任务切换、磁盘操作等原因而导致声音中断的机会越小。但缓冲时间越大,延迟值越大,之间的延迟也越大传入和传出的音频数据。典型的缓冲时间为 50-70 至 150-200 毫秒。由于内部缓冲,小于 30 毫秒的值通常会导致流中断系统音频引擎。

缓冲区部分的数量 定义了缓冲存储器被划分为多少部分。使用的缓冲部分越多,传输就越平滑,特别是在总缓冲时间很小时,并且预填充/重新同步功能工作得越精确。但是大量的部件会增加系统开销,并且使用超过 15..20 个部件可能不会使数据传输更顺畅。

为了避免声音中断,每个音频缓冲区部分应包含至少 3..7 毫秒的音频。因此,如果总缓冲时间为 100 ms,则可以将其分为 8-12 个部分,但对于 20 ms,不建议使用超过 4-8 个部分。

“预填充到”字段指定在开始数据传输之前要预填充的任何队列的数量。当传输开始时,输入队列被填充到 100%(所有缓冲区部分都排队),当指定数量的输出队列被记录的数据填充时,数据传输开始。预填充会增加适当的延迟,但可以防止队列耗尽(上溢或下溢)。对于小型 (50-200 ms) 缓冲,请使用 70-80%。对于更大的缓冲,请使用 90-100% 来开始,两个队列都已填满(两个指示器 都在右侧)。指定零将禁用队列预填充。

“重新同步于”字段指定通过重新同步保持填充的任何队列的数量。如果队列大小低于该数量,则数据传输将暂停,直到队列填满“预填充至”字段中指定的数量。每次重新同步都会导致一个故障(音频流中断),但避免了因队列耗尽而产生的连续故障。指定零将禁用队列重新同步。

如果总缓冲区持续时间和/或缓冲区部分数量较小(小于 5-10 毫秒和/或小于 4-6 个部分),重新同步功能可能无法正常工作,从而导致在不需要时重新同步。对于如此小的参数,最好禁用该功能(将百分比设置为零)。

如果使用 VAC 时钟控制,则 “重新同步于”控制将被禁用并被忽略。

优先级 字段控制音频中继器进程的优先级。优先级值越高,进程执行越顺利,其他进程的休息时间就越少。大多数进程具有“正常” 优先级值,音频中继器默认 具有“正常”值。

默认情况下,实时优先级仅适用于具有管理权限的用户。请小心设置此优先级值,因为它可能会导致 Windows 冻结。如果要在受限用户帐户下使用此优先级,请使用管理帐户中的本地安全策略编辑器为此帐户(或组)启用“增加计划优先级”策略。可以从 Windows 控制面板中的“管理工具”文件夹或通过在“开始-运行”对话框中键入“secpol.msc”来访问该编辑器。

在Windows 6.x +下,Audio Repeater在MMCSS中注册其工作线程以维持其优先级。如果轮询间隔为 5 毫秒或更长,则使用“音频”任务类别。否则,将使用“Pro Audio”任务类。因此,在Windows 6.x +下,不需要手动设置优先级。

使用VAC时钟控制功能动态调整电缆时钟

从4.70版本开始,虚拟音频线(VAC)驱动程序支持客户端锁定控制功能。音频中继器可以使用它来消除流之间的 时钟速率差异。

如果“ VAC 时钟模式”为“关”,则不使用VAC 时钟控制。使用“Any”时,应用程序会自动选择支持它的一侧(一侧必须支持时钟控制)。如果双方都支持(输入和输出端点均由 VAC 驱动程序公开),“输入”或“输出”必须指定应使用时钟控制的一方。

电缆时钟调整的实际状态由时钟控制指示灯和VAC 控制面板的电缆信息窗口 显示。

为了保持两个流同步,应用程序调整 VAC 时钟速率,以便输入和输出缓冲区队列尽可能满。因此,如果启用时钟控制,则预填充量始终设置为 100%,以从满输出缓冲区开始,然后保持满状态。缓冲数据量的差异被用作要最小化的误差值。

这种方法对于保持对意外性能波动的最大抵抗力是有效的,但它可能会产生虚拟电缆时钟速率的显着波动(时钟控制指示器显示宽标签)。由于流处理的特殊性,MME版本比KS版本产生更强的波动。

如果流没有上溢/下溢,并且两个缓冲区队列在整个时间内几乎已满,则可以安全地忽略 VAC 时钟速率波动。由于任何数字音频流 都假设数据以可变大小的部分传输,因此只有平均传输速率很重要。

如果您发现 VAC 时钟速率出现显着波动,请尝试增加缓冲区部分的数量。这将减少数据部分的大小,并且可以提高时钟控制质量。但不要忘记检查应用程序消耗的 CPU 时间,因为数据传输和时钟控制操作将以增加的频率执行。

重要的是,VAC时钟控制功能只能消除永久的 时钟速率差异,但不能防止由于系统性能波动而出现的问题。此外,如果经常发生显着的性能波动,使用 VAC 时钟控制甚至可能会恶化稳定性。您需要测试两种方式(有或没有 VAC 时钟控制)以选择最佳的一种。

您不仅可以对另一台设备的端点使用 VAC 时钟控制,还可以将一根虚拟电缆的时钟调整为另一根虚拟电缆的时钟。例如,如果音频链包括两条虚拟电缆和另一个音频设备的单个端点,则它可能很有用。在这种情况下,运行音频中继器的两个实例,在使用“外部”端点的实例中选择“任意”,并在另一个实例中为与第二条虚拟电缆关联的一侧选择“输入”或“输出”。

请注意,不可能补偿与 VAC 驱动程序无关的两个或多个音频端点之间的时钟速率差异,因为 VAC 驱动程序支持时钟控制功能,而其他音频驱动程序不支持。因此,“外部”端点应该是链中唯一的端点,否则流将无法长时间同步。

记录(输入)端点隐私

从1803版本开始,Windows 10 引入了“麦克风隐私设置”,这实际上会影响所有录音/输入端点。如果音频中继器遇到通常与禁用的录音端点访问相关的错误,它会提示打开系统的隐私设置窗口。

格式描述符选择

打开波形端点时,如果样本大小为 16 位或更少且通道数为 1 或 2,则音频中继器使用 WAVEFORMATEX 格式描述符。如果样本大小大于 16 位和/或通道数大于 2,则音频中继器使用现代WAVEFORMATEXTENSIBLE描述符打开端点 。

保存和恢复设置

“加载配置”和“保存配置”按钮允许加载或保存应用程序配置。“保存配置”按钮创建一个 UTF-16 编码文件,其命令行选项集与/Config选项兼容。Load Config读取以 ANSI、UTF-8 或 UTF-16 编码的文件,并将其解释为命令行选项集。

命令行选项

音频中继器接受多个命令行选项,允许对其进行预配置:

/输入:<字符串>输入(捕获、记录)端点 名称
/输出:<str>输出(播放、渲染)端点 名称
/采样率:<num>采样率(每秒采样数)
/BitsPerSample:<数字>每个样本的位数
/频道:<编号>通道数
/ChanCfg:<str>通道配置
/BufferMs:<编号>总缓冲持续时间(以毫秒为单位)
/BufferParts:<编号>缓冲件数量
/预填充:<百分比>开始前预填充的每个队列大小的百分比
/ResyncAt:<百分比>每个队列大小的百分比暂停直到预填充
/VacClockMode:<模式>VAC时钟控制模式
/优先级:<str>进程优先级
/窗口名称:<str>应用程序实例窗口的名称
/自动启动自动开始音频传输
/关闭实例:<str>通过窗口名称关闭指定的Audio Repeater实例
/配置:<字符串>从指定文件中读取选项。

选项名称不区分大小写。<Num>表示数字,<str> 表示字符串。指定与您在音频中继器窗口中看到的选项值完全相同的选项值,即使它们被剪切。端点名称必须完全按照音频中继器输入 和输出菜单中显示的方式 指定。不要指定设备管理器或声音/多媒体小程序中显示的名称。

您可以将焦点设置到“Wave in”或“Wave out”字段,然后按 Ctrl-C 将端点名称复制到剪贴板。然后您可以将其粘贴到命令行或批处理文件中。

如果字符串包含空格或其他特殊字符,请将其括在双引号 (") 中。为避免名称匹配问题,将删除前导/尾随空格,单词之间的空格组将替换为单个空格。要插入引号,请指定两个字符串中的连续引号。

如果要从控制台输入命令行 ,并且字符串包含控制台代码页中不存在的国家字符,请创建一个命令(批处理)文件,将命令行放入其中,并在命令之前插入CHCP命令线。有关CHCP命令说明,请参阅Windows 帮助和支持。将此文件保存为 UTF-8 编码,以便命令解释器 (cmd.exe) 识别它。

使用/Input和/Output选项,您可以将端点编号指定为#n,其中n 是音频中继器端点列表中的数字,从零开始。该数字比内部MME 数字大 1,因为 MME 对于常用端点使用从 0 开始的数字,对于默认端点使用从 -1 开始的数字。音频中继器使用 0 作为默认端点,从 1 开始编号作为其他端点。要不使用端点(仅输出),请指定破折号(#-)。

自定义 通道配置 选项 具有以下格式:

/ChanCfg:custom=<编号>

其中 <num> 是为KSAUDIO_CHANNEL_CONFIG 定义的十六进制通道掩码。

例如,要配置音频中继器,将“虚拟电缆 1”作为输入端点,“USB 扬声器”作为输出 1,采样率 48000,每个样本 16 位,两个通道(立体声),命令行参数应如下(单个,实线):

/输入:“虚拟电缆 1” /输出:“USB 扬声器” /采样率:48000 /BitsPerSample:16 /通道:2

/CloseInstance选项具有特殊含义。它不是为新启动的 Audio Repeater 实例指定参数,而是指示关闭具有指定窗口名称(之前由 / WindowName 选项指定)的现有实例。如果使用,它必须是命令行中的唯一选项。如果命名窗口存在(即使隐藏),窗口关闭消息将发送给它。该选项可用于关闭任何应用程序窗口,而不仅仅是音频中继器的窗口。

/Config选项指示读取指定路径的文件内容并将其解释为选项列表。文件可能包含其他/Config选项,等等。从文件中读取的选项将被处理,就像指定它们而不是/Config 选项一样。分号可用于在行尾添加注释,或“注释掉”整行或其尾部部分。

自动化

您可以为音频中继器创建快捷方式或从批处理(命令)文件 调用它以实现更好的自动化。有关详细信息,请参阅 Windows 帮助和支持中心(在搜索字段中键入“创建快捷方式”以了解如何创建和编辑快捷方式,键入“批处理文件”以了解如何使用批处理文件 )。

要创建快捷方式,请在 VAC 安装目录中找到音频中继器可执行文件,或在开始菜单的 VAC 文件夹中找到默认音频中继器快捷 方式。命令行参数应附加(空格分隔)到“目标”字段中的可执行文件路径。

在批处理文件中,使用“启动”命令(在 Windows 命令提示符窗口中 键入“ start /? ”进行解释)同时启动多个实例。

要在登录后自动运行音频中继器实例,请将快捷方式放置到“开始”菜单的“启动”文件夹。有关详细信息,请参阅Windows 帮助和支持。

最小化到托盘图标

音频中继器支持托盘最小化。要恢复,请左键单击该图标。要打开上下文菜单,请右键单击该图标。

要启动最小化到托盘的音频中继器,请使用带有/min选项的启动 命令(有关详细信息,请参阅“ start /? ”)或带有“最小化”运行模式的快捷方式。

内核流版本

该音频中继器版本旨在通过高性能和低延迟内核流 (WDM/KS) 访问低级波形音频端点。它的外观和工作原理与标准MME 版本相似,但有一些重要的区别。

使用KS版本,请注意它直接 访问波形引脚,不使用系统音频引擎或其他中间层。这意味着系统音频引擎不执行任何格式转换,只有设备和/或其驱动程序格式转换功能将起作用(如果有)。

此外,KS 版本直接分配一个引脚实例 ,因此如果设备驱动程序不允许多个引脚实例,则该引脚不能同时被多个应用程序和/或 Windows 本身使用。只要您在 KS 版本中保持打开一个引脚,您将无法打开同一引脚的另一个实例,即使通过其他 Windows 音频接口也是如此。

有关详细信息,请参阅音频分层问题。

因此,除非清楚地了解其工作原理以及与基本 MME 版本 有何不同,否则不要使用 KS 版本。

KS 引脚名称

“Wave in”和“Wave out”列表的每个条目代表单个 KS引脚。由于大多数KS 过滤器不提供其渲染/捕获引脚的名称,因此会显示过滤器名称。如果过滤器具有多个渲染/捕获引脚,则会将引脚编号前缀添加到名称中以区分不同的引脚。

请注意,KS设备/引脚名称通常与MME 端点名称不同。例如,捕获(记录)和渲染(播放)端的虚拟电缆引脚名称均为虚拟电缆 N。要在命令文件中指定引脚名称,请从 KS 版本窗口复制名称,而不是 MME 版本窗口。

KS 版本允许单独指定输入和输出通道配置。此功能可与 VAC电缆通道分散/聚集功能一起使用 或用于其他通道映射目的。请参阅分散/聚集功能使用 示例。

KS 缓冲队列指示器

内核流版本中的队列指示器的行为与MME 版本中的类似。输入队列在开始时被完全填满,但输出队列被填满到预填充点,以最小化时钟速率差异影响。在最稳定的状态下,两个队列指示器都应该位于右侧(队列已满)。

KS 命令行参数

KS 版本支持所有MME 命令行选项,以及一些附加选项:

/ChanCfgIn:<str>输入通道配置
/ChanCfgOut:<str>输出通道配置
/PacketModeIn:开|关如果支持,请对输入引脚使用数据包模式
/PacketModeOut:开|关如果支持,请使用带输出引脚的打包模式

根据应用程序版本,“/BufferParts”或“/Buffers”选项用于指定缓冲区部分的数量。

KS统计

在传输过程中,KS版本显示一些统计数据:

  • 模式- 支持和使用的通信协议 模式:N / NU - 支持/使用的缓冲区通知, P / PU -支持/使用的数据包模式 。缓冲区通知只能用于每个缓冲区的两个部分,并且只有在支持和使用通知的情况下才能使用数据包模式。

  • 延迟- 设备和驱动程序报告的延迟值。总计 - 驱动程序报告的总延迟,FIFO - 内部 DAC/ADC 队列持续时间,芯片组- 适配器芯片组添加的延迟,编解码器 - 适配器编解码器添加的延迟。根据设备和驱动程序,可能会显示更少或更多字段。

  • Pos 步骤- 实际位置步骤(粒度),以帧为单位。显示连续轮询之间记录/播放位置增加的帧数。使用的轮询间隔越少,计算出的位置粒度就越好。具有较小位置粒度的引脚通常具有较小的延迟。

  • 轮询- 轮询间隔(以微秒为单位)。应用程序多次轮询设备驱动程序以了解每个缓冲区部分的位置变化。例如,如果总缓冲持续时间设置为 20 ms,缓冲部分的数量设置为 4,则每个部分的持续时间为 5 ms。音频中继器多次轮询每个部分,以遇到具有适当分辨率的位置变化。“ Req ”表示请求的轮询间隔,“ Min ”、“ Avg ”和“ Max ”字段表示实际间隔统计。平均值明显小于请求的计时器分辨率和系统计时器分辨率,表明 CPU 和/或内部内核计时过载。

  • Sys time res -系统计时器 分辨率(以微秒为单位):

    • Req - 应用程序请求。

    • Act——系统实际使用的。

在输入/输出引脚名称 的右侧,显示KS 协议类型(传统或RT 音频)。RT Audio通常比传统缓冲具有更少的延迟,但并非所有驱动程序都支持此模式。如果驱动程序同时支持 RT 音频和传统模式,则使用 RT 音频。

“缓冲持续时间”字段显示实际的音频缓冲持续时间。对于旧协议,它始终等于指定的总持续时间。对于 RT 音频协议,由于系统强制舍入,实际持续时间可能会更长。

KS 格式限制

音频驱动程序仅支持WDM/KS级别的 一组有限格式 (格式范围)。如果设备引脚不支持给定格式,音频中继器将显示一条错误消息,列出该引脚驱动程序支持的格式范围。但这些范围仅代表“最佳情况”的支持;在特定的适配器配置中,实际接受的范围可能比报告的范围窄。

请注意,内核流版本直接与音频设备驱动程序交互,并使用与标准Windows 音频子系统 不同的通信技术。Microsoft 未完整记录KS 协议和属性,因此某些功能的实现仅基于实验结果。大多数音频驱动程序,即使是经过WHQL认证的驱动程序,也仅使用标准 Windows 音频子系统请求进行测试。对于非标准请求,此类驱动程序可能会生成错误甚至BSOD。例如, 如果为捕获操作选择低于 8000 的采样率, 某些Realtek WHQL 认证的驱动程序会生成 BSOD。

这种驱动程序行为绝对是不正确的,不应被视为音频中继器的问题,因为构建良好的驱动程序永远不会导致 BSOD。如果 VAC 以外的驱动程序导致 BSOD,请联系驱动程序供应商,而不是向 Audio Repeater 投诉。

RT 音频缓冲区类型和持续时间

对于RT Audio协议,应该分配一个循环缓冲区。如果缓冲区部分的数量为 2,音频中继器会尝试分配带有通知的缓冲区,如果成功,所得缓冲区大小/持续时间通常接近请求的大小。如果部件数量不同,或者驱动程序不支持缓冲区通知,则由于系统强制舍入,导致缓冲区大小可能会显着增大,从而增加延迟。因此,如果您想尽可能减少延迟,并且引脚支持通知(事件驱动)模式(PKEY_AudioEndpoint_Supports_EventDriven_Mode),请尝试将缓冲区部分的数量设置为2,并检查实际的缓冲区持续时间。

当缓冲区部分的数量为 2 并且引脚支持通知/数据包模式时,音频中继器使用数据包模式协议向驱动程序通知应用程序端的读/写进度。这不会增加效率和/或稳定性,但可以确定潜在的故障(上溢/下溢)。但请注意,注册的溢出/下溢本身并不一定意味着可听到的故障,反之亦然。

RT 音频数据包模式

如果驱动程序支持, 此参数允许应用程序使用数据包模式功能。此模式不会提高流传输效率或稳定性,它只是允许检测潜在的缓冲问题(故障)。

使用此模式,应用程序与驱动程序一起维护同步的数据计数器。如果同步被破坏,应用程序和驱动程序都会注册一个故障(缓冲区溢出或下溢)。因此,数据包模式对于控制具有相对长的缓冲区(50 毫秒或更长)的流稳定性以及系统负载不显着时非常有用。

在缓冲区较短(小于 20-30 毫秒)和/或系统负载较重(甚至是短期)的情况下,当应用程序与驱动程序交互“处于边缘”、几乎无法跟上彼此时,数据包模式可能会启动检测错误故障。检测到的故障可能会导致重新同步,从而调整流缓冲区位置,从而导致听到间隙、咔嗒声或爆裂声。在这种情况下,建议关闭数据包模式。

使用数据包模式,应用程序将从输入缓冲区复制到输出缓冲区的数据部分的大小限制为数据包大小。如果缓冲区非常短(小于 5-7 毫秒),可能会对性能和稳定性产生负面影响。


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

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