WAV lässt durch directX nicht abspielen

delphinhawe

Erfahrenes Mitglied
Hallo,

warum lässt wav oder mp3 durch directX nicht abspielen.
Es kommt kein Sound und das Form bleibt hängen.
Müsste nach Debugging erneut abbrechen.
Obwohl in der Bibliothek „Imports Microsoft.DirectX“
und „Microsoft.DirectX.AudioVideoPlayback“ bereits vorhanden/hinzugefügt sind.
Nach Abfrage DxDiag lautet der DirectX-Version: DirectX 11 und die Dateien *directX*.dll vom Jahr 2005(?)

Kann jemand dazu erläutern?

Anbei Quell-Code:

Visual Basic:
Imports Microsoft.DirectX
Imports Microsoft.DirectX.DirectSound
Imports Microsoft.DirectX.AudioVideoPlayback

Public Class Form1
    Private WithEvents audiofile As Audio

    Private Sub Form1_Load(sender As System.Object, e As EventArgs) Handles MyBase.Load
        audiofile = New Audio("duck.wav")
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        audiofile.Play()
    End Sub

End Class

BS: Windows 8.1 PRO
Produktdetails: Microsoft Visual Basic 2015
 

Anhänge

  • directX.JPG
    directX.JPG
    209,3 KB · Aufrufe: 11
Hi

MP3 ist ein relativ komplexes Format, im Vergleich zu Riff Wave,
und wird deshalb von den Microsoft-Libs nicht unterstützt.

Zu Wav: Was sagt der Debugger?
 
Ich erhalte über die Sound-Dateien keine Fehlermeldung oder Hinweise.
Ich versuche mal in einem Codeblock try&catch die Ausnahme abzufangen.
 
Hallo,

Debuggen mit Einzelschritt funktioniert, wenn nur ein Zeile "audiofile = NewAudio("c:\duck.wav")" einkommentiert ist. Somit kann die ausgeklammerte Zeile mit Debugging-Start, ebenso den Haltpunkt, nicht geprüft werden. Mittels "On Error GoTo" oder "Try" kamen keine Fehler-Hinweise. Das Form1 kann nicht geladen werden. Die Anzeige von Debuggen kann ausgegeben werden.

Alternativ "My.Computer.Audio.Play" kann die Datei *.wav und *.mp3 ohne DirectX ausgeführt werden.

Es ist mir ein Rätsel, weshalb audiofile.Play nicht ausgeführt werden kann?

Anbei Versuche variante QuellCode-Alternative:

Visual Basic:
    Private WithEvents audiofile As Audio
    'Private Sub Form1_Load(sender As System.Object, e As EventArgs) Handles MyBase.Load
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        On Error GoTo err
        audiofile = New Audio("c:\duck.wav")
err:
        MsgBox(Err.Description)

        audiofile.Play()

    End Sub

ODER

Visual Basic:
    Private Sub Form1_Load(sender As System.Object, e As EventArgs) Handles MyBase.Load

        Try
            Dim audiofile = New Audio("c:\duck.wav")
            audiofile.Play()
            'My.Computer.Audio.Play("c:\duck.wav")
        Catch ex As Exception
            MsgBox("Can't load Audio" & vbCrLf & ex.Message)
        End Try

    End Sub

Anzeige von Debuggen:
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "D:\VBA\AudioVideo\audvid\audvid\bin\Debug\audvid.vshost.exe" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Deployment\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
Der Thread 0x3870 hat mit Code 0 (0x0) geendet.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "D:\VBA\AudioVideo\audvid\audvid\bin\Debug\audvid.exe" geladen. Symbole wurden geladen.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualBasic\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualBasic.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"audvid.vshost.exe" (CLR v4.0.30319: audvid.vshost.exe): "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Remoting\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Remoting.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
 
Hallo zusammen,

ich habe es bisher nicht geschafft, die DirectX mit WAV abzuspielen.

Ich glaube, dass mit DirectX 11.x und 12.x etwas anderes gemeint ist, gehört nicht zu einem Anwendungsgebiet ,z.B. Windows Forms-Anwendung. Getestet wurden auch sämtliche .Net Framework von 2.0 bis 4.6, sowie Produktdetails Microsoft Visual Basic 2015 Community und MS VB 2010 Express, Betriebssystem Windows 8.1 Pro und Windows 10 Pro. Installiert waren auch auf dem Rechner SDK, Programmsprache C# und VB.Net. C++ kann nicht ausgeführt werden, weil die Bausteine fehlen, d.h. nicht vorhanden sind… Nicht getestet sind auf dem Rechner Visa und DirectX 9.

Wöfür ist DirectX mit einer aktuell höheren Version angeschaffen worden? Ich glaube, ich liege da falsch, aber trotzdem würde ich mich freuen, wie die simplere Lösung aussieht und wo es angewndet wird.
Gerne bitte auch ZIP hier anhängen lassen. Es muss nicht nach Windows Forms-Anwendnung angepasst werden.

Das einzige, was mir geholfen hat, unterstützt das MS Windows API mit deklarierter Funktion "winmm.dll" mit "gedschungelte" Hexazahlen. Damit kann ich etwas anfangen, aber mich interessiert auch DirectX.

Wie macht ihr das, bezogen nur auf das Sound-Abspielen (DirectX)? Danke schon mal für Eure Antwort.

Gruß delphinhawe
 
Zurück