Определение длительности и формата аудиофайла - PullRequest
13 голосов
/ 26 января 2011

Учитывая путь (на SD-карте) к аудиофайлу, каков наилучший способ определения длины звука в миллисекундах и формата файла (или типа мультимедиа в Интернете)?

(Для продолжительности можно использовать MediaPlayer * * * * * * метод, но это кажется слишком медленным / неуклюжим.)

Ответы [ 3 ]

12 голосов
/ 30 января 2011

Для длины аудиофайла:

File yourFile;
MediaPlayer mp = new MediaPlayer();
FileInputStream fs;
FileDescriptor fd;
fs = new FileInputStream(yourFile);
fd = fs.getFD();
mp.setDataSource(fd);
mp.prepare(); 
int length = mp.getDuration();
mp.release();

Проверьте это для MimeType: https://stackoverflow.com/a/8591230/3937699

5 голосов
/ 30 июля 2013

Я думаю, что самый простой способ:

MediaPlayer mp = MediaPlayer.create(this, Uri.parse(uriOfFile);
int duration = mp.getDuration();
mp.release();
/*convert millis to appropriate time*/
return String.format("%d min, %d sec", 
            TimeUnit.MILLISECONDS.toMinutes(duration),
            TimeUnit.MILLISECONDS.toSeconds(duration) - 
            TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration))
        );
1 голос
/ 26 января 2011

Просто попробую ответить на ваш вопрос, но вы, вероятно, сможете определить тип носителя по расширению файла - что, я думаю, MediaFile может вам помочь. Что касается продолжительности, я считаю, что метод getDuration () на самом деле является собственным вызовом, поэтому я не знаю, сможете ли вы сделать это намного быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...