【发布时间】:2020-02-28 00:28:48
【问题描述】:
我正在使用 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 会阻止我的程序?
【问题讨论】: