Problema exibição de vídeo usando JMF em Applet

0 respostas
Murilo_Locatelli

E ai galera,

estou com um problema aqui, estou fazendo um applet que utiliza JMF, já consegui criar o certificado e assinar o jar. Mas não consigo fazer exibir o video corretamente, utilizando um JFileChooser.

Quando passo a URL fixa no código para abrir estaticamente, o video aparece normalmente, mas quando eu carrego a applet só com um botão, e escolho o video, aparece somente os controles do video e o audio, a imagem não aparece corretamente, segue o código das duas classes que utilizo:

import java.awt.BorderLayout;
import java.awt.Component;
import java.io.IOException;
import java.net.URL;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.swing.JPanel;

//Classe que extend JPanel, por isso ao ser chamada será adicionada em um JFrame
public class MidiaPanel extends JPanel {
   public MidiaPanel( URL mediaURL ) {
	  
	  // Definição do layout que será utilizado
      BorderLayout borderLayout = new BorderLayout();
	  this.setLayout(borderLayout);
	  
	  try {
    	 
         // Cria um player para reproduzir a mídia especificada no URL     
         Player player = Manager.createRealizedPlayer( mediaURL );

         // Obtém os componentes para o vídeo e os controles de reprodução
         Component video = player.getVisualComponent();          
         Component controles = player.getControlPanelComponent();
         
         if ( video != null ) {
        	 
             // Adiciona o componente de vídeo ao JPanel
        	 this.add( video, BorderLayout.CENTER );
         }
         
         if ( controles != null ) {
        	 
        	 // Adiciona os controles ao JPanel
        	 this.add( controles, BorderLayout.SOUTH );
         }
         
         // Inicia a reprodução do arquivo
         player.start(); 
         
      } catch ( NoPlayerException noPlayerException ) {
         // Exceção caso o sistema não possa reproduzir o arquivo especificado
    	 System.out.println( "Player não encontrado" );
      } catch ( CannotRealizeException cannotRealizeException ) {
    	 // Exceção caso o sistema não possa identificar os recurso que arquivo especificado necessita
         System.out.println( "Recursos para o arquivo não identificados" );
      } catch ( IOException iOException ) {
    	 // Exceção caso haja um erro durante a leitura do arquivo
         System.out.println( "Erro durante a leitura do arquivo" );
      }
   }   
}
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.JFileChooser;
import javax.swing.JFrame;

//Classe que será criado um JFileChooser para ser escolhido o arquivo de mídia e chamada a Classe MidiaPanel
public class ExemploPlayer {
   public static void main( String args[] ) {
	   
	  // Cria um JFileChooser de arquivo
      JFileChooser fileChooser = new JFileChooser();
      
      // Mostra diálogo de arquivo aberto
      int resultado = fileChooser.showOpenDialog( null );
      
      // Indica se o usuário escolheu um arquivo
      if ( resultado == JFileChooser.APPROVE_OPTION ) {
    	 
         URL mediaURL = null;
         
         try {        	 
            // Obtém o arquivo como URL
            mediaURL = fileChooser.getSelectedFile().toURI().toURL();
         
         } catch ( MalformedURLException malformedURLException ) {
        	
        	// Exceção caso não seja possível criar o objeto URL para o arquivo escolhido
            System.out.println( "URL não pode ser criada" );
         }
         
         // Exibe somente se houver um URL válido
         if ( mediaURL != null ) {
        	 
        	// Cria uma Janela com o título Exemplo Player
            JFrame janela = new JFrame( "Exemplo Player" );
            janela.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            
            // Chama o construtor da classe MidiaPanel passando a URL que contém o arquivo que o usuário escolheu
            MidiaPanel midiaPanel = new MidiaPanel( mediaURL );
            
            // Adiciona o JPanel contendo o Player à janela criada anteriormente
            janela.add( midiaPanel );
            
            // Define tamanho da janela e exibição da mesma
            janela.setSize( 300, 300 );
            janela.setVisible( true );            
         }
      }
   }
   
}

Não sei se seria alguma problema com Swing, ou com JMF msm. Já tentei de tudo…

Se alguém puder ajudar?

Vlw pessoal!

Criado 7 de setembro de 2008
Respostas 0
Participantes 1