Entwickler-Ecke

Multimedia / Grafik - wav file über resourcen öfffnen und abspielen


max1761995 - So 03.06.12 17:09
Titel: wav file über resourcen öfffnen und abspielen
ich habe ein wav file unter resourcen geladen die heisst : nightmare.wav

wie kann ich diese abspielen ?

ich habe es so versucht :


C#-Quelltext
1:
2:
3:
4:
SoundPlayer sndplayr = new
SoundPlayer(PlayWavFiles.Properties.Resources.nightmare);

sndplayr.Play();


es funktioniert jedoch nicht :/

der fehler ist es erkennt PlayWavFiles nicht :/


danke für antworten

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Th69 - So 03.06.12 19:28

Hallo :welcome:

der SoundPlayer kann nur entweder eine Datei oder aber einen Stream abspielen - nicht direkt eine Resource (d.h. ein Byte-Array).
Abhilfe schafft hier die Klasse MemoryStream:

C#-Quelltext
1:
2:
3:
4:
MemoryStream stream = new MemoryStream(resource);
SoundPlayer player = new SoundPlayer(stream);

player.Play();


daeve - So 03.06.12 19:38

Wie hast du dein nightmare.wav hinzugefügt zu den Resourcen ? Wenn du das über Project --> Properties --> Resources machst kannst du danach nur mit:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
class Sound
    {
        SoundPlayer mediaPlayer = new SoundPlayer(Properties.Resources.nightmare);

        public void playSound()
        {
            mediaPlayer.Play();
        }
        public void stopPlay()
        {
            mediaPlayer.Stop();
        }
    }


darauf zugreifen die Intellisense unterstützt dich da ja auch.


Ralf Jansen - So 03.06.12 20:15

Zitat:
der fehler ist es erkennt PlayWavFiles nicht :/


Ist der Namespace deiner Anwendung (oder Teil davon) den PlayWavFiles? Die konkrete Fehlermeldung wäre übrigens hilfreich sonst raten wir hier nur rum.


max1761995 - So 03.06.12 20:35

ok hier die fehlermeldung zu der ersten antwort :)

Der Puffer darf nicht NULL sein.
Parametername: buffer

zu dem hier :


C#-Quelltext
1:
2:
3:
4:
MemoryStream stream = new MemoryStream(resource);
            SoundPlayer player = new SoundPlayer(stream);

            player.Play();


meine datei heisst : nightmare.wav
und wurde unter ressources=> audio hinzugefügt


Th69 - Mo 04.06.12 10:47

Sorry, meine Antwort ist wohl nicht ganz richtig, da ich davon ausgegangen bin, daß nur ein Byte-Array zurückgegeben wird. Laut Internet-Recherche wird aber schon ein Stream zurückgegeben, so daß es wohl doch ohne den MemoryStream funktionieren müßte (also so wie in deinem Originalbeitrag).
Dann kann es wohl wirklich nur ein falsch angegebener Namensbereich (namespace) sein.