2017-04-07 45 views
0

我在很多论坛和YouTube教程中搜索了一段简单的代码来播放声音文件(.mp3),但是我发现的所有内容都不适用于我。如何在Java中播放声音文件

我总是得到它找不到该文件或其他错误的异常,但它总是以异常结束。

有什么我必须首先配置可能吗?

CNC中 我再次尝试下面的代码,以显示我得到了exeption:

Here is my code

加入JFXPanel我得到了exeption后:异常线程 “main” MediaException :MEDIA_UNAVAILABLE:D:\ bip.mp3(系统无法找到文件)// 和是的,我检查路径是否正确。

+0

这是我搜查的第一件事http://stackoverflow.com/questions/6045384/playing-mp3-and-wav-in-java –

+1

[在Java中播放.mp3和.wav?]的可能的副本(http://stackoverflow.com/questions/6045384/playing-mp3-and-wav-in-java) –

+0

[JavaFX:“Toolkit”在尝试通过MediaPlayer类播放mp3文件时未初始化](http://stackoverflow.com/questions/14025718/javafx-toolkit-not-initialized-when-trying-to-play-an-mp3-file-through- mediap) – phihag

回答

0

也许发布一个特定的错误可以解决您的问题,但无论如何,我认为this可以帮助你。而且我也实施了它,并为我完美工作。

这是我如何做它:

List<Media> mediaList = new ArrayList<>(); 
FileManager files = new FileManager(); 
files.loadMediaFiles(new File("your music directory goes here..")); 

files.getFiles().stream().forEach((media) -> { 
    mediaList.add(new Media(media)); 
}); 


MediaPlayer mediaPlayer = new MediaPlayer(playList.get(0)); 
MediaView mediaView = new MediaView(mediaPlayer); 

playPauseButton.setOnAction((ActionEvent event) -> { 
     if (mediaPlayer.getStatus() == Status.PAUSED || mediaPlayer.getStatus() == Status.READY || mediaPlayer.getStatus() == Status.STOPPED) { 
      mediaPlayer.play(); 
      playPauseButton.setGraphic(pause); 
     } else { 
      mediaPlayer.pause(); 
      playPauseButton.setGraphic(play); 
     } 
    }); 

您也可以结帐我app GitHub上。

2

为了避免初始化异常,你必须要么调用Application.launch()方法或者干脆实例新JFXPanel()类(即使它不用于任何东西)。这将启动JavaFxRuntime当应用程序启动

所以下面添加一行代码中的

final JFXPanel fxPanel = new JFXPanel(); 

导入以下包

import javafx.embed.swing.JFXPanel; 

现在你的代码看起来像这样

import java.io.File; 
import javafx.embed.swing.JFXPanel; 
import javafx.scene.media.Media; 
import javafx.scene.media.MediaPlayer; 

public class Test { 

public static void main(String args[]) { 

    final JFXPanel fxPanel = new JFXPanel(); 
    String bip = "D://bip.mp3"; //sound file path 
    Media hit = new Media(new File(bip).toURI().toString()); 
    MediaPlayer mediaPlayer = new MediaPlayer(hit); 
    mediaPlayer.play(); 

    } 
} 
+0

现在我得到了:主线程“异常”MediaException:MEDIA_UNAVAILABLE:D:\ Waves.mp3(系统找不到文件) – CRHS

+0

检查媒体文件名和路径,因为当我尝试通过将bip.mp3更改为bip1.mp3 (没有这样的文件)我得到了同样的错误,所以请检查文件名与适当的情况下。 –

+0

多数民众赞成在有线...我检查了5次,但仍然是相同的结果...我甚至选择相同的名称为我的文件,以确保:( – CRHS