*.wav Datei abspielen



  • Eine *.wav Datei soll abgespielt werden:

    new System.Media.SoundPlayer("stereo_16bit.wav").Play();
    

    Dazu habe ich zwei Fragen:

    1. Dieser Code funktioniert, wenn die Datei mit 16 Bit pro Sample aufgenommen wurde. Zur Laufzeit kommt aber trotzdem folgende Fehlermeldung:
    A first chance exception of type 'System.UriFormatException' occurred in System.dll
    Ich vermute, das hängt damit zusammen dass der String wahlweise ein Dateiname oder eine URL sein kann, und dass zuerst versucht wird den String als URL zu interpretieren. Wie kann man diese Fehlermeldung verhindern?

    2. Wenn die Datei mit 24 Bit pro Sample aufgenommen wurde, dann hört man nichts. An der Datei kann es nicht liegen, denn mit anderen Programmen kann sie problemlos abgespielt werden. Wie kann man in C# eine 24 Bit *.wav Datei abspielen?

    Gruß
    Michael



  • micha7 schrieb:

    Zur Laufzeit kommt aber trotzdem folgende Fehlermeldung:
    A first chance exception of type 'System.UriFormatException' occurred in System.dll

    Das ist keine Fehlermeldung sondern bloss ein Debug-Hinweis. Sollte auch nur im Debugger angezeigt werden und sonst nirgends.

    micha7 schrieb:

    Ich vermute, das hängt damit zusammen dass der String wahlweise ein Dateiname oder eine URL sein kann, und dass zuerst versucht wird den String als URL zu interpretieren. Wie kann man diese Fehlermeldung verhindern?

    Ich vermute du vermutest richtig 🙂
    Du könntest versuchen statt des Pfades ne file: URL zu übergeben. Weiss aber nicht ob das dann mit relativen Pfaden funktioniert.

    Zur 24 Bit Sache kann ich dir leider nichts sagen, ausser dass die Vermutung nahe liegt dass der olle System.Media.SoundPlayer halt keine 24 Bit WAVs kann.
    Bzw. du kannst natürlich immer das MediaPlayer Control verwenden. Nur das braucht dann halt wieder ein Fenster...



  • hustbaer schrieb:

    Das ist keine Fehlermeldung sondern bloss ein Debug-Hinweis. Sollte auch nur im Debugger angezeigt werden und sonst nirgends.

    Gut, dann spricht ja nichts dagegen wenn ich das so lasse.

    hustbaer schrieb:

    Du könntest versuchen statt des Pfades ne file: URL zu übergeben. Weiss aber nicht ob das dann mit relativen Pfaden funktioniert.

    Habe ich ausprobiert, scheint aber nicht zu gehen.
    Man kann es aber auch so machen, dann kommt keine Warnung:

    FileStream fStrm = new FileStream("stereo_16bit.wav", FileMode.Open);
    new System.Media.SoundPlayer(fStrm).Play();
    fStrm.Close();
    

    Gruß
    Michael


Log in to reply