# mp4 dateien mit dem Java Media Framework abspielen.



## JavaTechno (26. Mrz 2008)

Gibt es eine Erweiterung zu dem Java Media Framework. Ich muss wmv, mpg, avi oder am liebsten mp4 Dateien abspielen.

Wenn ich mp4 Dateien abspielen kann wäre ich sehr froh und meine Frage wäre damit geklärt. Ich habe gegoogelt aber nichts gefunden. 


Danke


----------



## TechnoJava (26. Mrz 2008)

Hab ihr einen Code wo ein Fenster verwendet wird wo einfach nur ein Video abgespielt wird. Das Fenster sollte nachdem es das Video fertig abgespielt hat schließen. Es soll eine Datei abspielen die als Pfad übergeben wird. es handelt sich um eine mpg-Datei.


Bitte ich brauche eure hilfe


----------



## TechnoJava (26. Mrz 2008)

*Ich habe es hinbekommen!*

Wie bekomme ich es hin das die Datei aus der Jar-Datei ausgelesene wird??

Dabei Interessiert mich der Pfad, wie muss der aussehen? 


```
package org.versuchNr2;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.HashMap;

import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.Manager;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

public class VersuchNr2 extends JFrame implements ControllerListener, ActionListener {
	
	private Player player;
	private Component control;
	private JPanel viewPanel;
	private JPanel labelPanel;

	public VersuchNr2() {
		File file = new File("NVEExport.0001-1.mpg");
		
		play(file);
//		
//		setTitle("AudioVideo-Demo");
//		setLayout(new BorderLayout());
//
//		// Menüleiste erstellen
//		JMenuBar mb = new JMenuBar();
//		JMenu fileMenu = new JMenu("Datei");
//		JMenuItem fileMenuPlay = new JMenuItem("Öffnen");
//		fileMenuPlay.addActionListener(this);
//		fileMenu.add(fileMenuPlay);
//		mb.add(fileMenu);
//		setJMenuBar(mb);
		JLabel label = new JLabel("");
		labelPanel = new JPanel();
		labelPanel.add(label);
//		add(labelPanel, BorderLayout.NORTH);
//		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	// Mausbehandlung zur Dateiauswahl
	public void actionPerformed(ActionEvent e) {
//		// Dateinamen auswählen
//		JFileChooser chooser = new JFileChooser();
//		String[] extensions = { "mpg", "wav", "mp3" };
//		MyFileFilter filter = new MyFileFilter(extensions);
//		chooser.setFileFilter(filter);
//		int choice = chooser.showOpenDialog(VersuchNr2.this);
//
//		if (choice == JFileChooser.APPROVE_OPTION) {
//			File file = chooser.getSelectedFile();
//
//			if (file != null)
//				play(file);
//
//		}
	}

	// Abspielen einer Audio/Video-Datei
	public void play(File file) {
		if (player != null)
			player.stop();

		try {
			// Anzeige für Dateinamen aktualisieren
			//labelPanel.remove(0);
			JLabel label = new JLabel(file.getName());
			//labelPanel.add(label);

			player = Manager.createPlayer(new File("5.mpg").toURL());
			player.addControllerListener(this);
			player.start();

			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// Anzeige von Audio/Video
	public void controllerUpdate(ControllerEvent e) {

		if (e instanceof RealizeCompleteEvent) {
			// Player ist mit Vorbereitungen fertig

			// evtl. alte Ansicht und Steuerung entfernen
//			if (viewPanel != null)
//				remove(viewPanel);
//
//			if (control != null)
//				remove(control);

			// AWT Komponente mit Bild
			Component view = player.getVisualComponent();

			// Anzeige des Bildes falls es ein Video ist
			if (view != null) {
				viewPanel = new JPanel();
				viewPanel.add(view);
				add(viewPanel, BorderLayout.CENTER);
			}

			//control = player.getControlPanelComponent();

//			if (control != null)
//				;
//			add(control, BorderLayout.SOUTH);

			pack();
		}
	}

}

/**
 * FileFilter für Dateiauswahl-Box
 */
class MyFileFilter extends javax.swing.filechooser.FileFilter {
	private HashMap<String, String> extensions;
	private String description;

	public MyFileFilter(String[] ext) {
		description = "";
		extensions = new HashMap<String, String>();

		for (int i = 0; i < ext.length; i++) {
			if (ext[i].startsWith("."))
				ext[i] = ext[i].substring(1);

			if (ext[i].startsWith("*."))
				ext[i] = ext[i].substring(2);

			extensions.put(ext[i], ext[i]);
			description += " *." + ext[i] + ",";
		}
	}

	public String getDescription() {
		return description.substring(0, description.length());
	}

	public boolean accept(File f) {
		if (f != null) {
			if (f.isDirectory())
				return true;
			else {
				String name = f.getName();
				int pos = name.indexOf(".");

				if (pos < 0)
					return false;

				String ext = name.substring(pos + 1);

				if (extensions.get(ext) != null)
					return true;
				else
					return false;
			}
		} else
			return false;
	}
}

/*
 * 
 * 
 * 
 * public VersuchNr1() { // TODO Auto-generated constructor stub }
 * 
 * 
 * public static void main(String[] args) { // TODO Auto-generated method stub
 *  }
 * 
 * @Override public void controllerUpdate(ControllerEvent arg0) { // TODO
 * Auto-generated method stub
 *  }
 * 
 * @Override public void actionPerformed(ActionEvent arg0) { // TODO
 * Auto-generated method stub
 *  }
 *  }
 */
```


```
import org.versuchNr2.VersuchNr2;

public class VideoAbspielen {

	public static void main(String[] args) {
        VersuchNr2 fenster = new VersuchNr2();
                   fenster.setSize(720, 576);   
                   fenster.setUndecorated(true);
                   fenster.setLocationRelativeTo(null);
                   fenster.setVisible(true);
                   
                   try {
					Thread.sleep(6000);
					fenster.setVisible(false);
					fenster.dispose();
                	   
				} catch (Exception e) {
					// TODO: handle exception
				}
	}
	
}
```


Egal was Ihr sagt, das nennt sich die Holzhammer Methode, Hauptsache es funktioniert. Ich bereinige den Code 
später.

Der wichtige abschnitt ist:


```
player = Manager.createPlayer(new File("5.mpg").toURL());
         player.addControllerListener(this);
         player.start();
```


----------

