EJERCICIO 4 Agosto 19, 2008
Posted by beceoca in 1.trackback
BEATRIZ GARCÍA
ENUNCIADO EJERCICIO 4
Hola,perdón por el retraso he tenido problemas con Internet.
En este ejercicio vamos a trabajar con JMF. A la hora de realizar el ejercicio para que sea un poco más fácil, vamos a suponer dos cosas:
- Si al reproducir un fichero de audio le pedimos al player que me dé la componente de video, el player devolverá null.
- Para ver cuanto tiempo dura la reproducción de un fragmento de audio o de vídeo, lo vamos a realizar reproduciendo dicho fragmento, sin visualizarlo, y por medios ajenos al JMF mediremos cuánto tiempo ha tardado en reproducirse.
Hechas estas suposiciones, se trata ahora de construir un programa que reciba como argumentos de entrada(por la línea de comandos) una lista de archivos de video y de audio indistintamente.
Al ejecutarse el programa, imprimirá por consola el título de cada archivo, el tipo de archivo(audio o video) y su duración.
Después de realizar eso, seleccionará el fragmento más corto de todos ellos(da igual que sea de audio o de video) y lo volverá a reproducirlo pero esta vez mostrándolo al usuario. Esta última reproducción tendrá que ser cíclica, es decir, cuando el fragmento termine, volverá a empezar desde el principio.
SOLUCIÓN EJERCICIO 4
import java.awt.* ;
import java.awt.event.* ;
import javax.swing.* ;
import java.lang.String ;
import java.net.URL ;
import java.net.MalformedURLException ;
import java.io.IOExceptión ;
import javax.media.* ;
public class Reproductor extends JFrame implements ControllerListener, ActionListener{
Player player=null ;
Component visualComponent=null;
Component controlComponent=null;
Component progressBar=null;
int cont=0;
Timer timer;
static String archivo;
int numVeces=1;
public Reproductor(){
this.getContentPane().setLayout(new BorderLayout());
URL url=null;
timer=new Timer(1000,this);
try{
if((url=new URL(archivo))==null){
System.out.println(“ERROR”);
}
else{
player=Manager.createPlayer(url);
player.addControllerListener(this);
}
}catch(MalformedURLException e){
System.out.println(“URL NO VÁLIDA”);
}catch(IOException e){
System.out.println(“EXCEPCIÓN DE LECTURA/ESCRITURA”);
}catch(NoPlayerException e){
System.out.println(“NO EXISTE REPRODUCTOR”);
}
this.addWindowListener(new ManejadorVentana());
player.start();
timer.start();
}
public synchronized void ControllerUpdate(ControllerEvent event){
if(player==null){
System.out.println(“ERROR”);
return ;
}
if(event instanceof RealizeCompleteEvent){
if((visualComponent=player.getVisualComponent())!=null){
}else{
return null;
}
if((ControlComponent=player.getPanelComponent())!=null){
this.getContentPane().add(“South”, controlComponent);
}
validate();
}else if(event instanceof EndOfMediaEvent){
if(numVeces==2){
player.setMediaTime(new Time(0));
if((visualComponent=player.getVisualComponent())!=null){
this.getContentPane().add(“Center”,visualComponent);
}
validate();
player.start();
}else{
numVeces++;
player.setMediaTime(new Time(0));
timer.stop();
cont=0;
}
}else if(event instanceof ControllerErrorEvent){
player=null;
System.err.println(((ControllerErrerEvent)event).getMessage());
}
}
}
public void actionPerformed(ActionEvent event){
cont++;
}
public static void main(String[]args){
Reproductor reproductor=new Reproductor();
reproductor.setSize(200,200);
reproductor.setVisible(true);
int minimaCont=args[0].cont;
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
System.out.println(args[i].cont);
if((visualComponent=player.getVisualComponent())!=null){
System.out.println(“ARCHIVO DE VIDEO”);
}else{
System.out.println(“ARCHIVO DE AUDIO”);
}
if(minimaCont==args[i].cont){
archivo=args[i];
player.start();
}
else if(minimaCont<args[i].cont){
archivo=args[0];
player.start();
}
else if(minimaCont>args[i].cont){
archivo=args[i];
player.start();
}
}
}
public class ManejadorVentana extends WindowAdapter{
public void windowClosing(WindowEvent e){
if(player!=null){
player.stop();
player.deallocate();
}
System.exit(0);
}
}
}
CONCEPTOS EJERCICIO 4
En este último ejercicio los conceptos que se han tratado han sido:
-El concepto de JMF
-El concepto de interfaz gráfica(swing)
-El concepto de programación orientada a eventos
-El concepto del Timer
Comentarios»
No comments yet — be the first.