【问题标题】:How to play sound on all audio devices如何在所有音频设备上播放声音
【发布时间】:2011-12-21 03:49:01
【问题描述】:

我有一个提醒用户的程序。但现在它只在默认音频设备上发出警报。如果用户已插入耳机但未佩戴,这将是一个问题。所以我的问题是:“是否可以将警报声音设置为所有音频设备而不是仅默认设备?”

我正在使用 c#、wpf 和 .net 4.0 进行编程

现在我正在使用此代码播放警报声音:

private MMDeviceEnumerator devEnum = new MMDeviceEnumerator();
private MMDevice defaultDevice;

....

defaultDevice = devEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);

....

defaultDevice.AudioEndpointVolume.MasterVolumeLevel = 1;

....

alarm.Play();

希望你能帮助我:)

【问题讨论】:

  • 我想您的用户可能有不同的要求,但我知道如果应用程序决定同时在我机器上的所有音频设备上播放,我会非常恼火。 (我有普通扬声器、杜比数字输出和连接的 USB 耳机/麦克风)
  • 没有人可以在设备之间复制数据。当您枚举它们时,您可以独立地开始播放每个有问题的。
  • 问题是耳机/扬声器与许多系统上的设备不对应。我认为设备更像是音频驱动程序或声卡。当我插入耳机时,扬声器会静音,但设备保持不变。
  • 我知道所有设备都在发出警报会让用户感到恼火,但这也是目的。 :D
  • 我无法弄清楚如何仅在扬声器中播放。有人可以帮帮我吗?无论是否插入耳机,我都需要始终在计算机扬声器中播放声音。

标签: c# wpf audio device


【解决方案1】:

到目前为止,我发现这在 windows vista 及更高版本中是不可能的。

【讨论】:

    【解决方案2】:

    您可能需要使用 EnumAudioEndpoints。请访问此link,然后您可能会对此有所了解。

    【讨论】:

    • 好的......但是。如何在电脑扬声器上演奏。因为默认端点也可以是耳机?
    • 你有一个例子说明如何只连接扬声器(不是默认设备)
    猜你喜欢
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多