下面列出了怎么用javafx.scene.media.MediaPlayer的API类实例代码及写法,或者点击链接到github查看源代码。
public void start11(Stage primaryStage) {
Text txt1 = new Text("What a beautiful music!");
Text txt2 = new Text("If you don't hear music, turn up the volume.");
File f = new File("src/main/resources/jb.mp3");
Media m = new Media(f.toURI().toString());
MediaPlayer mp = new MediaPlayer(m);
MediaView mv = new MediaView(mp);
VBox vb = new VBox(txt1, txt2, mv);
vb.setSpacing(20);
vb.setAlignment(Pos.CENTER);
vb.setPadding(new Insets(10, 10, 10, 10));
Scene scene = new Scene(vb, 350, 100);
primaryStage.setScene(scene);
primaryStage.setTitle("JavaFX with embedded media player");
primaryStage.onCloseRequestProperty()
.setValue(e -> System.out.println("Bye! See you later!"));
primaryStage.show();
mp.play();
}
public void pauseResume()
{
new Thread(new Task<>() {
@Override
protected Object call() throws Exception {
if(mediaPlayer.getStatus().equals(MediaPlayer.Status.PAUSED))
{
isPlaying = true;
dash.musicPanePlayPauseButtonImageView.setImage(dash.pauseIcon);
mediaPlayer.play();
}
else if(mediaPlayer.getStatus().equals(MediaPlayer.Status.PLAYING))
{
isPlaying = false;
dash.musicPanePlayPauseButtonImageView.setImage(dash.playIcon);
mediaPlayer.pause();
}
return null;
}
}).start();
}
public void start(String url,boolean popup,int width,int height){
this.url = url;
this.popup = popup;
//MediaView设置
media = new Media(url);
mediaPlayer = new MediaPlayer(media);
mediaView.setMediaPlayer(mediaPlayer);
//设置播放器,在媒体资源加载完毕后,获取相应的数据,设置组件自适应布局
setMediaPlayer(width,height);
//设置各组件动作事件
setMediaViewOnClick();
setPlayButton();
setStopButton();
setVolumeButton();
setVolumeSD();
setProcessSlider();
setMaximizeButton();
}
private void setMediaViewOnClick(){
mediaView.setOnMouseClicked(event -> {
if(media == null)
return;
MediaPlayer.Status status = mediaPlayer.getStatus();
if(status == MediaPlayer.Status.UNKNOWN || status == MediaPlayer.Status.HALTED ){
return;
}
//当资源处于暂停或停止状态时
if(status == MediaPlayer.Status.PAUSED || status == MediaPlayer.Status.READY || status == MediaPlayer.Status.STOPPED){
//当资源播放结束时,重绕资源
if(atEndOfMedia){
mediaPlayer.seek(mediaPlayer.getStartTime());
atEndOfMedia = false;
}
mediaPlayer.play();
setIcon(playBT,pauseIcon,25);
}else{ //当资源处于播放状态时
mediaPlayer.pause();
setIcon(playBT,playIcon,25);
}
});
}
private void setPlayButton(){
playBT.setOnAction((ActionEvent e)->{
if(media == null)
return;
MediaPlayer.Status status = mediaPlayer.getStatus();
if(status == MediaPlayer.Status.UNKNOWN || status == MediaPlayer.Status.HALTED ){
return;
}
//当资源处于暂停或停止状态时
if(status == MediaPlayer.Status.PAUSED || status == MediaPlayer.Status.READY || status == MediaPlayer.Status.STOPPED){
//当资源播放结束时,重绕资源
if(atEndOfMedia){
mediaPlayer.seek(mediaPlayer.getStartTime());
atEndOfMedia = false;
}
mediaPlayer.play();
setIcon(playBT,pauseIcon,25);
}else{ //当资源处于播放状态时
mediaPlayer.pause();
setIcon(playBT,playIcon,25);
}
});
}
void previous_Mode(int index,JSlider bands[],MediaPlayer mediaPlayer ,JLabel name)
{
index=(index<0?17:index);
name.setText(this.name[index]);
double previous_val,next_val;
for(int i=0;i<10;i++)
{
previous_val=mediaPlayer.getAudioEqualizer().getBands().get(i).MAX_GAIN*2;
mediaPlayer.getAudioEqualizer().getBands().get(i).setGain(Presets[index][i]);
next_val=mediaPlayer.getAudioEqualizer().getBands().get(i).getGain();
bands[i].setValue((int)(Math.abs(next_val/previous_val)*100));
}
}
public void newUserNotification(Message msg) {
Platform.runLater(() -> {
Image profileImg = new Image(getClass().getClassLoader().getResource("images/" + msg.getPicture().toLowerCase() +".png").toString(),50,50,false,false);
TrayNotification tray = new TrayNotification();
tray.setTitle("A new user has joined!");
tray.setMessage(msg.getName() + " has joined the JavaFX Chatroom!");
tray.setRectangleFill(Paint.valueOf("#2C3E50"));
tray.setAnimationType(AnimationType.POPUP);
tray.setImage(profileImg);
tray.showAndDismiss(Duration.seconds(5));
try {
Media hit = new Media(getClass().getClassLoader().getResource("sounds/notification.wav").toString());
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.play();
} catch (Exception e) {
e.printStackTrace();
}
});
}
private void create(final String file) {
final File soundFile = new File(file);
if (!soundFile.exists()) {
System.err.println("Sound File \"" + file + "\" not found!");
return;
}
String[] strings = file.split("/");
this.soundFile = strings[strings.length - 1];
new Thread() {
public void run() {
try {
sound = new MediaPlayer(new Media(soundFile.toURI().toString()));
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
void initMediaPlayer() {
MediaPlayer mediaPlayer = new MediaPlayer(new Media(MEDIA_URL));
mediaPlayer.setAutoPlay(true);
PlayerPane playerPane = new PlayerPane(mediaPlayer);
MediaSimplPane m=new MediaSimplPane();
m.setUrl(MEDIA_URL);
m.play();
box.getChildren().add(playerPane);
m.setStyle("-fx-background-color:rgba(230, 230, 230, 1)");
rootPane.setCenter(m);
}
private void startUpdating()
{
updaterThread = new Thread(new Task<Void>() {
@Override
protected Void call(){
try
{
while(isActive)
{
if(mediaPlayer.getStatus().equals(MediaPlayer.Status.PLAYING))
{
double currSec = mediaPlayer.getCurrentTime().toSeconds();
String currentSimpleTimeStamp = dash.getSecondsToSimpleString(currSec);
Platform.runLater(()->dash.nowDurLabel.setText(currentSimpleTimeStamp));
double currentProgress = (currSec/totalCurr)*100;
if(!dash.songSeek.isValueChanging())
{
dash.songSeek.setValue(currentProgress);
//dash.refreshSlider(dash.songSeek);
currentP = currentProgress;
}
}
Thread.sleep(500);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
});
updaterThread.start();
}
private Game() {
backgroundMusic = new MediaPlayer(resouceManager.getMedia("background"));
backgroundMusic.setVolume(0.5);
backgroundMusic.setAutoPlay(true);
backgroundMusic.setCycleCount(MediaPlayer.INDEFINITE);
buttonOverMusic = new MediaPlayer(resouceManager.getMedia("button_over"));
buttonClickMusic = new MediaPlayer(resouceManager.getMedia("button_click"));
hintMusic = new MediaPlayer(resouceManager.getMedia("hint"));
missMusic = new MediaPlayer(resouceManager.getMedia("error2"));
}
public static MediaPlayer play(String address, double volumn, int cycle) {
MediaPlayer mp = new MediaPlayer(new Media(address));
mp.setVolume(volumn);
mp.setCycleCount(cycle);
mp.setAutoPlay(true);
return mp;
}
@FXML
private void play(){
updateValues();
MediaPlayer.Status status = mediaPlayer.getStatus();
if (status == MediaPlayer.Status.UNKNOWN
|| status == MediaPlayer.Status.HALTED)
{
// don't do anything in these states
return;
}
if (status == MediaPlayer.Status.PAUSED
|| status == MediaPlayer.Status.READY
|| status == MediaPlayer.Status.STOPPED)
{
// rewind the movie if we're sitting at the end
if (atEndOfMedia) {
mediaPlayer.seek(mediaPlayer.getStartTime());
atEndOfMedia = false;
icon.setGlyphName("PLAY");
// playButton.setGraphic(imageViewPlay);
//playButton.setText(">");
updateValues();
}
mediaPlayer.play();
icon.setGlyphName("PAUSE");
// playButton.setGraphic(imageViewPause);
//playButton.setText("||");
}
else {
mediaPlayer.pause();
}
}
public void start12(Stage primaryStage) {
Text txt = new Text("What a beautiful movie!");
File f = new File("src/main/resources/sea.mp4");
Media m = new Media(f.toURI().toString());
MediaPlayer mp = new MediaPlayer(m);
MediaView mv = new MediaView(mp);
//mv.autosize();
//mv.preserveRatioProperty();
//mv.setFitHeight();
//mv.setFitWidth();
//mv.fitWidthProperty();
//mv.fitHeightProperty()
VBox vb = new VBox(txt, mv);
vb.setSpacing(20);
vb.setAlignment(Pos.CENTER);
vb.setPadding(new Insets(10, 10, 10, 10));
Scene scene = new Scene(vb, 650, 400);
primaryStage.setScene(scene);
primaryStage.setTitle("JavaFX with embedded media player");
primaryStage.onCloseRequestProperty()
.setValue(e -> System.out.println("Bye! See you later!"));
primaryStage.show();
mp.play();
}
public void start13(Stage primaryStage) {
Text txt1 = new Text("What a beautiful movie and sound!");
Text txt2 = new Text("If you don't hear music, turn up the volume.");
File fs = new File("src/main/resources/jb.mp3");
Media ms = new Media(fs.toURI().toString());
MediaPlayer mps = new MediaPlayer(ms);
MediaView mvs = new MediaView(mps);
File fv = new File("src/main/resources/sea.mp4");
Media mv = new Media(fv.toURI().toString());
MediaPlayer mpv = new MediaPlayer(mv);
MediaView mvv = new MediaView(mpv);
VBox vb = new VBox(txt1, txt2, mvs, mvv);
vb.setSpacing(20);
vb.setAlignment(Pos.CENTER);
vb.setPadding(new Insets(10, 10, 10, 10));
Scene scene = new Scene(vb, 650, 500);
primaryStage.setScene(scene);
primaryStage.setTitle("JavaFX with embedded media player");
primaryStage.onCloseRequestProperty()
.setValue(e -> System.out.println("Bye! See you later!"));
primaryStage.show();
mpv.play();
mps.play();
}
public StreamingMediaPlayer() {
mediaPlayer = new MediaPlayer(new Media(MEDIA_URL));
mediaPlayer.setAutoPlay(true);
PlayerPane playerPane = new PlayerPane(mediaPlayer);
playerPane.setMinSize(480, 360);
playerPane.setPrefSize(480, 360);
playerPane.setMaxSize(480, 360);
getStylesheets().add("ensemble/samples/media/OverlayMediaPlayer.css");
getChildren().add(playerPane);
}
public OverlayMediaPlayer() {
mediaPlayer = new MediaPlayer(new Media(MEDIA_URL));
mediaPlayer.setAutoPlay(true);
PlayerPane playerPane = new PlayerPane(mediaPlayer);
playerPane.setMinSize(mediaWidth, mediaHeight);
playerPane.setPrefSize(mediaWidth, mediaHeight);
playerPane.setMaxSize(mediaWidth, mediaHeight);
getStylesheets().add("ensemble/samples/media/OverlayMediaPlayer.css");
getChildren().add(playerPane);
}
private static Group createViewer(final MediaPlayer player, final double scale, boolean blur) {
Group mediaGroup = new Group();
final MediaView mediaView = new MediaView(player);
if (blur) {
BoxBlur bb = new BoxBlur();
bb.setWidth(4);
bb.setHeight(4);
bb.setIterations(1);
mediaView.setEffect(bb);
}
double width = player.getMedia().getWidth();
double height = player.getMedia().getHeight();
mediaView.setFitWidth(width);
mediaView.setTranslateX(-width/2.0);
mediaView.setScaleX(-scale);
mediaView.setFitHeight(height);
mediaView.setTranslateY(-height/2.0);
mediaView.setScaleY(scale);
mediaView.setDepthTest(DepthTest.ENABLE);
mediaGroup.getChildren().add(mediaView);
return mediaGroup;
}
public AdvancedMedia() {
mediaPlayer = new MediaPlayer(new Media(MEDIA_URL));
mediaPlayer.setAutoPlay(true);
mediaControl = new AdvancedMedia.MediaControl(mediaPlayer);
mediaControl.setMinSize(480,280);
mediaControl.setPrefSize(480,280);
mediaControl.setMaxSize(480,280);
getChildren().add(mediaControl);
}
public StreamingMediaPlayer() {
mediaPlayer = new MediaPlayer(new Media(MEDIA_URL));
mediaPlayer.setAutoPlay(true);
PlayerPane playerPane = new PlayerPane(mediaPlayer);
playerPane.setMinSize(480, 360);
playerPane.setPrefSize(480, 360);
playerPane.setMaxSize(480, 360);
getStylesheets().add("ensemble/samples/media/OverlayMediaPlayer.css");
getChildren().add(playerPane);
}
public OverlayMediaPlayer() {
mediaPlayer = new MediaPlayer(new Media(MEDIA_URL));
mediaPlayer.setAutoPlay(true);
PlayerPane playerPane = new PlayerPane(mediaPlayer);
playerPane.setMinSize(mediaWidth, mediaHeight);
playerPane.setPrefSize(mediaWidth, mediaHeight);
playerPane.setMaxSize(mediaWidth, mediaHeight);
getStylesheets().add("ensemble/samples/media/OverlayMediaPlayer.css");
getChildren().add(playerPane);
}
private static Group createViewer(final MediaPlayer player, final double scale, boolean blur) {
Group mediaGroup = new Group();
final MediaView mediaView = new MediaView(player);
if (blur) {
BoxBlur bb = new BoxBlur();
bb.setWidth(4);
bb.setHeight(4);
bb.setIterations(1);
mediaView.setEffect(bb);
}
double width = player.getMedia().getWidth();
double height = player.getMedia().getHeight();
mediaView.setFitWidth(width);
mediaView.setTranslateX(-width/2.0);
mediaView.setScaleX(-scale);
mediaView.setFitHeight(height);
mediaView.setTranslateY(-height/2.0);
mediaView.setScaleY(scale);
mediaView.setDepthTest(DepthTest.ENABLE);
mediaGroup.getChildren().add(mediaView);
return mediaGroup;
}
public AdvancedMedia() {
mediaPlayer = new MediaPlayer(new Media(MEDIA_URL));
mediaPlayer.setAutoPlay(true);
mediaControl = new AdvancedMedia.MediaControl(mediaPlayer);
mediaControl.setMinSize(480,280);
mediaControl.setPrefSize(480,280);
mediaControl.setMaxSize(480,280);
getChildren().add(mediaControl);
}
private void init(Stage primaryStage) {
Group root = new Group();
primaryStage.setScene(new Scene(root));
mediaPlayer = new MediaPlayer(new Media(MEDIA_URL));
mediaPlayer.setAutoPlay(true);
MediaControl mediaControl = new MediaControl(mediaPlayer);
mediaControl.setMinSize(480,280);
mediaControl.setPrefSize(480,280);
mediaControl.setMaxSize(480,280);
root.getChildren().add(mediaControl);
}
AudioFuture(final MediaPlayer player)
{
this.player = player;
// Player by default just stays in "PLAYING" state
player.setOnEndOfMedia(() -> player.stop());
player.play();
logger.log(Level.INFO, "Playing " + this);
}
@Override
public String toString()
{
final MediaPlayer copy = player;
if (copy == null)
return "Disposed audio player";
return "Audio player for " + player.getMedia().getSource() + " (" + player.getStatus() + ")";
}
@Override
public void start(final Stage stage)
{
stage.setTitle("Audio Demo");
stage.show();
// Windows and Mac OS X support WAV and MP3
// Linux: WAV hangs, MP3 results in MediaException for unsupported format
final File file = new File("../model/src/main/resources/examples/timer/timer.mp3");
final Media audio = new Media(file.toURI().toString());
player = new MediaPlayer(audio);
player.setOnError(() -> System.out.println("Error!"));
player.setOnStopped(() ->
{
System.out.println("Stopped.");
player.dispose();
stage.close();
});
player.setOnEndOfMedia( () ->
{
System.out.println("Done.");
player.stop();
});
// Wasn't necessary with JDK9, but is with 11 on Mac OS X
player.setStartTime(Duration.seconds(0));
player.play();
System.out.println("Playing...");
}
public void destroy(){
if(mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING){
mediaPlayer.stop();
}
mediaPlayer.dispose(); //释放meidaPlayer的Media资源
media = null;
mediaPlayer = null;
System.gc(); //通知JVM垃圾回收器
}
private void toggleMediaPlayer() {
MediaPlayer.Status status = mediaPlayer.getStatus();
if (status == MediaPlayer.Status.HALTED || status == MediaPlayer.Status.UNKNOWN) {
return;
}
if (status == MediaPlayer.Status.READY
|| status == MediaPlayer.Status.PAUSED
|| status == MediaPlayer.Status.STOPPED) {
mediaPlayer.play();
} else {
mediaPlayer.pause();
}
}
public void setLoop(boolean loop){
if(loop){
mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
}else{
mediaPlayer.setCycleCount(1);
}
}