2012-02-24 86 views
0

我使用nAudio在我的WPF應用程序中播放背景歌曲。 現在開始播放歌曲的新instace的代碼是這樣的:如何從資源中使用WPF中的nAudio播放mp3?

 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移動的答案,這個代碼eventully工作:

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; 
    } 

回答

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; 
} 
+0

我能得到的是作爲流,但我不明白我怎麼可以插入它,它說,它預計字符串 – 2012-02-24 17:18:19

+0

Nevermind-固定它非常感謝你! – 2012-02-24 17:22:30

+0

埃裏克可以請你告訴我你是如何修復它的 – 2013-03-13 09:18:35