[英]Does MediaPlayer only play mp3 files that have bit rate mode: variable?
我正在構建一個 mp3 播放器應用程序,但某些 mp3 文件無法播放。 每次播放時都是相同的 mp3 文件。 沒有錯誤被拋出,當我點擊播放它們時,一切都像音頻即將播放一樣,但沒有音頻出現,就像歌曲凍結一樣。
使用 MediaInfo 工具(來自 mac 應用程序商店),我比較了 2 個有效文件和 2 個無效文件,並截取了結果截圖。 (紅色表示字段值不同,黑色表示相同)
左邊的2個是有效的,右邊的2個是無效的。 我能看到的唯一區別是導致問題的歌曲具有比特率模式:恆定。 這可能是導致問題的原因嗎? 如果是這樣,有沒有辦法使用java找到音頻文件的比特率模式? 以及如何將其從常量更改為變量?
雖然我認為沒有必要,因為我所有的其他歌曲都有效,但我會在下面發布一些代碼。
String songPath = "";
Media mediaFile = MediaHandler.strToMedia(songPath);
MediaHandler.newSong(mediaFile);
MediaHandler.playSong();
MediaHandler 類:
public class MediaHandler {
private static MediaPlayer player;
private static Media media;
public static MediaPlayer getPlayer(){
return player;
}
public static Media strToMedia(String songPath) {
File song = new File(songPath);
return new Media(song.toURI().toString());
}
public static void newSong(Media mediaFile) {
if (player != null){
player.stop();
}
MediaHandler.media = mediaFile;
newPlayer();
}
private static void newPlayer() {
player = new MediaPlayer(media);
}
public static void playSong() {
player.play();
}
}
有沒有辦法使用java找到音頻文件的比特率模式?
您可以使用MediaInfo圖形界面來發現問題,也可以使用其命令行界面(從 Java 調用命令行)或其庫 (DyLib) 界面(從 Java 調用 API)。
從MediaInfo macOS 版本獲取命令行接口或 DyLib 接口,然后調用命令行或獲取 Java 和 MediaInfo 之間的“膠水” + 實現對 MediaInfo 的 Java 調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.