我正在使用nAudio在我的WPF应用程序中播放背景歌曲。 现在开始一首歌曲的新实例,代码是:
private WaveStream CreateInputStream(string fileName)
{
WaveChannel32 inputStream;
if (fileName.EndsWith(".mp3"))
{
WaveStream mp3Reader = new Mp3FileReader(fileName);
inputStream = new WaveChannel32(mp3Reader);
}
else
{
throw new InvalidOperationException("Unsupported extension");
}
volumeStream = inputStream;
return volumeStream;
}
哪个工作正常,但仅到特定的文件路径。 现在,如果我尝试向此功能发送包URL,我会收到不支持该格式的错误。 任何人都喜欢这个并且知道我应该做什么?
已解决: 感谢minitech的回答,这段代码最终有效:
StreamResourceInfo resource = Application.GetResourceStream(
new Uri("YearBook;component/Resources/Music/1.mp3", UriKind.Relative));
mainOutputStream = CreateInputStream(resource.Stream);
waveOutDevice.Init(mainOutputStream);
private WaveStream CreateInputStream(Stream fileName)
{
WaveChannel32 inputStream;
WaveStream mp3Reader = new Mp3FileReader(fileName);
inputStream = new WaveChannel32(mp3Reader);
volumeStream = inputStream;
return volumeStream;
}
答案 0 :(得分:1)
重载Mp3FileReader
构造函数以获取流。我不知道WPF资源是如何工作的,但是如果你能以某种方式将你的文件作为Stream
对象获取,那么你可以使用它。以下是您如何玩byte[]
:
private WaveStream CreateInputStream(byte[] resource) {
WaveChannel32 inputStream;
using(MemoryStream ms = new MemoryStream(resource)) {
WaveStream mp3Reader = new Mp3FileReader(ms);
inputStream = new WaveChannel32(mp3Reader);
}
return inputStream;
}