2014-09-02 95 views

回答

0

你可以試試這個代碼...

檔案文件=新的文件( 「FILENAME.MP3」); AudioFileFormat baseFileFormat = new MpegAudioFileReader()。getAudioFileFormat(file); Map properties = baseFileFormat.properties(); Long duration =(Long)properties.get(「duration」);

+1

這是MP3,AAC沒有。 MpegAudioFileReader專爲MP3 – user3489820 2014-09-02 11:47:30

+0

JAAD是一個開源的AAC ....谷歌this.Maybe這可以幫助。 – Aditya 2014-09-02 11:53:57

+0

目前,我堅持與JAAD。 問題是,我試圖解析的mp4文件最後有示例表。這意味着,我需要RandomAccessFile來解析它,但我只有ByteArrayInputStream。 所以... 一個解決方案是重新創建文件系統上的文件(這對服務器不利)...雖然我不喜歡這個解決方案 – user3489820 2014-09-02 11:54:17

1

這裏是我發現(使用mp4parser on github)解決方案:

public static long getAudioLength(byte[] content) throws Exception { 
    IsoFile isoFile = new IsoFile(new MemoryDataSourceImpl(content)); 
    double lengthInSeconds = (double)isoFile.getMovieBox().getMovieHeaderBox().getDuration()/isoFile.getMovieBox().getMovieHeaderBox().getTimescale(); 
    return (long)lengthInSeconds; 
}