c# - 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 会阻止我的程序?
解决方案
更改程序集名称或创建一个新项目可以解决问题,但仍然不知道真正的原因是什么。
推荐阅读
- excel - 更改代码以允许选择多个文件
- c# - 如何从当前时间的时间列表中获取最低的未来时间(现在之后)
- html - 将 CSS 应用于名称带有数字的类
- wcf - 在 WCF REST Web 服务上启用 HTTPS
- javascript - 打印机配置3英寸宽的纸张
- typescript - 错误:未捕获(承诺):错误:无法匹配任何路由。Angular 6 中的 URL 段
- android - Unity - iOS/Android 构建大小太高/太大,原因不明
- python - Spyder方法(Python)中的“a”,“c”,“f”是什么意思
- groovy - 带有闭包和空安全检查的 Groovy 集合排序导致异常
- javascript - 在 JavaScript 中将带小数的浮点数解析为 JSON 也为 1 为 1.00