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

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

该代码运行良好,可以毫无问题地观看视频,但我想对其执行旋转。我在互联网上查找过,但大多数帖子都是关于图像旋转的……所以有人可以帮助我吗?谢谢!

最佳答案

创建 MediaPlayerFactory 时,请确保指定您想要作为工厂参数的视频过滤器和选项,例如:

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

mediaPlayerFactory = new MediaPlayerFactory(args);

我认为没有任何方法可以在视频播放时动态设置它。

可用的过滤器来自:

$vlc --list

可用选项来自:

$vlc -H

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

关于java - 如何旋转放置在 JFrame (VLCJ) 上的视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36227391/

相关文章:

java - 改进旋转文本的显示

java - 如何处理文件关闭抛出的异常?

java - 使用java正则表达式从xml中提取作者

java - 无法从 Java 执行 MySQL 存储过程

Java Swing Cust ListCellRenderer

c++ - 旋转其中一个物体后,如何将两个物体移动到同一方向?

java - java中从ArrayList<String[]>更改为String[][]

java - 我无法在使用 Net beans 时修改标签中的值

java - 在 java 中捕获来自 c++ 的输出而不返回

android - 在 Android 上使用 OpenGL ES 围绕另一个球体旋转