Как получить частоту дискретизации и частоту музыкального файла (MP3) в Android? - PullRequest
12 голосов
/ 28 февраля 2011

Я занимаюсь разработкой аудиоплеера в Android. Поэтому я хочу добавить детали воспроизводимой песни, например, имя исполнителя, длительность, битрейт и частоту дискретизации. Я могу получить имя исполнителя и продолжительность музыкального файла, используя MediaStore.Audio.Media library. Но я не могу получить битрейт и частоту дискретизации одного и того же файла. Так как я могу получить то же самое?

Как я знаю, это можно сделать с помощью нативной библиотеки. Но не знаете как? Так кто-нибудь может мне помочь в этом?

Ответы [ 3 ]

16 голосов
/ 04 марта 2011

Вы можете приблизить его, разделив размер файла на длину аудио в секундах, например, из произвольного M4A в кодировке AAC в моей библиотеке:

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

Поскольку большинство аудиофайлов имеют известныенабор допустимых уровней битрейта, вы можете использовать его, чтобы повысить битрейт до соответствующего уровня для отображения.

6 голосов
/ 23 декабря 2015

Я знаю, что это решено, но у меня есть намного лучший способ получить точный ответ

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);
4 голосов
/ 04 марта 2011

MediaMetadataRetriever предлагает METADATA_KEY_DURATION, которые можно разделить на размер файла для битрейта.

...