Как получить частоту дискретизации и частоту музыкального файла (MP3) в Android?
Я разрабатываю аудиоплеер в android. Поэтому я хочу добавить информацию о игровой песне, то есть имя исполнителя, продолжительность, бит и частоту дискретизации.
Я могу получить имя исполнителя и продолжительность музыкального файла, используя MediaStore.Audio.Media library
. Но я не могу получить бит и частоту дискретизации одного и того же файла. Итак, как я могу получить то же самое?
Как я знаю, это можно сделать, используя собственную библиотеку. Но не знаете, как? Так кто-нибудь может мне помочь в этом?
Ответы
Ответ 1
Вы можете аппроксимировать его, разделив размер файла на длину аудио в секундах, например, из произвольной AAC-кодированной M4A в моей библиотеке:
File Size: 10.3MB (87013064 bits)
Length: 5:16 (316 Seconds)
Which gives: 87013064 bits / 316 seconds = 273426.147 bits/sec or ~273kbps
Actual Bitrate: 259kbps
Поскольку большинство аудиофайлов имеют известный набор допустимых уровней битрейта, вы можете использовать это, чтобы перевести скорость бит на соответствующий уровень для отображения.
Ответ 2
MediaMetadataRetriever предлагает METADATA_KEY_DURATION
, который вы можете разделить с размером файла для битрейта.
Ответ 3
Я знаю, что это было разрешено, но я получил гораздо лучший способ получить точный ответ
MediaExtractor mex = new MediaExtractor();
try {
mex.setDataSource(path);// the adresss location of the sound on sdcard.
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MediaFormat mf = mex.getTrackFormat(0);
int bitRate = mf.getInteger(MediaFormat.KEY_BIT_RATE);
int sampleRate = mf.getInteger(MediaFormat.KEY_SAMPLE_RATE);