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

Java 如何旋转放置在JFrame(VLCJ)上的视频?,java,swing,rotation,vlcj,Java,Swing,Rotation,Vlcj,我想知道是否有可能将VLCJ播放的视频旋转90度。用于显示视频的部分代码如下所示: mediaPlayerFactory=新的mediaPlayerFactory(); mediaPlayer=mediaPlayerFactory.newEmbeddedMediaPlayer(); frame.setresizeable(false); 框架。设置未装饰(真实); Canvas c=新画布(); c、 挫折背景(颜色:黑色); 最终JPanel p=新JPanel(); p、 setLayout

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

mediaPlayerFactory=新的mediaPlayerFactory();
mediaPlayer=mediaPlayerFactory.newEmbeddedMediaPlayer();
frame.setresizeable(false);
框架。设置未装饰(真实);
Canvas c=新画布();
c、 挫折背景(颜色:黑色);
最终JPanel p=新JPanel();
p、 setLayout(新的BorderLayout());
p、 添加(c,BorderLayout.CENTER);
框架。添加(p,边框布局。中心);
mediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(c));
帧设置位置(650200);
框架设置尺寸(1050600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
playMedia(文件);
mediaPlayer.mute(假);

代码工作得很好,视频可以毫无问题地观看,但我想对其执行旋转。我在网上查过,但大多数帖子都是关于图像旋转的。。。有人能帮我吗?谢谢大家!

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

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

mediaPlayerFactory = new MediaPlayerFactory(args);
我不认为有任何方法可以在视频播放时动态设置

可用的过滤器来自:

$vlc --list
$vlc -H
可用选项来自:

$vlc --list
$vlc -H

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

当您创建
MediaPlayerFactory
时,确保将视频过滤器和选项指定为出厂参数,例如:

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

mediaPlayerFactory = new MediaPlayerFactory(args);
我不认为有任何方法可以在视频播放时动态设置

可用的过滤器来自:

$vlc --list
$vlc -H
可用选项来自:

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

这里有一个错误:

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

String[] args = {
    "--video-filter", 
    "rotate",
    "--rotate-angle",
    "10"
};
花了半天时间

这里有个错误:

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

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

花了半天的时间

我不确定你能不能,VLCJ只是“绘制”到用于显示视频的
画布
的本机对等体上,你对它没有任何控制权我不确定你能不能,VLCJ只是“绘制”到用于显示视频的
画布
的本机对等体上,你对它没有任何控制权,我最后为MediaPlayerFactory使用了以下选项:
“--video filter=transform”、“--transform type=270”
。视频被成功地旋转了。是的,变换过滤器是一种不同的旋转方式,但是在我的答案中描述的旋转滤波器确实是有效的,并且实际上是必要的,如果你想在任意角度旋转。嗨,我试图在回放中间旋转视频内容。有没有一种方法可以使用“变换”来实现呢?“旋转”?@caprica播放期间不能更改旋转。@caprica VLC player可以在播放媒体内容时动态执行此操作工具->效果和过滤器->视频效果->几何体->变换->更改下拉列表。想知道EmbeddedMediaPlayer是否可以执行此操作。例如
String[]媒体播放器\工厂\参数={”--视频过滤器=转换“,};mediaPlayerComponent=新嵌入的mediaPlayerComponent(){受保护的字符串[]onGetMediaPlayerFactoryArgs(){返回媒体\u播放器\u工厂\u ARGS;}};字符串[]媒体\u选项={”--转换类型=180“,};mediaPlayerComponent.getMediaPlayer().playMedia(媒体\u MRL,媒体\u选项)很好,我终于为MediaPlayerFactory使用了这些选项:
“--video filter=transform”,“--transform type=270“
。视频被成功地旋转了。是的,变换过滤器是一种不同的旋转方式,但是在我的答案中描述的旋转滤波器确实是有效的,并且实际上是必要的,如果你想在任意角度旋转。嗨,我试图在回放中间旋转视频内容。有没有一种方法可以使用“变换”来实现呢?“旋转”?@caprica播放期间不能更改旋转。@caprica VLC player可以在播放媒体内容时动态执行此操作工具->效果和过滤器->视频效果->几何体->变换->更改下拉列表。想知道EmbeddedMediaPlayer是否可以执行此操作。例如
String[]媒体播放器\工厂\参数={”--视频过滤器=transform“,};mediaPlayerComponent=new EmbeddedMediaPlayerComponent(){protected String[]onGetMediaPlayerFactoryArgs(){return MEDIA\u PLAYER\u FACTORY\u ARGS;};String[]MEDIA\u OPTIONS={--transform type=180”,};mediaPlayerComponent.getMediaPlayer().playMedia(MEDIA\u MRL,MEDIA\u OPTIONS);