【问题标题】:How can i play mp3 from Resource using nAudio in WPF?如何在 WPF 中使用 nAudio 从 Resource 播放 mp3?
【发布时间】:2012-02-24 14:54:34
【问题描述】:

我正在使用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;
    }

这很好用,但到特定的文件路径。 现在,如果我尝试向此函数发送 Pack 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;
    }

【问题讨论】:

    标签: c# wpf resources naudio


    【解决方案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;
    }
    

    【讨论】:

    • 我可以得到是流,但我不明白如何插入它,它说它需要字符串
    • 埃里克你能告诉我你是怎么解决的
    猜你喜欢
    • 2014-03-14
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多