gpt4 book ai didi

java - 使用 JMF 调整视频大小

转载 作者:行者123 更新时间:2023-12-02 08:37:14 25 4
gpt4 key购买 nike

我正在尝试使用 JMF 在我的 java 应用程序中播放视频。该视频播放正常,但我正在尝试将视频放大。下面的代码被放置在另一个带有 gridbag 布局的 jpanel 中。

我目前添加它时没有 FILL 约束,因此它应该以其正常大小显示。

当我添加填充约束时,它会拉伸(stretch)视频,使宽高比倾斜。

我想我想问是否有人知道如何手动调整视频大小或如何锁定宽高比

public class VideoPanel extends JPanel{
private Player mediaPlayer;
private File file;

public VideoPanel(String videoFile, String path){
setOpaque(false);
file = new File(path+"/video/"+videoFile);

URL mediaURL = null;
try {
mediaURL = file.toURI().toURL();
} catch (MalformedURLException e) {
e.printStackTrace();
}
setLayout( new BorderLayout() );
Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
try{
mediaPlayer = Manager.createRealizedPlayer( mediaURL );
Component video = mediaPlayer.getVisualComponent();
Component controls = mediaPlayer.getControlPanelComponent();

double scale = getScale(this.getWidth(),this.getHeight(),video.getWidth(),video.getHeight());

video.setPreferredSize(new Dimension((int)scale*video.getWidth(),(int)scale*video.getHeight()));



if(video != null)
add(video,BorderLayout.CENTER );
if(controls != null)
add(controls,BorderLayout.SOUTH );
}
catch ( NoPlayerException noPlayerException ){
System.err.println( "No media player found" );
}
catch ( CannotRealizeException cannotRealizeException ){
System.err.println( "Could not realize media player" );
}
catch ( IOException iOException ){
System.err.println( "Error reading from the source" );
}
}

private double getScale(int panelWidth, int panelHeight, int imageWidth, int imageHeight) {
double scale = 1;
double xScale;
double yScale;

xScale = (double) panelWidth / imageWidth;
yScale = (double) panelHeight / imageHeight;
scale = Math.min(xScale, yScale);
return scale;
}

public void stopPlay(){
mediaPlayer.stop();
}

}

最佳答案

您可能只想将视频组件放入另一个容器面板中并从容器中控制大小。在我的应用程序中,我在 JFrame 中设置了视频组件,并且要调整视频大小,我只需调整容器大小即可。

关于java - 使用 JMF 调整视频大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1244517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com