2010-12-30 16 views
1

Ich folge this tutorial, um MP3-Audiodateien mit NAudio abzuspielen. Um die Wavestream zu erstellen verwende ich diese Methode:Versuchen Sie, MP3-Audiodatei mit NAudio zu spielen

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

Leider bekomme ich immer eine Ausnahme in der

line inputStream = new WaveChanne32(mp3Reader): 

Blockquote

System.ApplicationException was unhandled 
    Message=Only PCM supported 
    Source=NAudio 
    StackTrace: 

Antwort

2

können Sie

var pStream = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(mp3Reader); 
var inputStream = new NAudio.Wave.BlockAlignReductionStream(pStream); 
0

PCM ist ein Codierungstyp (Pulse Code-Modulation). Scheint so, als könnte NAudio nur PCM-kodierte Dateien verarbeiten.

+0

Dank verwenden. Und wie stelle ich sicher, dass die Datei, die ich gerade spiele, PCM-codiert ist? Ich kodiere die MP3-Datei, die ich hier spielen möchte, mit Lame – RoflcoptrException

+0

Ich habe mir das Beispiel angesehen ... und ich finde das sehr seltsam. Soweit ich weiß, ist eine MP3-Datei niemals PCM-codiert. Dieses Stück Code kann also nicht funktionieren ... Ich denke ... Ich bin kein Spezialist für Musikformate, nur ein Programmierer, der zufällig Gitarre spielt. –

+0

PCM ist verlustfrei, MP3 ist verlustbehaftet. .Wav ist im PCM-Format. –