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

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

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

Solutions Collecting From Web of "Как получить частоту дискретизации и частоту музыкального файла (MP3) в Android?"

Вы можете аппроксимировать его, разделив размер файла на длину аудио в секундах, например, из произвольной 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 

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

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

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

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