C# 如何在WPF中使用nAudio从资源播放mp3?

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)

我正在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 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你能告诉我你如何修复它