2014-09-02 7 views

ответ

0

Вы можете попробовать этот код ...

файл File = новый файл ("filename.mp3"); AudioFileFormat baseFileFormat = new MpegAudioFileReader(). GetAudioFileFormat (файл); Свойства карты = baseFileFormat.properties(); Long duration = (Long) properties.get ("duration");

+1

Это MP3, AAC не. MpegAudioFileReader предназначен для MP3 – user3489820

+0

JAAD - это AAC с открытым исходным кодом .... google для этого. Возможно, это поможет. – Aditya

+0

На данный момент я застрял с JAAD. Проблема в том, что файл mp4, который я пытаюсь проанализировать, в конце концов имеет примеры таблиц. Это означает, что мне нужен RandomAccessFile для его анализа, но у меня есть ByteArrayInputStream. Итак ... Одним из решений является воссоздание файла в файловой системе (и это плохо для сервера) ... хотя мне не нравится это решение – user3489820

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; 
}