簡體   English   中英

MediaPlayer 是否只播放具有比特率模式的 mp3 文件:可變?

[英]Does MediaPlayer only play mp3 files that have bit rate mode: variable?

我正在構建一個 mp3 播放器應用程序,但某些 mp3 文件無法播放。 每次播放時都是相同的 mp3 文件。 沒有錯誤被拋出,當我點擊播放它們時,一切都像音頻即將播放一樣,但沒有音頻出現,就像歌曲凍結一樣。

使用 MediaInfo 工具(來自 mac 應用程序商店),我比較了 2 個有效文件和 2 個無效文件,並截取了結果截圖。 (紅色表示字段值不同,黑色表示相同)

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM