Windows Media Player - Probleme!

  • VB.NET

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

    Windows Media Player - Probleme!

    Hi!
    Ich bin neu hier und auch noch nicht so lange bei Visual Basic (2010)... Davor war ich mehr bei Java zugange.
    Ich wollte mir einen kleinen Player für meinen 18ten nächsten Monat schreiben (so als Party-Player :D). Als Vorlage nutze ich den Windows Media Player. Der Player soll nicht unbedingt viel abspielen können. Mir würde MP3 so gesehen vollkommen reichen.
    Das Design habe ich schon, und die Buttons auch (Play, Pause, Stop, "Öffnen" ( Um Dateien auszuwählen), eine TaskBar für Lautstärke, eine ListBox für die Lieder (zum Anzeigen, oder auch um eine Playlist zu erstellen), einen Button um die Playlist zu löschen, zu laden oder eine vorhandene zu speichern). Das wichtigste also :D Mir fehlt aber noch einiges und da komme ich noch nicht so recht weiter... :
    -eine TaskBar, um mir die Position des Liedes anzuzeigen
    -evtl. ein Label, bei welcher Zeit man sich gerade befindet und wie lange das Lied insgesamt noch geht
    -die Funktion, dass Lieder aus der ListBox automatisch nacheinander abgespielt werden (ist für eine PlayList ja nützlich)
    - und vielleicht eine Loop-CheckBox, um das aktuelle Lied zu wiederholen.

    Ihr seht, es fehlt noch einiges :D
    Könnt ihr mir bei diesen Problemen evtl. Tipps geben?
    Ich danke schon mal für Antworten! :thumbsup: :thumbup:

    Verschoben. ~Thunderbolt

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

    Was du bisher hast ist die GUI, zumindest Teile davon. Du solltest Code und GUI getrennt halten. Das was du aufzählst sind Methoden, die zusammen vielleicht 30 Zeilen brauchen. Was du bisher noch nicht aufgezählt hast ist, wie du die Daten überhaupt wiedergeben willst, geschweige denn ob die Playlisten gespeichert werden sollen. Datenverarbeitung und die eigentliche Funktionalität sind die wichtigsten Sachen, die GUI hat später lediglich die Aufgabe die Funktionen aufzurufen. Du solltest dich erstmal um die Datenverarbeitung und die eigentliche Funktionalität kümmern, bevor du mit der GUI rumhantierst.

    Thunderbolt hat dich ja bereits auf CSCore aufmerksam gemacht, damit solltest du relativ einfach einen Soundplayer mit benötigten Events bauen können(hab selbst noch irgendein Beispiel von vor ner Ewigkeit, die kann ich mal hochladen(falls denn Interesse deinerseits besteht), kann halt nur WAV abspielen).
    Die Frage ist nun wie du die Lieder laden willst, ob du sie jedesmal neu von Hand reinladen willst(per Openfiledialog bspw) oder ob du dich in typisierte Datasets einarbeitest, mit denen kannst du das alles ziemlich einfach händeln.

    LG :)
    Falls du mal nach den Projekt googelst, findest du sogar Einträge hier im Forum. Auf GitHub gibt es sogar Code Beispiele, und wenn ich mich nicht irre sogar ein vollständiger (halbherziger :D) Media Player. Mit genügend Know-How kann man dann damit so etwas hier erreichen: Hurricane
    Erstmal danke an @ChOoSeMyNaMe und @ThuCommix für eure Beiträge!
    Den Großteil meiner Fragen, konnte ich selber lösen, aber ein Problem bleibt immer noch... Das automatische abspielen, aller Lieder in der ListBox. Ich Google nun schon seit Stunden und immer wenn ich glaube etwas gefunden zu haben, dass ich gebrauchen könnte, werde ich enttäuscht und es funktioniert nicht. Das, was bis jetzt für mich am hilfreichsten war ist das hier:
    (Das ganze soll über eine CheckBox ablaufen)

    VB.NET-Quellcode

    1. Private PlayAgain As Boolean
    2. Private Sub CheckBox2_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
    3. If CheckBox2.Checked = True Then
    4. My.Settings.PlayAgain = True
    5. End If
    6. End Sub


    Aber das funktioniert auch nicht... Kann mir dabei jemand helfen? Das kann doch nicht sein, dass ich da jetzt schon Stunden dran hänge X/

    Frank Balt schrieb:

    Aber das funktioniert auch nicht
    Du musst ein- und ausschalten:

    VB.NET-Quellcode

    1. My.Settings.PlayAgain = CheckBox2.Checked
    oder binde das Setting PlayAgain direkt an die CheckBox2.Checked -Property.
    Wozu brauchst Du die Variable

    Frank Balt schrieb:

    VB.NET-Quellcode

    1. Private PlayAgain As Boolean
    :?:
    Verwechselst Du da iwas?


    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wie steht es denn jetzt?
    Hast du bereits eine Datenverarbeitung implementiert(Listbox, Listview, DGV, etc.) und vorallem hast du bereits eine Möglichkeit die Files abzuspielen?
    Jedenfalls benötigst du für dein Vorhaben(nach einander wiedergeben & Loop) einen Soundplayer, der die von dir gewünschten Codecs abspielen kann und vorallem ein PlayFinished-Event hat. Dieses musst du dann abonnieren und dort brauchst du nur abzufragen ob geloopt, zufällig oder der Reihe nach wiedergegeben werden soll(Stichwort Enum).
    Mit CSCore wirst du das alles und mehr umsetzen können, du musst eben nur einen Soundplayer schreiben, da dürften die Samples von CSCore und ein guter Converter von nutzen sein.

    LG
    Also... Ich bin nun etwas weiter gekommen:

    VB.NET-Quellcode

    1. Do Until Me.AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsStopped
    2. Application.DoEvents()
    3. If Me.AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsStopped Then
    4. If ListBox1.SelectedIndex < ListBox1.Items.Count - 1 Then
    5. ListBox1.SelectedIndex = ListBox1.SelectedIndex + 1
    6. Me.AxWindowsMediaPlayer1.URL = ListBox1.Items(ListBox1.SelectedIndex).ToString
    7. Else
    8. Exit Do
    9. End If
    10. End If
    11. Loop

    Das ganze will ich auf eine CheckBox übertragen... Wie mache ich das? Hat da jemand einen Tipp?
    Du hast scheinbar meine Posts ignoriert. Das was du da konstruiert hast ist inperformant und vorallem unsinnig. Du musst lediglich das Playfinished-Event des Soundplayers abonnieren und dort machste dann die Methoden zum Titelwechsel rein. Bemüh einfach mal Google darum, denn Events abonnieren ist eigentlich VBnet Einführung Stunde 1.
    Applications.DoEvents ist prinzipiell nonsinns, das wird einfach durch Threading ersetzt, wenn Infos asynchron ausgefragt werden sollen. Du benötigst hierfür KEIN Threading und auch keine Schleifen.

    Ich empfehle dir erstmal die Grundlagen zu lernen.

    LG