mp3 aus recource abspielen

Hallo,
In meinem Programm habe ich alert.mp3 als recource hinzugefügt.
Kann ich das jetzt direkt daraus abspielen?
Die Funktion dazu:

 [DllImport("winmm.dll")]
 public static extern void PlaySound(string path, int mod, int flg);

So ich habe jetzt schon einen Ansatz:

string Sound = Convert.ToString(Properties.Resources.alert);
 PlaySound(Sound, 0, 0x0000);

Es kommt aber Leider kein Ton!
Kann mir Jemand helfen?

Hallo!
Mit der angegebenen Funktion geht das gar nicht - PlaySound() kann nur WAV-Daten abspielen.
Entweder also die MP3-Datei zur Laufzeit in WAV wandeln oder - was vermutlich einfacher/sinnvoller ist, sich selbst eine alert.wav zu bauen und diese als Resource einzubetten statt der alert.mp3.

Gruß,
Martin

Wohl vergriffen, naja…
Funktioniert mit der wavedatei leider immernoch nicht.

Hi,
arbeitest du mit WPF oder WindowsForms?
In WPF kannst du das mit den Klassen SoundPlayerAction oder MediaElement machen.
Lg der einzigware

Ich Arbeite mit Console…

Hallo nochmal!
Das mit MP3 ist nur eine Hälfte - so, wie Du es probierst, kann es nicht funktionieren.

Das mit dem Convert.ToString() ist nicht richtig. Darüber bekommst Du nicht den Dateinamen, unter dem die Resource erreichbar ist. Schau’s Dir mal im Debugger an.

Du kannst PlaySound entweder mit dem Pfad zu einer Datei aufrufen (dann musst Du die Binärdaten aus der Resource erst in Datei schreiben), durch Angabe einer nicht verwalteten Resource (wird mit .NET schwierig) oder mit Angabe eines Speicherbereichs, der die Audiodaten enthält.
Letzteres ist der gebräuchliche Weg.
Schau’ mal hier: http://www.eggheadcafe.com/articles/20030302.asp, da ist eine Lösung.

Gruß,
Martin

Ich habs jetzt so gemacht, es kommt aber leider kein ton…

}
}
}
}

Hallo nochmal!

Ach komm, noch mehr vorkauen kann man es doch kaum.
Debugge halt mal, was passiert!
Wenn Du selbst irgendwann mal was entwickelst, wird es höchstwahrscheinlich nicht auf Anhieb funktionieren und dann musst Du auch mal lernen, wie Du die Fehler in Deinem Code selbst findest.

Gruß,
Martin

Ich hab jetzt auch nach mehreren Tagen schauen keine Ahnung was das Problem ist!
Bitte helft mir doch!
Es gibt keinen Eror oder Warnung.

  1. Mach als erstes die hirnrissige unsinnige Endlosschleife raus. Funktioniert es, wenn der Sound nur 1* wiedergegeben werden soll?
  2. Wenn immer noch nicht, dann debugge halt! Insbesondere: Ist der ManifestResourceStream vielleicht null? Dann kommt die Methode PlayWavResource() doch sofort zurück, ohne PlaySound aufzurufen!
  3. Wenn der Stream gleich null ist, dann hast Du die wav-Datei entweder gar nicht eingebettet (was steht denn bei „Buildvorgang“ zur wav-Datei?) oder sie nicht mit dem Namen eingebettet, den die PlayWavResource() sucht.
    Es gibt die Methode Assembly.GetManifestResourceNames(), über die Du herausbekommen kannst, welche Resourcen (mit welchem Namen) in der Assembly eingebettet sind. Überprüfe das mal!

Gruß,
Martin