Part 1
C#播放声音一直是很头疼的事
或者说从我刚学C# 脱离控制台开始 这个问题就困扰我N多年
然后我们不停的百度 基本就是如下方式:
1> System.Media 只能播放wav
2> winmm.dll API什么的很崩溃
3> wmp com组件 直接把控件拖进来 很傻瓜 也很凶残
4> AudioVideoPlayback.dll MDX的产物
总之....net基本没提供什么靠谱的播放声音方式
如果只是简单的播放提示音效 media命名空间应该足够用
不过对于咱这种无聊就造游戏提取器的人...应对的需求如下:
1> 灵活 无其他软件依赖(可以轻量 绿色发布)
2> 可编程性强(至少可以play pause stop setVolume)
3> 支持各种诡异的文件格式(wav mp3 ogg)
4> 支持流读取什么的..(先save成tempFile再load很折腾...)
最开始使用的是AudioVideoPlayback.dll这个库 应该说是受WzExtract影响
这个库很难找- - 为此我还下了各个版本的Managed DirectX SDK 好大一个坨....(而且最近一年之内我才知道它是干嘛用的...)
Part 2
播放mp3用它完全没问题 它也基本胜任我上述的要求
不过当我开发妖妖剑戟梦想提取器的时候我就蛋疼了...这东西无法播放ogg格式的声音文件
而且当时也有很多人表示mdx库在它们的工作站环境上无法正常工作...
百度之后找到一个奇怪的库叫libZPlay(