setMediaTime?

Status
Nicht offen für weitere Antworten.
Nabend.

Ich hab n Objekt Player (JMF) zum Abspielen einer Audio-Datei. Zusätzlich dazu hab ich ne ProgressBar.

Nun soll ein User irgendwo in den Bereich der ProgressBar klicken können und der Sound wird der Position in der ProgressBar ab der entsprechenden Position in der Datei abgespielt. Die "Überwachung" der Progressbar klappt, die Berechnung von Pixel in Prozent und dann in Sekunden/Minuten klappt und auch die visuelle Aktualisierung der ProgressBar. :)

Was aber nicht funktioniert ist das Setzen des "Abspielzeigers" des Sounds. Also wenn der Sound bspw. 40 Sekunden lang ist und ich etwa in die Mitte der ProgressBar klicke, müsste der Sound ab der 20. Sekunde weiterspielen. Tut er aber nicht.
Der Sound wird "vorgespult", aber in mir nicht nachvollziehbaren Schritten auch immer bei jedem Klick. Also wenn ich 3x an die 50%-Position der ProgressBar klicke, wird immer ein Stückchen weiter abgespielt, also nicht immer von derselben Stelle.

Ich hoffe, das ist einigermassen verständlich. :)

Wenn ich merke (mouseReleased), dass in die Progressbar geklickt wurde, stoppe ich den player, setze die Position in der Datei mit setMediaTime() und starte den Player wieder.
Erst dachte ich, dass meine Berechnungen falsch sind (Pixel => Prozent => Sekunden), aber die sonst auf jeden Fall korrekt. Und selbst wenn ich fest "5.0" übergebe, wird der Sound nicht ab der 5. Sekunde abgespielt.

Was mache ich falsch? Jemand ne Idee?

cya
 
Was erwartest Du denn als Code? Viel gibt es ja nicht zu zeigen, denn es kommt ja nur auf setMediaTime() an. :)
Ich stoppe bei mouseReleased den Player, setze mit setMediaTime den Sekunden-Wert und starte den Player wieder.

Und was JSlider betrifft: ich möchte halt ne JProgressBar und kein JSlider.

cya
 

The_S

Top Contributor
Weil ich schonmal nen Player mit JMF geschrieben hab, nur is das scho ne ganze Zeit her und da is der Code total unübersichtlich und kein Stück kommentiert => Ich blick nix mehr :lol: . Deswegen habsch gedacht ein Code-Schnippsel könnte mir vielleicht auf die Sprünge helfen, wo ich bei mir suchen muss :oops: :bae:
 
Wenn's denn etwas hilft:

Code:
public void mouseReleased(MouseEvent e)
{
    Point actMousePos;
    actMousePos = e.getPoint();

    // Berechnung Fortschrittbalken-Wertes und graphische Aktualisierung
    double progressBarProzent = ((double) 100D / (double) 60D) * (double)actMousePos.x;
    progressBar.setValue((int)progressBarProzent);
    progressBar.repaint();

    // Berechnung der Zeit in der Sounddatei
    double actMediaTime = ((double)player.getMediaTimeSec() / (double)100) * (double) progressBarProzent;

    // Player stoppen, Zeit setzt, Player starten
    player.stop();
    player.setMediaTime(new Time(actMediaTime));
//    player.setMediaTime(new javax.media.Time(5.0));   <- Zeit direkt gesetzt; funktioniert auch nicht
    player.start();
}

cya
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben