Alguém pode dar uma olhada em minha classe para executar um AVI… (detalhe já foi adicionado o plugin jffmpeg-1.1.0.jar com os codecs necessários para execução do video) não exibe nenhum erro… apenas o componente de video capturado do método player.getVisualComponent(); não é devidamente inserido no painel. alguem por favor pode analisar o meu código? Obrigado
package jmfPlayer;
import java.io.IOException;
import java.net.MalformedURLException;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.swing.*;
import javax.media.GainControl;
import java.awt.*;
/**
*
* @author cleber.goncalves
*/
public class Player extends javax.swing.JFrame {
/** Creates new form Player */
public Player() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jSlider1 = new javax.swing.JSlider();
jLabel1 = new javax.swing.JLabel();
play = new javax.swing.JButton();
stop = new javax.swing.JButton();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
jMenu3 = new javax.swing.JMenu();
jMenuBar2 = new javax.swing.JMenuBar();
jMenu4 = new javax.swing.JMenu();
jMenuItem2 = new javax.swing.JMenuItem();
jMenu5 = new javax.swing.JMenu();
jMenu6 = new javax.swing.JMenu();
jPanel1 = new javax.swing.JPanel();
texto = new javax.swing.JTextField();
jMenuBar3 = new javax.swing.JMenuBar();
jMenu7 = new javax.swing.JMenu();
jMenuItem3 = new javax.swing.JMenuItem();
jMenu8 = new javax.swing.JMenu();
jMenu9 = new javax.swing.JMenu();
jPanel2 = new javax.swing.JPanel();
jMenuBar4 = new javax.swing.JMenuBar();
jMenu10 = new javax.swing.JMenu();
jMenuItem4 = new javax.swing.JMenuItem();
jMenu11 = new javax.swing.JMenu();
jMenu12 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("MaxPlayer");
setBackground(new java.awt.Color(0, 153, 153));
setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
setForeground(java.awt.Color.white);
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
jSlider1.setMaximum(VOLUM_MAX);
jSlider1.setMinimum(VOLUM_MIN);
jSlider1.setValue(VOLUM_INIT);
jSlider1.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlider1StateChanged(evt);
}
});
jLabel1.setText("Volume");
play.setIcon(new javax.swing.ImageIcon(getClass().getResource("/control_play.png"))); // NOI18N
play.setText("Play");
play.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
playActionPerformed(evt);
}
});
stop.setIcon(new javax.swing.ImageIcon(getClass().getResource("/control_stop.png"))); // NOI18N
stop.setText("Stop");
stop.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
stopActionPerformed(evt);
}
});
jMenu1.setText("Arquivo");
jMenuItem1.setText("Abrir Arquivo");
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem1);
jMenuBar1.add(jMenu1);
jMenu2.setText("Editar");
jMenuBar1.add(jMenu2);
jMenu3.setText("Exit");
jMenu3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenu3ActionPerformed(evt);
}
});
jMenuBar1.add(jMenu3);
jMenu4.setText("Arquivo");
jMenuItem2.setText("Abrir Arquivo");
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem2);
jMenuBar2.add(jMenu4);
jMenu5.setText("Editar");
jMenuBar2.add(jMenu5);
jMenu6.setText("Exit");
jMenu6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenu3ActionPerformed(evt);
}
});
jMenuBar2.add(jMenu6);
texto.setEditable(false);
texto.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1, new java.awt.Color(0, 102, 102)));
org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, texto, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 435, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel1Layout.createSequentialGroup()
.addContainerGap(27, Short.MAX_VALUE)
.add(texto, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
);
jMenu7.setText("Arquivo");
jMenuItem3.setText("Abrir Arquivo");
jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
jMenu7.add(jMenuItem3);
jMenuBar3.add(jMenu7);
jMenu8.setText("Editar");
jMenuBar3.add(jMenu8);
jMenu9.setText("Exit");
jMenu9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenu3ActionPerformed(evt);
}
});
jMenuBar3.add(jMenu9);
jPanel2.setBackground(new java.awt.Color(0, 0, 0));
org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 435, Short.MAX_VALUE)
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 286, Short.MAX_VALUE)
);
jMenu10.setText("Arquivo");
jMenuItem4.setText("Abrir Arquivo");
jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
jMenu10.add(jMenuItem4);
jMenuBar4.add(jMenu10);
jMenu11.setText("Editar");
jMenuBar4.add(jMenu11);
jMenu12.setText("Exit");
jMenu12.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenu3ActionPerformed(evt);
}
});
jMenuBar4.add(jMenu12);
setJMenuBar(jMenuBar4);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jLabel1)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jSlider1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 70, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(22, 22, 22))
.add(layout.createSequentialGroup()
.add(146, 146, 146)
.add(play)
.add(26, 26, 26)
.add(stop)
.addContainerGap(135, Short.MAX_VALUE))
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(121, 121, 121)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jSlider1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(jLabel1)))
.add(layout.createSequentialGroup()
.add(27, 27, 27)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(stop)
.add(play))))
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void stopActionPerformed(java.awt.event.ActionEvent evt) {
if (player.getState() == player.Started) {
player.stop();
} else {
JOptionPane.showMessageDialog(null, "Erro ao Parar o audio não existe arquivo carregado");
}
}
private void jMenu3ActionPerformed(java.awt.event.ActionEvent evt) {
setVisible(false);
}
public void adicionarComponente(JPanel p) {
}
private void playActionPerformed(java.awt.event.ActionEvent evt) {
try {
if (audio.getAudioMP3() != null) {
player = Manager.createRealizedPlayer(audio.getAudioMP3());
//get GainControl
GainControl volumControl = player.getGainControl();
//set the initial volume
volumControl.setLevel(VOLUM_INIT_LEVEL);
Component controle = player.getControlPanelComponent();
controle.setSize(440, 20);
controle.setBackground(Color.CYAN);
controle.setName("Controle");
jPanel1.add(controle, BorderLayout.CENTER);
Component video = player.getVisualComponent();
jPanel2.add(video, BorderLayout.CENTER);
jPanel2.revalidate();
player.start();
} else {
JOptionPane.showMessageDialog(null, "Erro ao Executar arquivos não carregado");
}
} catch (NoPlayerException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (CannotRealizeException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
}
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
arqMusica = new JFileChooser();
int resultado = arqMusica.showOpenDialog(null);
if (resultado == JFileChooser.APPROVE_OPTION) {
play.setIcon(new javax.swing.ImageIcon(getClass().getResource("/control_play_blue.png")));
stop.setIcon(new javax.swing.ImageIcon(getClass().getResource("/control_stop_blue.png")));
try {
audio.setAudioMP3(arqMusica.getSelectedFile().toURL());
texto.setText(arqMusica.getSelectedFile().toURL().getFile());
} catch (MalformedURLException e1) {
JOptionPane.showMessageDialog(null, " Erro ao criar URL ", " Erro ", JOptionPane.ERROR_MESSAGE);
}
}
}
private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) {
//get GainControl
GainControl volumControl = player.getGainControl();
JSlider source = (JSlider) evt.getSource();
//se o JSlider for manipulado ajusta o volume
if (source.getValueIsAdjusting()) {
//converte o escala do volume para float (0.0 - 1.0)
float newVolum = ((float) source.getValue()) / 10;
volumControl.setLevel(newVolum);
}
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
jPanel2.setBorder(BorderFactory.createLineBorder(Color.blue, 2));
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Player().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu10;
private javax.swing.JMenu jMenu11;
private javax.swing.JMenu jMenu12;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenu jMenu3;
private javax.swing.JMenu jMenu4;
private javax.swing.JMenu jMenu5;
private javax.swing.JMenu jMenu6;
private javax.swing.JMenu jMenu7;
private javax.swing.JMenu jMenu8;
private javax.swing.JMenu jMenu9;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuBar jMenuBar2;
private javax.swing.JMenuBar jMenuBar3;
private javax.swing.JMenuBar jMenuBar4;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JSlider jSlider1;
private javax.swing.JButton play;
private javax.swing.JButton stop;
private javax.swing.JTextField texto;
// End of variables declaration
private Audio audio = new Audio();
private javax.media.Player player = null;
private JFileChooser arqMusica = null ;
//set up volum slider's parameters
static final int VOLUM_MIN = 0;
static final int VOLUM_MAX = 10;
static final int VOLUM_INIT = 2;
static final float VOLUM_INIT_LEVEL = 0.2f;
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jmfPlayer;
import java.net.URL;
import javax.swing.JPanel;
public class Audio extends JPanel {
private URL audioMP3 = null ;
public URL getAudioMP3() {
return audioMP3;
}
public void setAudioMP3(URL audioMP3) {
this.audioMP3 = audioMP3;
}
}