用JavaFX写一个简易视频音乐播放器
功能支持:
- 音量调节
- 暂停播放
- 重新开始播放
未来改进思路
- 进度条用Slider实现?
- 倍速(暂时没想到怎么实现)
问题
这边有个小问题是
我给Media的是一个http上的mp4,可以实现视频播放,
在使用本地mp4时只有声音没有视频画面
而在别人的电脑上使用本地mp4时,却并没有存在问题
各位在尝试后可以对我进行反馈 …
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import javafx.util.Duration;
public class MediaDemo extends Application {
public static void main(String[] args) {
launch(args);
}
// private static final String MEDIA_URL = "file:/C:/Users/TR/IdeaProjects/javafx/src/Test/123.mp4";用本地mp4视频只有声音没有画面??
private static final String MEDIA_URL = "http://vfx.mtime.cn/Video/2019/03/19/mp4/190319222227698228.mp4";
@Override
public void start(Stage primaryStage) {
Media media = new Media(MEDIA_URL);
MediaPlayer mediaPlayer = new MediaPlayer(media);
MediaView mediaView = new MediaView(mediaPlayer);
Button playButton = new Button(">");
playButton.setOnAction(event -> {
if (playButton.getText().equals(">")) {
mediaPlayer.play();
playButton.setText("||");
}else {
mediaPlayer.pause();
playButton.setText(">");
}
});
Button rewindButton = new Button("<<");
rewindButton.setOnAction(event -> mediaPlayer.seek(Duration.ZERO));
Slider slVolume = new Slider();
slVolume.setPrefWidth(150);
slVolume.setMinWidth(30);
slVolume.setMinWidth(Region.USE_PREF_SIZE);
slVolume.setValue(50);
mediaPlayer.volumeProperty().bind(slVolume.valueProperty().divide(100));
HBox hBox = new HBox(10);
hBox.setAlignment(Pos.CENTER);
hBox.getChildren().addAll(playButton,rewindButton,new Label("Volume"),slVolume);
BorderPane pane = new BorderPane();
pane.setBottom(hBox);
pane.setCenter(mediaView);
Scene scene = new Scene(pane,1000,600);
primaryStage.setScene(scene);
primaryStage.show();
}
}