C# 如何在WPF中使用nAudio从资源播放mp3?
我正在WPF应用程序中播放背景歌曲。 现在开始一首新的歌曲,代码如下:C# 如何在WPF中使用nAudio从资源播放mp3?,c#,wpf,resources,naudio,C#,Wpf,Resources,Naudio,我正在WPF应用程序中播放背景歌曲。 现在开始一首新的歌曲,代码如下: private WaveStream CreateInputStream(string fileName) { WaveChannel32 inputStream; if (fileName.EndsWith(".mp3")) { WaveStream mp3Reader = new Mp3FileReader(fileName)
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 answer,该代码最终起到了作用:
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;
}
Mp3FileReader
构造函数重载以获取流。我不知道WPF资源是如何工作的,但是如果您能够以某种方式将文件作为流
对象,那么您就可以使用它。下面是如何播放字节[]
:
private WaveStream CreateInputStream(byte[] resource) {
WaveChannel32 inputStream;
using(MemoryStream ms = new MemoryStream(resource)) {
WaveStream mp3Reader = new Mp3FileReader(ms);
inputStream = new WaveChannel32(mp3Reader);
}
return inputStream;
}
我可以得到的是流,但我不明白我如何才能插入它,它说,它期待stringEric你能告诉我你如何修复它