Media Player Zeit & Vortschritt

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Kombrinki.

    Media Player Zeit & Vortschritt

    Hallo @ all

    Ich mache gerade einen Media Player. Dazu habe ich ein Medi Player Modul auf meiner Form. Nun möchte ich gerne, dass wenn ein Lied abgespielt wird die Zeit des Liedes oder der Playlist (ist so programiert das nur 1 Lied in der Playlist ist) und die aktuelle Zeit - also die Zeit an welcher das Lied gerade ist - in ein Label geschrieben wird.

    Außerdem soll der Vortschritt des Liedes in einer Trackbar oder Progressbar (Trackbar wäre mir lieber) dargestellt werden.

    Wie kann ich sowas realisieren? Hoffe auf eure Hilfe.
    Viele Grüße - Croasider
    Die Zeit des Liedes bekommt man mit:

    VB.NET-Quellcode

    1. player.currentMedia.durationString

    und die aktuelle Zeit bekommst du mit:

    VB.NET-Quellcode

    1. player.Ctlcontrols.currentPosition

    Ehrlich gesagt verstehe ich nicht, warum du nicht die SuFu benutzt hast. Das gab's hier bestimmt schon mehrere Male.
    Wie du den Fortschritt in der Trackbar darstellst sollte für einen User mit über 200 Posts genauso wenig schwierig sein ...
    Ich werde das jetzt einfach mal beschreiben ...
    Also du setzt die Max auf die volle Länge des Titels. Dabei benutzt du aber nicht

    VB.NET-Quellcode

    1. player.currentMedia.durationString
    sondern

    VB.NET-Quellcode

    1. player.currentMedia.duration
    denn so kannst du einfach Trackbar.Value += 1 setzen, und zählst damit hoch.
    Jetzt musst du nur noch die passende Stelle finden, wo du hochzählst.
    Entweder du nimmst einen Timer, der alle Sekunde den Trackbar Wert erhöht oder, was besser wäre, du guckst ob das WinMediaPlayer Control ein Event hat, welches ausgelöst wird, wenn CurrentPosition sich verändert (weiß allerdings auf die Schnelle nicht, ob es sowas gibt, kannste ja mal selber googeln).
    Ich hab mal so was ähnliches programmiert und bei mir hats auch lange nicht funktioniert. Ich hab dann einfach das Objekt gewechselt.

    Und zwar war das der Ax.WindowsMediaPlayer. Mit dem sollte eigentlich das oben erwähnte funktionieren ;)
    Als ich damals sowas benutzt habe, hatte ich das gleiche Problem ...
    Wenn der Titel läuft und du z.B. die Duration mit ner MessageBox abfragst, bekommste den richtigen Wert.
    Leider weiß ich dafür noch keine Lösung ... vllt kann sich ja mal nen Pro melden.
    wie wo rufe ich die ab?

    VB.NET-Quellcode

    1. 'ListView1.SelectedIndexChanged
    2. MediaPlayer1.URL = ListView1.FocusedItem.SubItems(3).Text
    3. MediaPlayer1.Ctlcontrols.stop()
    4. 'Button1.click
    5. MediaPlayer1.Ctlcontrols.play()
    6. Label4.Text = MediaPlayer1.currentMedia.durationString


    so mache ich das...
    Wenn du die Werte, die er abfragen soll, wie Duration etc. in einen Timer_Tick() Event einbaust, funktionierts. Irgendwie liegt das Problem daran, dass man die Werte nicht direkt beim Start schon abrufen kann...

    Es funktioniert auch wenn du zB davor den Thread mit der Methode Sleep warten lässt.
    Der Timer soll auf die Sekundenzeit des Liedes eingestellt werden und wenn diese erreicht ist soll der Timer gestoppt werden. Beispiel:

    Das Lied eght 2:30 also 210 Skeunden (der Wert wird in Time gespeichert)
    Der Timer soll auf 210 Sekunden eingestellt werden

    Tick-Event:
    akt_time+=1
    Label1.Text=bla
    Label2.Text=bla
    If akt_time=time then timer1.stop
    Ich verstehs immer noch nicht... sorry

    Warum willst du den Timer stoppen?

    Oder willst du das Lied stoppen, wenn es eine bestimmte Zeit erreicht?

    Wenn du den Timer stoppen willst, kannst du das ja mit einer If-Abfrage machen und zwar fragst du einfach ob die Zeit in der Timevariable dem aktuellen Fortschritt des Liedes entspricht.
    naja stimmt ist eigentlich überflüssig. Aber bei:

    MediaPlayer1.Ctlcontrols.currentPosition

    kommt so ein Format: 1.694867
    und er zählt auch bei 61 weiter. Wie kann ich ads in eine Zeit formatieren?

    EDIT: habs selber hinbekommen.

    Eine Frage habe ich aber immernoch: Habe meine Trackbar jetzt so:

    VB.NET-Quellcode

    1. TrackBar1.Maximum = MediaPlayer1.currentMedia.duration 'Zeit des Liedes = Max Vortschritt
    2. TrackBar1.Value = MediaPlayer1.Ctlcontrols.currentPosition ' Vortschritt


    Wenn ich jetzt auf die TrackBar klicke soll er im Lied an die Stelle springen. Wie kann ich sowas machen?

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