Problem mit Java Multimedia Framework

Status
Nicht offen für weitere Antworten.

JPKI

Top Contributor
Hallo Leute,

ich hab ein Problem mit JMF. Ich will einem Media Player schreiben, dazu nutze ich JMF.
Ich möchte eine Mp3-Datei laden, die Länge (Dauer) auslesen und in der Datei während der
Wiedergabe hin- und herspringen.

Mein Problem ist: Ich weiss nicht wie (is ja klar, sonst würd' ich hier nich' posten... :wink: )!

Ich hab mit die Javadoc von Sun angeguckt, doch aus dem ganzen Wirrwarr von Klassen, Interfaces und
Methoden werd ich irgendwie nicht schlau. Also hab ich gegoogelt, ge"yahoot", ge"msn"t, usw., doch nichts
vernünftiges gefunden.

Deswegen wäre ich sehr, sehr dankbar für ein KSKB, das mir zeigt, wie ich

- eine mp3-Datei öffne (weiss ich eigentlich schon, doch der Vollständigkeit wegen :bae: ),
- die Länge in Sekunden oder Milisekunden auslese,
- während der Wiedergabe in der Datei hin- und herspringe.
 

The_S

Top Contributor
Ich hab nen mp3-player mit dem JMF geschrieben, sobald ich daheim bin poste ich dir den relevanten Code. Ich hoffe mal, dass ich das nicht wieder vergesse, falls doch einfach kurz ne PN schreiben ;)
 

JPKI

Top Contributor
Vielen Dank schonmal vorweg!
(Brauchbare Hilfe! Endlich! Nach so langer Zeit! *LECHZ* :wink: :cool: :bae: :applaus: )
 

The_S

Top Contributor
Hier meine PlayerKlasse aus meinem mp3-Player. Du wirst sie so zwar nicht kompilieren können, aber ich denke das wichtige kannst du dir da rausziehen :)

Code:
import java.io.IOException;

import javax.media.Controller;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.Time;
import javax.swing.JOptionPane;

import constants.MySoundConstants;
import data.superclasses.Data;
import events.ModelChangedEvent;
import events.ViewChangedEvent;

public class MusicPlayer extends Data implements ControllerListener {

	private Player player = null;
	private MusicFile curMf = null;
	private float volume = 0.3F;
	private boolean updateSlider = true;
	
	public MusicPlayer() {
		
		observeSong();
	}
	
	private void makePlayerReady() {
		
		int state = player.getState(); 
		while(state != Controller.Started) { 
			try { 
				Thread.sleep(50); 
				state = player.getState(); 
			} 
			catch(InterruptedException e) { 
				JOptionPane.showMessageDialog(null, 
				e, 
				"Fehler", 
				JOptionPane.ERROR_MESSAGE); 
			} 
		} 
	}
	 
	private synchronized void stopPlayer() { 
		 
		int state = player.getState(); 
		while(state == Controller.Started) { 
			try { 
				Thread.sleep(60); 
				state = player.getState(); 
			} 
			catch(InterruptedException e) { 
				JOptionPane.showMessageDialog(null, 
				e, 
				"Fehler", 
				JOptionPane.ERROR_MESSAGE); 
			} 
		} 
	} 
	
	public synchronized void playSong(MusicFile mf) {
		
		curMf = mf;
		try {
			if (player != null) {
				stopSong();
			}
			player = Manager.createPlayer(new MediaLocator(mf.getData().toURL())); 
			player.addControllerListener(this); 
			player.start(); 
			makePlayerReady(); 
			setTime(mf.getStartSeconds());
			setPlayerVolume(); 
			fireUpdate(new ModelChangedEvent(this, (long)player.getDuration().getSeconds(), MySoundConstants.UPDATE_MAX_TIME));
			mf.setStartSeconds(0);
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		catch (NoPlayerException e) {
			e.printStackTrace();
		}
	} 
	
	public void setPlayerVolume() { 
		player.getGainControl().setLevel(volume); 
	} 
	
	public void stopSong() {
		
		if (player != null) {
			player.stop(); 
			player.setMediaTime(new Time(0)); 
			player.close(); 
			fireUpdate(new ModelChangedEvent(this, curMf, MySoundConstants.SET_SELECTED));
			stopPlayer(); 
		}
	}
	
	public void setTime(double seconds) {
		if (player != null) {
			player.setMediaTime(new Time((double)seconds));
		}
	}
	
	public void observeSong() {
		
		new Thread(new Runnable() {
			public void run() {
				long seconds = 0;
				while (true) {
					if (player != null && player.getState() == Controller.Started && updateSlider) {
						seconds = (long)player.getMediaTime().getSeconds();
						fireUpdate(new ModelChangedEvent(this, seconds, MySoundConstants.UPDATE_TIME));
					}
					try {
						Thread.sleep(1000);
					}
					catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}).start();
	}
	
	public void setVolume(float volume) {
		
		this.volume = volume;
		if (player != null) {
			setPlayerVolume();
		}
	}
	
	public float getVolume() {
		return volume;
	}
	
	@Override
	public void viewChanged(ViewChangedEvent vce) {
	}

	public void controllerUpdate(ControllerEvent arg0) {
		
		if (arg0 instanceof EndOfMediaEvent) { 
			stopPlayer(); 
			fireUpdate(new ModelChangedEvent(this, null, MySoundConstants.SONG_FINISHED)); 
		} 
	}

	public boolean isUpdateSlider() {
		return updateSlider;
	}

	public void setUpdateSlider(boolean updateSlider) {
		this.updateSlider = updateSlider;
	}
}
 

JPKI

Top Contributor
Danke sehr. Werds so schnell wie möglich ausprobieren.

Gehe ich recht in der Annahme, dass ich das

Code:
import constants.MySoundConstants;
import data.superclasses.Data;
import events.ModelChangedEvent;
import events.ViewChangedEvent;

nicht benötige und diese Packages nur zu deinem Programm gehören?

[Edit]Bin's mal durchgegangen. Worum handelt es sich bei der Klasse Data? Worum bei MusicFile? Ich bin grade nicht
zu Hause, deswegen kann ich's nicht ausprobieren, daheim hab ich im Moment kein Internet, deswegen möcht ich nicht irgendwas vergessen, wenn ich mich dranmache.[/Edit]
 

The_S

Top Contributor
JPKI hat gesagt.:
Gehe ich recht in der Annahme, dass ich das

Code:
import constants.MySoundConstants;
import data.superclasses.Data;
import events.ModelChangedEvent;
import events.ViewChangedEvent;

nicht benötige und diese Packages nur zu deinem Programm gehören?

jup

JPKI hat gesagt.:
Worum handelt es sich bei der Klasse Data?

Ist eine eigene Klasse von mir, für dich irrelevant

JPKI hat gesagt.:
Worum bei MusicFile?

MusicFile ist ebenfalls eine eigene Klasse von mir, sie beinhaltet einige Daten zu einem Musikstück (länge, ort, künstler, titel, ...), damit diese nicht jedesmal neu ausgelesen werden müssen. Du kannst auch hier einfach ein File nehmen ;) .
 

JPKI

Top Contributor
In Ordnung, ich hab da auch sowas wie deine MusicFile-Klasse geschreiben, auch zum Titlel auslesen...

Danke für den Code, ich werds heut ausprobieren!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Java modul Problem Allgemeine Java-Themen 4
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S Java OpenOffice Problem mit Windows-Benutzerwechsel Allgemeine Java-Themen 19
C J2V8 NodeJs Java Bride Problem und Frage!?!? Allgemeine Java-Themen 1
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
Seikuassi Input/Output Java transferTo ByteArrayOutputStream-Problem Allgemeine Java-Themen 4
K Problem: Java-Klasse mit mehreren Threads als eigenen Prozess starten Allgemeine Java-Themen 3
B Best Practice Java Zugriffsrechte Problem Allgemeine Java-Themen 2
B Java Zahlenausgabe Problem Allgemeine Java-Themen 6
N Problem mit Java Sperrlisten Allgemeine Java-Themen 0
F Java Spiel Sprung problem Allgemeine Java-Themen 5
G JavaFX Problem nach Update auf Java 8 Allgemeine Java-Themen 0
S Java Problem bei der Rückgabe eines Arrays Allgemeine Java-Themen 19
M Problem mit (etwas komplizierterem) Java Programm Allgemeine Java-Themen 14
W Java Logging Problem Allgemeine Java-Themen 3
K java problem Allgemeine Java-Themen 5
B java.io.IOException: Problem reading font data. Allgemeine Java-Themen 9
H Problem mit Java Generics Allgemeine Java-Themen 6
P Eclipse Java Native Interface-Problem Allgemeine Java-Themen 8
I Java als Dienst Problem Allgemeine Java-Themen 2
F Problem mit Java 7 und Proguard Allgemeine Java-Themen 6
L Input/Output Java und CMD Problem Allgemeine Java-Themen 3
C Java Server Pages Problem Allgemeine Java-Themen 6
M Lego Nxt und Java Problem Allgemeine Java-Themen 8
S Perfomance Problem mit Java Applikation Allgemeine Java-Themen 4
G Problem Java Mail API: CC wird nicht berücksichtigt Allgemeine Java-Themen 7
P Problem mit Java Web Start Allgemeine Java-Themen 1
J Eclipse Java Build Path / Java Problem??? Allgemeine Java-Themen 13
B USB-I2C Adapter JAVA problem Allgemeine Java-Themen 6
D Problem mit java.sql.Timestamp Allgemeine Java-Themen 2
L Problem mit Hintergrund bei JAVA Applet Allgemeine Java-Themen 27
D Problem mit Java version? Allgemeine Java-Themen 4
P Zip Problem in Java Allgemeine Java-Themen 4
N Kleines nicht java Problem Allgemeine Java-Themen 7
G Problem mit RSA Verschlüsselung bei .net und Java Allgemeine Java-Themen 1
Chris81T Performance Problem durch mehrfaches Starten eines JAVA Prog Allgemeine Java-Themen 8
V Java heap space Problem Allgemeine Java-Themen 8
T Problem: eclipse / Java / cyrillisch Allgemeine Java-Themen 4
D Problem mit java.util.scanner: Falsche Ergebnisse Allgemeine Java-Themen 4
S Java 5/6 Problem im Classpath Allgemeine Java-Themen 11
F Problem mit Java Listen Allgemeine Java-Themen 4
M Java applet zusammen mit DHTML z-index Problem Allgemeine Java-Themen 2
G problem mit java-editor Allgemeine Java-Themen 4
H Problem mit Java (dsound.dll) Allgemeine Java-Themen 5
E Java.net und Thread-Problem Allgemeine Java-Themen 2
S Problem mit backreference mit java und regex Allgemeine Java-Themen 7
L WindowsTrayIcon in Java 1.4 - Problem beim ausführen der JAR Allgemeine Java-Themen 2
C Java Batch Warte Problem Allgemeine Java-Themen 4
P Java Acces Datenbank Problem ! (Brauche eine Abfrage) Allgemeine Java-Themen 5
G Java-Problem mit Netbeans Allgemeine Java-Themen 2
G Problem mit Java Fenstern Allgemeine Java-Themen 2
T Problem RSA-Algorithmus in Java? Allgemeine Java-Themen 2
B java problem - speichern Allgemeine Java-Themen 9
G Problem mit java.lang.reflect.Field Allgemeine Java-Themen 15
G java! Problem mit Chat-Applet Allgemeine Java-Themen 3
S Problem beim Bearbeiten von Java-Dateien unter Linux Allgemeine Java-Themen 3
R Browser-Problem nach Java-Update Allgemeine Java-Themen 9
D (gelöst) Java-Problem bei freemind mit fedora core 4 Allgemeine Java-Themen 9
G Java Server Faces - Problem Allgemeine Java-Themen 2
L-ectron-X Problem mit Collections.sort() mit Java 1.5 Allgemeine Java-Themen 9
C Hilfe! Java Control Panel & Limewire Problem! Allgemeine Java-Themen 3
A Probleme bei der Berechnung von Pi! Java Problem Allgemeine Java-Themen 2
G jTable-Problem --> java.lang.OutOfMemoryError Allgemeine Java-Themen 5
T JAVA+SQL=Mysteriöses Problem Allgemeine Java-Themen 3
P java exe erstellen problem Allgemeine Java-Themen 3
N Java Problem mit WIN ME Allgemeine Java-Themen 2
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
D Read JSON File Problem Allgemeine Java-Themen 9
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0

Ähnliche Java Themen

Neue Themen


Oben