Ae galera,… blz!!!
seguinte, preciso setar uma lista de vídeos para o jmf…
ai qndo termina de tocar um video, ele troca pro proximo da lista…
Qndo chegar no final da lista, ele volta pra o primeiro…
Alguem tem uma ideia de como fazer isso…
tipow no meu código, eu jah peguei a duração do video e comparar com a posição atual do video…
ai jah sei qndo um termina… .o problema eh q eu naum consigo setar outro video pra tocar…
Entaum é isso galera…
se puderem me ajudar, ficarei grato…
Att,
Rafael Souza e Silva
Bom dia galera… ngn sabe como faço pra setar uma lista de videos para jmf???
ou pelo menos trocar o vídeo em tempo de execução?!?!
Att,
Rafael Souza e Silva.
Ae galera, dp de muita pesquisa consegui axar esse exemplo de trocar video no jmf…
Então é isso…
Abraçosss
package jmf;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
import javax.swing.JFrame;
public class NewListPlayer extends JFrame {
private Player player = null;
private ArrayList<Player> players = new ArrayList<Player>();
private ArrayList<String> filelist = new ArrayList<String>();
private String path = "C:/";
private int playingIndex = -1;
public int lungime;
public int latime;
EventHandler handler = new EventHandler();
public NewListPlayer(int lung, int lat) {
this.addWindowListener(
new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
stop();
System.exit(0);
}
});
lungime = lung;
latime = lat;
try {
readList();
} catch (FileNotFoundException ex) {
System.out.println(ex);
} catch (IOException ex) {
System.out.println(ex);
}
getContentPane().setBackground(Color.black);
playNextInList();
setSize(lungime, latime);
setVisible(true);
}
// instead of opening just checking for readability
private boolean checkFile(String path) {
File file = new File(path);
boolean ret = false;
try {
ret = file.canRead();
file = null;
return ret;
} catch (Exception e) {
file = null;
System.out.println("File cannot be read");
return false;
}
}
//this is very important method, extracts player from list for current locator,
//if player is already present in the list. Otherwise creates new player for the locator
// and adds to the list
private boolean PlayFile() {
try {
player = players.get(playingIndex);
player.setMediaTime(new Time(0));
player.start();
updatePlayer();
} catch (Exception ex1) {
try {
player = Manager.createPlayer(new MediaLocator(filelist.get(playingIndex)));
player.addControllerListener(handler);
players.add(player);
player.start();
} catch (Exception ex2) {
ex2.getStackTrace();
return false;
}
}
return true;
}
//this method is called from controller event handler as well as playFile method
//used for adding visual and control components
public void updatePlayer() {
Container c = getContentPane();
// load Visual and Control components if they exist
Component visualComponent = player.getVisualComponent();
if (visualComponent != null) {
c.add(visualComponent, BorderLayout.CENTER);
}
Component controlsComponent = player.getControlPanelComponent();
if (controlsComponent != null) {
c.add(controlsComponent, BorderLayout.SOUTH);
}
c.doLayout();
}
// same method used Scanner instead
private void readList() throws FileNotFoundException, IOException {
String str = "";
FileInputStream fstream = new FileInputStream(path + "lista.txt");
Scanner scan = new Scanner(fstream);
filelist.clear();
while (scan.hasNext()) {
if (checkFile(str = scan.nextLine())) {
//add "file:" if you don't already have this in the playlist file locators
filelist.add("file:" + str);
}
}
fstream.close();
scan.close();
}
private void playNextInList() {
playingIndex++;
if (playingIndex == filelist.size()) {
playingIndex = 0;
}
if (!PlayFile()) {
playNextInList();
}
}
//added this method for closing all players at window closing
void stop() {
for (Player p : players) {
p.stop();
p.close();
}
}
public static void main(String args[]) {
new NewListPlayer(1280, 1024);
}
private class EventHandler implements ControllerListener {
public void controllerUpdate(ControllerEvent e) {
if (e instanceof RealizeCompleteEvent) {
updatePlayer();
}
if (e instanceof EndOfMediaEvent) {
if (player.getVisualComponent() != null) {
getContentPane().remove(player.getVisualComponent());
}
if (player.getControlPanelComponent() != null) {
getContentPane().remove(player.getControlPanelComponent());
}
player.stop();
playNextInList();
}
}
}
}