Wav aus Resourcen abspielen

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    Wav aus Resourcen abspielen

    Hallo

    Kann mal bitte jemand diesen Code austesten und mir dan berichten ob es funktioniert?
    Also bei mir kommt immer wenn ich den abspiel Button drücke der Ton wie bei einer Massege Box :D mehr nicht


    1. Deine Wave Datei mittels Projekt\Vorhandenes Element hinzufügen in das Projekt einfügen
    2. Das Item anklicken und bei Eigenschaften als Build-Aktion Eingebettete Resource einstellen
    3. Eine Neue Klasse erstellen:


    VB.NET-Quellcode

    1. Public Class WINMM
    2. Public Const SND_ASYNC As UInt32 = 1
    3. Public Const SND_MEMORY As UInt32 = 4
    4. Declare Auto Function PlaySound Lib "Winmm.dll" (ByVal rsc As IntPtr, ByVal hMod As IntPtr, ByVal dwFlags As UInt32) As Boolean
    5. Declare Auto Function PlaySound Lib "Winmm.dll" (ByVal Sound As String, ByVal hMod As IntPtr, ByVal dwFlags As UInt32) As Boolean
    6. Declare Auto Function PlaySound Lib "Winmm.dll" (ByVal data As Byte(), ByVal hMod As IntPtr, ByVal dwFlags As UInt32) As Boolean
    7. Public Shared Sub PlayWavResource(ByVal wav As String)
    8. Dim namesp As String
    9. Dim stream As System.IO.Stream
    10. namesp = System.Reflection.Assembly.GetExecutingAssembly.GetName.Name
    11. stream = System.Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream(namesp & "." & wav)
    12. If stream Is Nothing Then Return
    13. Dim data(CInt(stream.Length - 1)) As Byte
    14. stream.Read(data, 0, CInt(stream.Length))
    15. PlaySound(data, IntPtr.Zero, SND_ASYNC Or SND_ASYNC)
    16. End Sub
    17. End Class


    4. Abspielen mittels:


    VB.NET-Quellcode

    1. Winmm.PlayWavResource("MeineTolleWaveDatei.wav")


    _______________________________________________________________________________________________________________

    Leider habe ich die Internet seite geschlossen und eine stunde später die Cronik gelöscht deshalb kann ich nicht die Quelle nennen :S
    Ich hatte wieder mein geiles Brett vorm kopf was mich immer verfolgt :D

    VB.NET-Quellcode

    1. Public Const SND_ASYNC As UInt32 = 2
    2. Public Const SND_MEMORY As UInt32 = 4


    es sollte aber lieber

    VB.NET-Quellcode

    1. Public Const SND_ASYNC As UInt32 = 4
    2. Public Const SND_MEMORY As UInt32 = 4


    sein 8-) Thx

    Edit: MOM PROBLEM !!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Eistee“ ()

    ~blaze~ kannst du mir villeicht den "Kompletten" code dazu zukommen lassen?
    Also so wie es bei dir funktioniert?
    Irgendetwas muss ja noch anders sein nur ich weiß einfach nicht was :D

    oder

    Kannste mir sagen wie ich den Player nun die .wav zuweisen kann?

    VB.NET-Quellcode

    1. Imports System.Media
    2. Public Player As SoundPlayer
    3. Player.SoundLocation = ???
    4. Player.Play()


    Also ich weiß nicht genau wie ichden Player das gebufferte zukommen lassen soll :D

    Edit: Sry Doppelpost iregentwie gepennt :cursing:
    Habs noch mal ein wenig angepasst:

    VB.NET-Quellcode

    1. Public Const SND_ASYNC As UInt32 = 1
    2. Public Const SND_MEMORY As UInt32 = 4
    3. Declare Auto Function PlaySound Lib "Winmm.dll" (ByVal data As Byte(), ByVal hMod As IntPtr, ByVal dwFlags As UInt32) As Boolean
    4. Public Shared Sub PlayWavResource(ByVal wav As String)
    5. Dim manager As Resources.ResourceManager = My.Resources.Resources.ResourceManager
    6. Dim stream As IO.Stream = manager.GetStream(wav)
    7. If stream Is Nothing Then Return
    8. Dim data(CInt(stream.Length - 1)) As Byte
    9. stream.Read(data, 0, CInt(stream.Length))
    10. PlaySound(data, IntPtr.Zero, SND_ASYNC Or SND_MEMORY)
    11. End Sub


    bzw. mit SoundPlayer:

    VB.NET-Quellcode

    1. Dim manager As Resources.ResourceManager = My.Resources.Resources.ResourceManager
    2. Dim stream As IO.Stream = manager.GetStream(wav)
    3. If stream Is Nothing Then Return
    4. Dim sp As New Media.SoundPlayer
    5. sp.Stream = stream
    6. sp.LoadAsync()
    7. sp.Play()


    Gruß
    ~blaze~
    Hey Leute ich weiß es kommt bischen spät, aber das geht noch einfacher..

    Eine Lokale *.wav Datei abspielen:

    VB.NET-Quellcode

    1. My.Computer.Audio.Play("C:\Test.wav", AudioPlayMode.BackgroundLoop)


    Eine *.wav Datei aus den Resourcen abspielen:

    VB.NET-Quellcode

    1. My.Computer.Audio.Play(My.Resources.DeinSound, AudioPlayMode.BackgroundLoop)


    "DeinSound" wird dur den Namen der Wav-Datei, die in denen Resourcen ist, (ohne.wav) erstzt

    Das "AudioPlayMode.BackgroundLoop" steht für wiederholen es giebt aber auch noch:

    "AudioPlayMode.WaitToComplete" 'Es wird gewartet bis dieser Befehl ausgeführt wurde, bevor weiter gemacht wird
    "AudioPlayMode.Background" 'Song wird im Hintergrund einmalig abgespielt

    Ich hoff ich hab euch geholfen..
    Mfg Moorhenne
    Ich hatte gerade auch das Prolem, dass es nicht sofort funktioniert hat.
    Hatte auch nur so ein MsgBox-Geräusch.

    Es lag letzendlich daran, dass die .wav-Datei zu "gut" war. Sie hatte 32 Bit und 48 kHz. Habe nun auf 16 Bit 44 kHz runtergesetzt, neu in die Ressourcen eingefügt und - plopp ... geht.

    lg
    MrWebber

    Variablen über das Internet senden? [VB.NET] Universal Ticket.dll :thumbup:
    Lasse deine Programme selbstständig lernen! [VB.NET] Brain.dll
    :thumbsup: