━━━━ ◇ ━━━━
Java/JavaFx

JavaFX 31. Media Player in JavaFX

내가 JavaFX에 입문하게 된 가장 큰 원인은 바로 Media Player 이다.


수업 커리큘럼에 JavaFX 는 없었다. 하지만 Melon project 를 진행하면서 Java에서 제공하는 Audio Class 가 사용하기에 불편함이 많다는 것을 알게되었다. 그래서 선생님이 추천해 주신 JavaFX 를 독학으로 익히게 되었던 것이다.


그때 선생님이 적어주신 내용을 필기해 두었는데, 아래와 같다.


<Java 에서 음악을 재생하는 다양한 방법>


1. JMF를 이용하여 만들었다.

   장점 : 윈도우에서 엄청 쉽다. 프로그램 쓰듯 땡겨쓰면 된다.

   단점 : 리눅스나 IOS에서는 또 그에 맞는 JMF가 설치되어 있어야 하며 실행 방식이 달라 코딩이

          조금 달라진다.

 

2. JLayer를 이용해서 실행

   장점 : 개인이 만든 라이브러리 , 자체라이브러리 방식으로 실행가능

   단점 : 개발이 더 이상 안되며 안정성을 보장하지 않는다.

 

3. Mp3agic을 이용해서 실행

  장점 : 현재 순수 java로 이루어진 방식으로는 최신으로 개발되었다.

  단점 : 길게 가면 개인프로젝트로 없어질 듯

 

4. JavaFX media player 방식

  장점 : 현재 자바방식이고 앞으로도 계속 업그레이드

  단점 : javaFX를 학습해야한다. 


아무튼 이번에 포스팅할 Media Player 때문에 JavaFX 를 배우게 되었다는 것을 말하고 싶었다.


1. Main.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package application;
    
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
 
 
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("/application/Main.fxml"));
            Scene scene = new Scene(root);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}
 
cs


2. Main.fxml


1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
 
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.media.MediaView?>
 
 
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MainController">
   <center>
      <MediaView fx:id="mv" fitHeight="200.0" fitWidth="200.0" BorderPane.alignment="CENTER" />
   </center>
</BorderPane>
 
cs


3. MainController.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package application;
 
import java.io.File;
import java.net.URL;
import java.util.ResourceBundle;
 
import javafx.beans.binding.Bindings;
import javafx.beans.property.DoubleProperty;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
 
public class MainController implements Initializable{
 
    @FXML private MediaView mv;
    
    MediaPlayer mp;
    Media me;
    
    @Override
    public void initialize(URL location, ResourceBundle resources) {
        String path = new File("Creating Media Player in JavaFX/media/Test.mp4").getAbsolutePath();
        
        me = new Media(new File(path).toURI().toString());
        mp = new MediaPlayer(me);
        mv.setMediaPlayer(mp);
        mp.setAutoPlay(true);
        DoubleProperty width = mv.fitWidthProperty();
        DoubleProperty height = mv.fitHeightProperty();
        width.bind(Bindings.selectDouble(mv.sceneProperty(), "width"));
        height.bind(Bindings.selectDouble(mv.sceneProperty(), "height"));
        
    }
 
}
 
cs





COMMENT