首页 > 解决方案 > CSCore - 不适用于特定设备

问题描述

我正在使用 CScore 播放 mp3 文件,

首先,我有这个在我的公共部分public MMDevice SelfDevice;

接下来,我使用以下代码获取默认播放设备:-

MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
SelfDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);

现在selfDevice有默认播放设备。然后,我运行这段代码来播放一个 mp3 文件

 if (CSCore.SoundOut.WasapiOut.IsSupportedOnCurrentPlatform)

                _soundOutToSelf = new CSCore.SoundOut.WasapiOut() { Device = SelfDevice };
            else
                _soundOutToSelf = new DirectSoundOut();

            var source = CodecFactory.Instance.GetCodec(pathToMP3())
                .Loop()
                .ChangeSampleRate(32000)
                .ToSampleSource()
                .AppendSource(Equalizer.Create10BandEqualizer)
                .ToWaveSource();

            _soundOutToSelf.Initialize(source);

            _soundOutToSelf.Play();
            _soundOutToSelf.Volume = 1;
            MessageBox.Show(SelfDevice.FriendlyName);

它可以工作,但只有当我将我的 HDMI 音频设置为我的默认播放设备时,当我的扬声器处于默认状态时它不会播放音乐,而且消息框也会返回正确的播放设备名称,所以设备变量没有问题。这里有什么问题?

另外,我尝试创建一个新项目并在那里运行代码并且它没有任何问题,所以我在它工作时恢复到该项目的旧版本,但现在它也不起作用。我删除了调试文件夹,问题仍然存在。

在此处输入图像描述

编辑:我发现我可以通过更改程序的程序集名称来解决问题,但我仍然不知道为什么 windows 会阻止我的程序?

标签: c#cscore

解决方案


更改程序集名称或创建一个新项目可以解决问题,但仍然不知道真正的原因是什么。


推荐阅读