Fehler bei DirectX-Musikwiedergabe

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Fehler bei DirectX-Musikwiedergabe

    VB.NET-Quellcode

    1. If OpenSongDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
    2. Try
    3. AudioFile.Stop()
    4. Catch ex As Exception
    5. End Try
    6. PlayList.Items.Clear()
    7. If OpenSongDialog.FileNames.Length = 1 Then
    8. PlayList.Items.Add(OpenSongDialog.FileNames(0))
    9. AudioFile = New Audio(OpenSongDialog.FileNames(0), True)
    10. ElseIf OpenSongDialog.FileNames.Length <= 2 Then
    11. For Each song In OpenSongDialog.FileNames
    12. PlayList.Items.Add(song)
    13. Next
    14. End If

    Das sieht jetzt vllt. nach Spaghetticode aus, ist aber noch lange nicht fertig, und daher gerechtfertigt. :D
    Bei

    VB.NET-Quellcode

    1. AudioFile = New Audio(OpenSongDialog.FileNames(0), True)

    tritt immer eine DirectXException auf und gibt "Fehler in der Anwendung" aus, was natürlich sehr informativ ist.
    Wisst ihr, was ich hier falsch mache?
    (Als Datei wurde eine ganz normale .mp3-Datei ausgewählt, die in JEDEM anderen Player funktioniert)
    Mein System ist ein 64bit-System, aber bis auf diese eine Datei funktioniert alles.
    Der zweite Parameter legt fest, ob die Datei direkt abgespielt werden soll (True), oder nicht (False).

    Edit: Merke gerade, dass ich im ersten Post Mist geschrieben habe: Die Methode funktioniert, nur bei einem Lied wird der Fehler ausgespuckt.

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

    Es gibt Programme wo man sieht was für Codecs in einer Datei enthalten sind... Weiß leider nicht mehr wie das heißt suche aber gleich mal..

    Villt ist es ja ein anderer Audio Codec den du nicht installiert hast ?
    EDIT// Ups überlesen das es in anderen playern geht.. sry
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    komisch, dass dann viele Player auf DirectX basieren und MP3, Wave, ogg, und noch vieles mehr abspielen kann, ebenso kann man eigene und andere Codecs hinzufügen...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich kann allein mit DirectX Audiodateien im MP3, WAV, WMA und MIDI-Format abspielen, alles andere erzeugt Fehler. (OGG-Dateien kann der Player auch, aber nicht mit DirectX)
    Allerdings nerven mich diese sporadischen MP3-Fehler, wie kann ich die beheben?
    also jetzt gleich mal richtigstellen:
    Ja, das hier verwendete DirectSound kann nur WAV, aber DirectX.VideoAudioPlayback kann alles was nen Codec bereitstellt ;)

    New Audio
    diese Klasse ist meines Wissens eindeutig aus der AudioVidePlayback Namespace...

    hinzu kommt, dass das gesamte AudioVideoPlayback auf DirectSound/DirectShow aufgebaut ist, DirectSound jedoch ist bei ManagedDirectX nur sehr abgespeckt vorhanden(weshalb es AudioVideoPlayback überhaupt gibt) und DirectShow überhaupt nicht...Man hat auch die Möglichkeit mit DirectSound jedes andere Format abzuspielen, ist nur entsprechend mehr Arbeit...

    Ach ja, das Thema hat sich erledigt, ich nutze die bass.dll statt DirectX, da DirectX zu bugbehaftet ist.

    Soso...xD
    Meines Wissens beruht die Bass.dll aber ebenfalls auf DirectX, jedoch nicht auf ManagedDirectX^^
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    Samus Aran schrieb:

    bass.dll läuft aber, im Gegensatz zu AudioVideoPlayback, das bei jeder 3. Datei mit ner Exception abkackte :D
    DX ist trotzdem besser.
    DX ist quasi die direkte Steuerung der Sundkarte. und damit muss man eben umgehen können. Die Bass.dll ist für alle, die rumheulen, wenn eben mal zwei Zeilen Code oder ein Ausflug ins tiefere DX nötig sind. Ich hatte mit AudioVideoPlayback noch keine Probleme.
    Also wir müssen deutlich Unterscheiden zwischen DirectX und ManagedDirectX...
    DirectX ansich ist wohl eher nicht an den Fehlern Schuld, sondern eher MDX ansich...

    die Bass.dll kann man teils mit MDX gleichsetzen, da es beides Wrapper sind und diese auch dazu da sind, uns das Leben zu vereinfachen...

    der Code, welcher in MDX(oder mit der Bass.dll) nur wenige Zeilen braucht, benötigt, wenn man direkt mit DX arbeiten will(heißt so viel wie, eigenen Wrapper schreiben^^), dann benötigt man wesentlich mehr und arbeitet auch wirklich direkt mit DirectX^^
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---