How can i play mp3 from Resource using nAudio in WPF?
Frage
I'm using nAudio to play a background song in my WPF Application. Now to start a new instace of a song the code to is this:
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;
}
Which works fine, but only to a specific file path. Now if i try sending a Pack URL to this function, i get error that the format isn't supported. Anyone ever encouterd this and knows what i should do?
SOLVED : thanks to minitech answer, this code eventully worked :
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;
}
Lösung
The Mp3FileReader
constructor is overloaded to take a stream. I don't know how WPF resources work, but if you can get your file as a Stream
object somehow, then you can use that. Here's how you can play a 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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow