Java-Forum.org  
Zurück   Java-Forum.org > >

Allgemeine Java-Themen: Videos abspielen etc.

Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen

Antwort    
Themen-Optionen Thema durchsuchen Ansicht
Alt 28.12.2009, 19:15   #1
erxx
 
Videos abspielen etc. - Standard Videos abspielen etc.

Hallo liebe Gemeinde,

Wie ich bereits in meinem ersten beitrag hier geschrieben habe bin ich noch ein blutiger Anfänger was JAVA angeht.

Jedenfalls gilt es nun in einem Frame ein Video abzuspielen. Es soll jedoch möglich sein je nach Gegebenheiten innerhalb von einer Reihe von Videos eines auszusuchen was dann abgespielt wird. Das heisst der benutzer soll keinerlei Einfluss auf die Wahl des Videos haben sondern nur Play/Pause/Stop (evtl. Lautstärke).

Meine Frage hierzu ist nun ob ich das nun mit JMF oder jVLC oder eventuell mit etwas völlig anderem umsetzen soll. Das Einbinden soll dabei möglichst einfach sein, aber effektiv.

Kleine Neben"frage":

Bei der Pfadauswahl zur Videodatei (da das Programm auf mehreren Plattformen funktionieren soll) erstelle ich im Arbeitsverzeichnis ein Ordner vid (/dist/vid) und hau dort die videos rein so dass im Listing die Pfadangabe der Videos etwa so aussieht: System.getProperties("user.dir") + "/" + dateiname1;

Was mich daran wieder stutzig macht ist das "/" da es ja bei Windows ein \ ist...

Gibt sicherlich eine bessere Möglichkeit?!


Vielen Dank

Grüsse
 
Alt 28.12.2009, 19:50   #2
Guybrush Threepwood
 
Videos abspielen etc. - Standard AW: Videos abspielen etc.

zur Frage mit dem Dateipfad: Nimm lieber File.Separator statt "/". Da wird dann das richtige Zeichen eingesetzt. Zum Mediaplayer kann ich Dir leider keinen endgültigen Tipp geben. Es gibt mehrere Projekte, aber was jetzt am Besten ist - keine Ahnung.
 
Alt 28.12.2009, 21:55   #3
faetzminator
 
Videos abspielen etc. - Standard AW: Videos abspielen etc.

Hier noch eine Anmerkung zu Guybrush Threepwood's Post, das wird dir in dem Zusammenhang weiterhelfen: System (Java Platform SE 6)
 
Alt 29.12.2009, 18:02   #4
erxx
Themenstarter
 
Videos abspielen etc. - Standard AW: Videos abspielen etc.

Danke euch für die Antworten. Das hat mir bereits etwas weitergeholfen.

Hat vielleicht jemand ein konkretes Beispiel um ein Video in einem Frame abzuspielen ?
 
Alt 02.01.2010, 17:35   #5
Kr0e
 
Videos abspielen etc. - Standard AW: Videos abspielen etc.

Ja, nimm JMC, DAs sind die Java Media Classes...

Ist zur Zeit die beste Lösung fürs Abspielen bei Java. Ist noch in einem inoffiziellen Stadium, aber kommt mit JDK 7 offiziell raus.

Wie du daran kommst, ist hier beschrieben:

(Ist aus einem anderen Forum kopiert, deshalb Englisch)

Hi,
thanks for the replies Smiley

I think it would be the best to write a small tutorial about JMC. The rest (Drawing a BufferedImage to ImageGraphics)
is nothing special.

Because JMC is officially not part of the jdk, there is no documentation about these classes. I read a lot about JMC and finally i was able to create a simple MediaPlayer.

1. At first you'll need the JMC files. The files consist of a jmc.jar file, which is used for every OS and a few dynamic library files. (On windows they are called *.dll)

How can i get these files ?

Download and install JavaFX SDK 1.2. After installation switch to the install folder and enter the directory "lib/desktop".

Now you will see a lot of files. You need the jmc.jar file and the particular dll files (On mac and linux these files have another extension)

The names of the files: jmc.dll, msvcp71.dll, msvcr71.dll

Now you have everything to create a very fast media application. If your java application runs on Windows, the DirectShow codecs are used, on Mac the Core library and on Linux the GStreamer library... You do not have to care about compiling new codecs... I think the library will be released offcially in JDK 7!

To use the classes in your java application you have to add the files to your buildpath.



How can i create a simple media application ?

It's easier than you think! The following code shows a simple implementation of a MediaPlayer:

Code:

public class MediaPlayer implements VideoRendererListener {

private MediaProvider prov; //This is the most important class!

private VideoRenderControl renderer; //It's a interface to control the rendering

private Graphics2D g2;

public MediaPlayer(File path, Graphics2D g2) {
this.g2 = g2;
prov = new MediaProvider(path.toURI());
renderer = prov.getControl(VideoRenderControl.class);
renderer.addVideoRendererListener(this);
}

@Override
public void videoFrameUpdated(VideoRendererEvent arg0) {
if(g2 != null)
renderer.paintVideoFrame(g2, new Rectangle(0, renderer.getFrameSize().height,
getWidth(), getHeight()));
}
}


It could be happen that the MediaProvider says that the media file is invalid... Check your path! Empty spaces are restricted!

Now you can draw a video on a Graphics2D object! So you are ready! To access the track control or sound control, you can easily use prov.getControl(VideoRenderControl.class); You must replace VideoRenderControl in this case with the control type you need. The package com.sun.media.jmc.control contains all control interfaces...

Ok, i hope i could help to intergrate the new Java Media Classes! They are very powerful and should be used instead of JMF for simple playback!!
Chris





Das sollte dir helfen...

Gruß,

Chris
 
Alt 02.01.2010, 20:41   #6
erxx
Themenstarter
 
Videos abspielen etc. - Standard AW: Videos abspielen etc.

Danke erstmal für deine Antwort. Jedoch habe ich in der Zeile ein Problem:

renderer.paintVideoFrame(g2, new Rectangle(0, renderer.getFrameSize().height,
getWidth(), getHeight()));


will er vom obenstehenden Code Beispiel nicht annehmen.

internal error, cannot instantiate Rectangle(int,int,int,int) at java.awt.Rectangle to ()


Java Code:
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5.  
  6. package audiovideo;
  7.  
  8.  
  9. import com.sun.media.jmc.MediaProvider;
  10. import com.sun.media.jmc.control.VideoRenderControl;
  11. import com.sun.media.jmc.event.VideoRendererEvent;
  12. import com.sun.media.jmc.event.VideoRendererListener;
  13. import java.awt.Graphics2D;
  14. import java.awt.Rectangle;
  15. import java.io.File;
  16.  
  17.  
  18.  
  19. public class MediaPlayer implements VideoRendererListener {
  20.  
  21. private MediaProvider prov; //This is the most important class!
  22.  
  23. private VideoRenderControl renderer; //It's a interface to control the rendering
  24.  
  25. private Graphics2D g2;
  26.  
  27. public void MediaPlayer(File path, Graphics2D g2) {
  28.     this.g2 = g2;
  29.     prov = new MediaProvider(path.toURI());
  30.     renderer = prov.getControl(VideoRenderControl.class);
  31.     renderer.addVideoRendererListener(this);
  32. }
  33.  
  34. public void videoFrameUpdated(VideoRendererEvent arg0) {
  35.     if(g2 != null)
  36.         renderer.paintVideoFrame(g2, new Rectangle(0, renderer.getFrameSize().height,
  37. getWidth(), getHeight()));
  38. }
  39. }
 
Alt 02.01.2010, 21:53   #7
Kr0e
 
Videos abspielen etc. - Standard AW: Videos abspielen etc.

Upps, mein Fehler!

getHeight() und getWidth gibt es ja garnicht in dieser Klasse!
Musst sie ersetzen durch JFrame oder JPanel.getWidth/getHeight

Nimm am besten folgenden Codeabschnitt, damit gewährleitest du, dass das Video korret skaliert wird:

Java Code:
  1. JPanel panel;
  2.         Graphics2D ig = (Graphics2D)panel.getGraphics(); //Das musst du iwo anders aufrufen ;)
  3.  
  4.     @Override
  5.     public void videoFrameUpdated(VideoRendererEvent arg0) {
  6.         float ratio = vrc.getFrameSize().height / (float)vrc.getFrameSize().width;
  7.        
  8.         int diff = ( panel.getHeight() - Math.round(ratio * panel.getHeight())) / 2;
  9.        
  10.  
  11.         vrc.paintVideo(ig,
  12.                 new Rectangle(0, 0, vrc.getFrameSize().width, vrc.getFrameSize().height)
  13.                 ,              
  14.                 new Rectangle(0, diff, panel.getWidth(), Math.round(ratio * panel.getHeight())));
  15.     }
 
Alt 03.01.2010, 13:37   #8
erxx
Themenstarter
 
Videos abspielen etc. - Standard AW: Videos abspielen etc.

Ich befürchte dass meine java Kenntnisse noch nicht ausreichen um das Komplett nachzuvollziehen.
Jedenfalls wird nun das vrc nicht erkannt.


ich habe auch diesen code gefunden
jedenfalls erkennt er dort das JMediaPlayer nicht,

import com.sun.media.jmc.JMediaPlayer macht da Probleme da das JMediaPlayer in dem package nicht existiert bei mir.


01.package test;
02.
03.import java.io.File;
04.
05.import javax.swing.JFrame;
06.
07.import com.sun.media.jmc.JMediaPlayer;
08.
09.public class TestJMC {
10. public static void main(String[] args) throws Exception {
11. JFrame frame = new JFrame("Testing JMC"); {
12. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
13. frame.setSize(800, 600);
14.
15. JMediaPlayer player = new JMediaPlayer(new File("trailer_1080p.mov").toURI()); {
16. frame.add(player);
17. }
18.
19. frame.setVisible(true);
20. }
21. }
22.}
 
Alt 03.01.2010, 16:20   #9
Kr0e
 
Videos abspielen etc. - Standard AW: Videos abspielen etc.

Hi, sry... Mann, ich mach aber auch doofe FEhler in der Eile

Dein Code kann nicht klappen. Der ist für JMC1.1 ausgelegt.. (JavaFX 1.1)

Einfach vrc durhc arg0 ersetzen. Tut mir Leid. Hätte ich sehen müssen....
vrc ist das Event!

Gruß,
Chris
 
Alt 03.01.2010, 21:21   #10
erxx
Themenstarter
 
Videos abspielen etc. - Standard AW: Videos abspielen etc.

Danke für deine Antworten

arg0.paintVideo existiert jedoch auch nicht :/
 
Antwort    

Zurück   Java-Forum.org > >

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen: Videos abspielen etc.
videos abspielen
videos abspielen: Ist es möglich mit Java3D oder auch Java Videos...
JMF - Abspielen eines mpeg1-Videos
JMF - Abspielen eines mpeg1-Videos: Hi, nach ca 2 Arbeitstagen erfolgloser Suche habe...


Sie betrachten gerade Videos abspielen etc.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2014, vBulletin Solutions, Inc.