用java代码写出一个看视频的app
时间: 2024-02-28 20:52:33 浏览: 152
好的,以下是一个简单的Java代码示例,用于看视频的app。这个app可以通过命令行运行,并且需要在同一个目录下放置视频文件。该程序使用JavaFX库创建了一个简单的GUI,其中包括一个播放器窗口、播放/暂停按钮和一个进度条来跟踪视频的播放进度。
```java
import java.io.File;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
public class VideoPlayer extends Application {
private MediaPlayer mediaPlayer;
private MediaView mediaView;
private Slider slider;
@Override
public void start(Stage primaryStage) throws Exception {
// load media file
File file = new File("video.mp4");
Media media = new Media(file.toURI().toString());
mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(false);
// create media view
mediaView = new MediaView(mediaPlayer);
// create play/pause button
Button playButton = new Button("Play/Pause");
playButton.setOnAction(e -> {
if (mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING) {
mediaPlayer.pause();
} else {
mediaPlayer.play();
}
});
// create slider to track progress
slider = new Slider();
slider.setMin(0);
slider.setMax(100);
slider.setValue(0);
slider.setPrefWidth(400);
slider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
if (slider.isValueChanging()) {
mediaPlayer.seek(mediaPlayer.getMedia().getDuration().multiply(newValue.doubleValue() / 100.0));
}
}
});
// create layout and set scene
BorderPane layout = new BorderPane();
layout.setCenter(mediaView);
layout.setBottom(new HBox(playButton, slider));
Scene scene = new Scene(layout, 800, 600);
primaryStage.setScene(scene);
primaryStage.show();
// bind slider to media player time
mediaPlayer.currentTimeProperty().addListener(new ChangeListener<javafx.util.Duration>() {
@Override
public void changed(ObservableValue<? extends javafx.util.Duration> observable, javafx.util.Duration oldValue, javafx.util.Duration newValue) {
if (!slider.isValueChanging()) {
double progress = mediaPlayer.getCurrentTime().toMillis() / mediaPlayer.getTotalDuration().toMillis() * 100.0;
slider.setValue(progress);
}
}
});
}
@Override
public void stop() throws Exception {
mediaPlayer.stop();
}
public static void main(String[] args) {
launch(args);
}
}
```
请注意,这仅仅是一个很简单的实现示例。在实际开发中,您需要考虑很多其他因素,例如用户界面设计,视频格式支持,视频缓冲等等。
阅读全文