wav abspielen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Rantanplan.

    wav abspielen

    Hallo zusammen !

    Ich möchte folgendes realisieren:
    Ich habe 6 verschiedenen kleine .wav Dateien als Ressources in mein Projekt eingebunden.

    Diese sollen bei Knopfdruck in zufälliger Reihenfolge im Hintergrund abgespielt werden, während das Programm normal weiterlaufen soll.

    Ich habs mit der Windows Media Player Komponente versucht, funktioniert auch, da man dort "Playlists" erstellen und abspielen kann. Mein Problem dabei ist, daß ich die Quelle als Pfad angeben muss, wie hier:

    AxWindowsMediaPlayer.URL = "c:\test.wav"

    Wie ich .URL eine wav Ressource einbinden kann, weiß ich nicht.

    Diese Variante gefällt mir eh nicht wirklich, weil ich nicht unbedingt eine Windows Media Komponente in meinem Projekt haben will.

    Der andere Weg über die API stellt wiederrum keine Möglichkeit zur Verfügung eine "Playlist" zu erstellen.
    Das heißt, daß ich immer nur eine .wav abspielen kann, und dann eine neuen API-aufruf brauche. Stimmt das ?
    Habe die Konstanten SND_SYNC + SND_ASYNC gefunden.
    Was die genau steuern weiß ich nicht ?

    Also: Hat irgendwer eine Ahnung wie ich auf dem einen oder anderern Weg mein Ziel erreichen kann ?

    Bin wirklich für jede Antwort dankbar,

    cu !
    Hi!

    WMP:
    Da du wahrscheinlich keinen Stream Programmieren willst (was ich auch nicht empfehlen würde, wenns sich nur um kleine wavs handlet), kannst du die resourcen "entpacken" (d.h. auf die Festplatte speichern) und dann mit dem WMP hantieren.

    APIs:
    solltest du verzichten, da es sich hier um .net handelt

    PlaySound von .net:
    funktioniert - was ich so gehört hab - nich gut.


    so long..
    Andy


    Verschoben, da es sich um Multimedia handelt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mad Andy“ ()

    Hi !

    kannst du die resourcen "entpacken" (d.h. auf die Festplatte speichern)


    Hab gesucht wie das funktionieren soll, doch nichts gefunden.

    Im .net gibts eine Funktion ResourceWriter(). Mit der kann man Dateien in die Ressources geben.

    Ich bräuchte das Umgekehrte ...

    Lösung gefunden

    Habs hinbekommen !

    VB.NET-Quellcode

    1. 'einen stream definieren. wavs in den Resources sind von diesem Format
    2. Dim stream As System.IO.UnmanagedMemoryStream
    3. 'eine Resource zuweisen
    4. stream = My.Resources.somewav
    5. 'ein Byte Array definieren
    6. Dim buffer As Byte()
    7. 'Größe auf Größe des Streams ändern
    8. ReDim buffer(stream.Length)
    9. 'Den stream (das wav aus der Resource) ins ByteArray schreiben
    10. stream.Read(buffer, 0, stream.Length)
    11. 'Datei erstellen
    12. Dim FileStream As IO.FileStream = New IO.FileStream("c:\sound.wav", IO.FileMode.Create)
    13. 'Von Byte-Array in Datei schreiben
    14. FileStream.Write(buffer, 0, buffer.Length)
    15. 'Jetzt noch dem Windows Media Player zuweisen
    16. dim sound As WMPLib.IWMPMedia
    17. sound = AxWindowsMediaPlayer1.newMedia("c:\sound.wav")


    Funktioiert jetzt so bei mir ! ;)
    Wenn jemand einen direkteren Weg hat bitt melden !