You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AudioGraph输出设备断连重连后启动报错,除重建外有其他解决办法吗?

解决AudioGraph设备重连后AUDCLNT_E_RESOURCES_INVALIDATED错误的替代方案

针对你遇到的设备断开重连后启动AudioGraph抛出0x88890026(AUDCLNT_E_RESOURCES_INVALIDATED)错误的问题,除了重建整个AudioGraph,还有以下可行方案:

1. 提前监听设备断开事件,主动清理失效节点

设备断开时,原AudioDeviceOutputNode关联的硬件资源已经失效,此时要在设备断开的第一时间清理连接并释放节点,避免后续操作触发崩溃:

  • 注册AudioGraph.UnavailableDevicesChanged事件,在设备变为不可用时,先移除所有输入节点到该输出节点的连接,再释放输出节点资源(不要调用Close,直接Dispose):
    audioGraph.UnavailableDevicesChanged += (sender, args) =>
    {
        if (audioDeviceOutputNode == null) return;
        
        // 移除所有输入节点到失效输出节点的连接
        foreach (var inputNode in audioGraph.AllNodes.OfType<AudioInputNode>())
        {
            inputNode.RemoveOutgoingConnection(audioDeviceOutputNode);
        }
        
        // 释放输出节点资源
        audioDeviceOutputNode.Dispose();
        audioDeviceOutputNode = null;
    };
    

2. 设备重连后重建输出节点与连接

用户返回设备重连后,重新创建输出节点并恢复输入节点的连接,再启动AudioGraph:

// 设备重连后执行此逻辑
var outputNodeResult = await audioGraph.CreateDeviceOutputNodeAsync();
if (outputNodeResult.Status == AudioGraphCreationStatus.Success)
{
    audioDeviceOutputNode = outputNodeResult.DeviceOutputNode;
    
    // 重新建立输入节点到新输出节点的连接
    foreach (var inputNode in audioGraph.AllNodes.OfType<AudioInputNode>())
    {
        inputNode.AddOutgoingConnection(audioDeviceOutputNode);
    }
    
    audioGraph.Start();
}

3. 切换到共享模式创建输出节点(场景允许时)

如果你的音频场景不需要独占设备,创建输出节点时使用AudioSharingMode.Shared模式,这种模式下系统会自动处理设备重连后的资源适配,降低资源失效的概率:

var creationOptions = AudioDeviceOutputNodeCreationOptions.Create(
    sharingMode: AudioSharingMode.Shared);
var outputNodeResult = await audioGraph.CreateDeviceOutputNodeAsync(creationOptions);

关于你之前尝试失败的原因

  • 调用AudioDeviceOutputNode.Close会终止整个AudioGraph的所有资源,因为输出节点是音频图的核心终端,Close操作会直接关闭整个图;
  • 设备重连后再调用RemoveOutgoingConnection,原输出节点的资源已经完全失效,此时操作会触发内存访问错误导致崩溃,必须在设备断开时提前处理。

内容的提问来源于stack exchange,提问作者Tom Huntington

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:12:48