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!