如何旋转放置在JFrame(VLCJ)上的视频?

时间:2016-03-25 20:18:59

标签: java swing rotation vlcj

我想知道是否可以将用VLCJ播放的视频旋转90度。用于显示视频的部分代码如下:

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

代码运行良好,视频可以毫无问题地观看,但我想对它进行轮换。我已经在互联网上查了一下,但大多数帖子都是关于图像的旋转......所以任何人都可以帮助我吗?谢谢!

2 个答案:

答案 0 :(得分:0)

创建MediaPlayerFactory时,请务必指定所需的视频过滤器和选项作为工厂参数,例如:

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

mediaPlayerFactory = new MediaPlayerFactory(args);

我认为在播放视频时,无法动态设置此内容。

可用的过滤器来自:

$vlc --list

可用选项来自:

$vlc -H

或者,您可以使用DirectMediaPlayer自己将视频呈现为Graphics2D或OpenGL或任何上下文,并应用您想要的任何旋转/转换。

答案 1 :(得分:0)

这里是错误:

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

应该是

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

花了半天