En essayant de lire une vidéo dans mon application Java en utilisant JMF. La vidéo fonctionne bien, mais j'essaie d'agrandir la vidéo. le code ci-dessous est placé à l'intérieur d'un autre jpanel avec une mise en page gridbag.Redimensionner la vidéo avec JMF
Je l'ai actuellement ajouté sans contrainte FILL donc il devrait afficher à sa taille normale. Lorsque j'ajoute une contrainte de remplissage, cela étire la vidéo en modifiant le format d'image.
Je suppose im demander si quelqu'un sait comment redimensionner manuellement une vidéo ou comment verrouiller le rapport d'aspect
public class VideoPanel extends JPanel{
private Player mediaPlayer;
private File file;
public VideoPanel(String videoFile, String path){
setOpaque(false);
file = new File(path+"/video/"+videoFile);
URL mediaURL = null;
try {
mediaURL = file.toURI().toURL();
} catch (MalformedURLException e) {
e.printStackTrace();
}
setLayout(new BorderLayout());
Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, true);
try{
mediaPlayer = Manager.createRealizedPlayer(mediaURL);
Component video = mediaPlayer.getVisualComponent();
Component controls = mediaPlayer.getControlPanelComponent();
double scale = getScale(this.getWidth(),this.getHeight(),video.getWidth(),video.getHeight());
video.setPreferredSize(new Dimension((int)scale*video.getWidth(),(int)scale*video.getHeight()));
if(video != null)
add(video,BorderLayout.CENTER);
if(controls != null)
add(controls,BorderLayout.SOUTH);
}
catch (NoPlayerException noPlayerException){
System.err.println("No media player found");
}
catch (CannotRealizeException cannotRealizeException){
System.err.println("Could not realize media player");
}
catch (IOException iOException){
System.err.println("Error reading from the source");
}
}
private double getScale(int panelWidth, int panelHeight, int imageWidth, int imageHeight) {
double scale = 1;
double xScale;
double yScale;
xScale = (double) panelWidth/imageWidth;
yScale = (double) panelHeight/imageHeight;
scale = Math.min(xScale, yScale);
return scale;
}
public void stopPlay(){
mediaPlayer.stop();
}
}
Est-ce que quelqu'un a résolu cela? Je n'arrive pas à lire une vidéo via JMF (en fait j'utilise http://fmj-sf.net/ mais l'API est exactement la même). – petersaints