2016-03-25 1 views
1

Je me demande s'il est possible de faire pivoter à 90 degrés une vidéo jouée avec VLCJ. Une partie du code utilisé pour l'affichage de la vidéo est la suivante:Comment faire pivoter une vidéo placée sur un JFrame (VLCJ)?

 mediaPlayerFactory = new MediaPlayerFactory();  

     mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer(); 

     frame.setResizable(false); 
     frame.setUndecorated(true); 

     Canvas c = new Canvas(); 
     c.setBackground(Color.black); 
     final JPanel p = new JPanel(); 

     p.setLayout(new BorderLayout()); 

     p.add(c, BorderLayout.CENTER); 
     frame.add(p, BorderLayout.CENTER); 

     mediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(c)); 

     frame.setLocation(650, 200); 
     frame.setSize(1050, 600); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true);    

     mediaPlayer.playMedia(file); 
     mediaPlayer.mute(false); 

Le code fonctionne bien, la vidéo peut être regardé sans problèmes, mais je voudrais effectuer une rotation sur elle. J'ai regardé sur Internet mais la plupart des articles concernent la rotation des images ... alors n'importe qui peut m'aider avec ça? Je vous remercie!

+0

Je ne suis pas sûr que vous pouvez, VLCJ simplement "dessine" sur le pair natif de la 'Canvas' qui est utilisé pour montrer la vidéo, vous n'avez aucun contrôle sur elle – MadProgrammer

Répondre

0

Lorsque vous créez le MediaPlayerFactory, assurez-vous de spécifier le filtre vidéo et les options que vous voulez que les arguments de l'usine, par exemple:

String[] args = { 
    "--video-filter", 
    "rotate", 
    "rotate-angle", 
    "10" 
}; 

mediaPlayerFactory = new MediaPlayerFactory(args); 

Je ne pense pas qu'il y ait un moyen de définir cette dynamique alors que la vidéo est en train de jouer.

Les filtres disponibles proviennent de:

$vlc --list 

Les options disponibles proviennent de:

$vlc -H 

Alternativement, vous pouvez utiliser un DirectMediaPlayer où vous rendre la vidéo vous-même dans un Graphics2D ou OpenGL ou tout contexte et appliquez la rotation/transformation que vous voulez.

+0

Nice, j'ai finalement utilisé ces options pour MediaPlayerFactory: '" --video-filter = transformer "," --transform-type = 270 "'. La vidéo a été tournée avec succès. –

+0

Oui, le filtre de transformation est une façon différente de faire pivoter, mais le filtre de rotation comme décrit dans ma réponse fonctionne et est en fait nécessaire si vous voulez tourner à un angle arbitraire. – caprica

+0

HI, J'essaie de faire pivoter le contenu vidéo au milieu de la lecture - y a-t-il un moyen d'y parvenir en utilisant «transformer» ou «tourner»? @caprica – Dinesh