it-swarm-vi.tech

Cách phát âm thanh với JavaFX

Tôi mới bắt đầu làm việc với JavaFX. Tôi biết làm thế nào những điều cơ bản của nó hoạt động. Tôi đã cố gắng sử dụng các phương tiện truyền thông và các lớp mediaplayer để phát một âm thanh, được gọi là "sound.mp3". Tôi đang lập trình trong Eclipse và tôi có tệp âm thanh trong thư mục src, cùng thư mục với "(gói mặc định)". Đây là mã của tôi:

import javafx.scene.media.*;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");

        String ssound = "sound.mp3";
        Media sound = new Media(ssound);
        MediaPlayer mediaPlayer = new MediaPlayer(sound);
        mediaPlayer.play();

        StackPane root = new StackPane();
        primaryStage.setScene(new Scene(root, 800, 450));
        primaryStage.show();
    }
}

Xin vui lòng cho tôi biết những gì tôi đang làm sai.

Đây là thông báo lỗi từ bảng điều khiển:

Exception in Application start method
Exception in thread "main" Java.lang.RuntimeException: Exception in Application start method
    at com.Sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
    at com.Sun.javafx.application.LauncherImpl.access$000(Unknown Source)
    at com.Sun.javafx.application.LauncherImpl$1.run(Unknown Source)
    at Java.lang.Thread.run(Thread.Java:724) Caused by: Java.lang.IllegalArgumentException: uri.getScheme() == null!
    at com.Sun.media.jfxmedia.locator.Locator.<init>(Unknown Source)
    at javafx.scene.media.Media.<init>(Unknown Source)
    at Main.start(Main.Java:16)
    at com.Sun.javafx.application.LauncherImpl$5.run(Unknown Source)
    at com.Sun.javafx.application.PlatformImpl$5.run(Unknown Source)
    at com.Sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
    at com.Sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
    at Java.security.AccessController.doPrivileged(Native Method)
    at com.Sun.javafx.application.PlatformImpl$4.run(Unknown Source)
    at com.Sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
    at com.Sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.Sun.glass.ui.win.WinApplication.access$100(Unknown Source)
    at com.Sun.glass.ui.win.WinApplication$3$1.run(Unknown Source) ... 1 more
8
user3010445

Chỉ là một bản tổng hợp làm việc về những gì các câu trả lời khác nói:

String musicFile = "StayTheNight.mp3";     // For example

Media sound = new Media(new File(musicFile).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.play();

Thêm tệp nhạc trong thư mục Dự án của bạn, cùng với binsrc.

Bất kỳ IDE cũng sẽ nhắc bạn thêm những thứ này:

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import Java.io.File;

Hoạt động như một lá bùa. 

12
anaik
mApplause = new AudioClip(this.getClass().getResource("/sounds/applause.mp3").toExternalForm());

Vì vậy, đây là những gì tôi đã sử dụng và nó hoạt động, tôi biết nó có thể không còn quan trọng nữa nhưng vì nó đã có trong tìm kiếm google của tôi trong khi tôi đang tìm kiếm một cái gì đó khác tôi nghĩ tôi sẽ trả lời nó. :) 

Có nghĩa là biểu mẫu toExternal nó nói để tạo thành một dạng url của tệp đường dẫn.

4
Enes

Đây là những gì tôi hiện đang sử dụng:

Media hit = new Media(new File(soundFilename).toURI().toString());
2
KisnardOnline

nó phụ thuộc vào nơi tập tin âm thanh. (ngoài ra, nó chỉ chấp nhận .wav) [.___

new Media("file:sound.wav")

nếu nó không ổn thì bạn đang làm gì 

0
Bonfra04