如何将IAudioSessionControl转换为AudioSessionControl



我正在使用NAudio包装器,我正在尝试在创建会话时静音。

MMDevice _device = _deviceEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
_device.AudioSessionManager.OnSessionCreated += AudioSessionManager_OnSessionCreated;
private void AudioSessionManager_OnSessionCreated(object sender, IAudioSessionControl newSession)
{
        //mute session
}

为了静音会话,我需要将其从IAudioSessionControl转换为AudioSessionControl

IAudioSessionControl是一个接口,因此我不知道如何转换它。

假设您指的是NAudio.CoreAudioApi.AudioSessionControl,那么它有一个构造函数,该构造函数将IAudioSessionControl作为参数并封装该接口。

private void AudioSessionManager_OnSessionCreated(object sender, IAudioSessionControl newSession)
{
    AudioSessionControl audioSession = new AudioSessionControl(newSession);
    // mute
    audioSession.SimpleAudioVolume.Mute = true;
}

AudioSessionControl对象包装了 IAudioSessionControlcom对象,并根据其他可用的接口暴露了额外的功能。更直接的等效方法可能是使用ISimpleAudioVolume接口:

ISimpleAudioVolume simpleAudioVolume = newSession as ISimpleAudioVolume;
if (simpleAudioVolume != null)
    simpleAudioVolume.Mute = true;

相关内容

  • 没有找到相关文章

最新更新