2016-03-25 11 views
1

Ich frage mich, ob es möglich ist, ein mit VLCJ gespieltes Video um 90 Grad zu drehen. Ein Teil des Codes zum Anzeigen des Videos verwendet wird, ist folgende:Wie dreht man ein auf einem JFrame (VLCJ) platziertes Video?

 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); 

Der Code funktioniert gut, kann das Video ohne Probleme beobachtet werden, aber ich mag eine Drehung auf sich auszuführen. Ich habe im Internet nachgeschaut, aber die meisten Beiträge drehen sich um die Rotation von Bildern ... also kann mir irgendjemand dabei helfen? Vielen Dank!

+0

Ich bin mir nicht sicher, ob VLCJ einfach auf den nativen Peer der Canvas-Datei "drawt", um das Video zu zeigen. Sie haben keine Kontrolle darüber. – MadProgrammer

Antwort

0

Wenn Sie die MediaPlayerFactory erstellen, stellen Sie sicher, dass das Videofilter und Optionen festlegen, die Sie als Fabrik Argumente wollen, zum Beispiel:

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

mediaPlayerFactory = new MediaPlayerFactory(args); 

Das glaube ich nicht, dass es eine Möglichkeit, dies während des Videos dynamisch einstellen spielt.

Die verfügbaren Filter kommen aus:

$vlc --list 

Die verfügbaren Optionen kommen aus:

$vlc -H 

Alternativ Sie DirectMediaPlayer ein verwenden könnte, wo Sie das Video selbst in eine Graphics2D oder OpenGL machen oder was auch immer Kontext und wenden Sie die gewünschte Rotation/Transformation an.

+0

Schön, dass ich diese Optionen endlich benutzt habe für MediaPlayerFactory: '" --video-filter = transform "," --transform-type = 270 "'. Das Video wurde erfolgreich gedreht. –

+0

Ja, der Transformationsfilter ist eine andere Art zu rotieren, aber der Rotationsfilter, wie in meiner Antwort beschrieben, funktioniert und ist in der Tat notwendig, wenn Sie in einem beliebigen Winkel rotieren wollen. – caprica

+0

HI, Ich versuche, den Videoinhalt mitten in der Wiedergabe zu drehen - können wir das mit "transform" oder "rotate" erreichen? @ caprica – Dinesh