Как получить аудиоданные из MP3?
Я работаю над приложением, которое должно обрабатывать аудиофайлы. При использовании mp3-файлов я не уверен, как обрабатывать данные (данные, которые меня интересуют аудио байт, которые представляют то, что мы слышим).
Если я использую wav-файл, я знаю, что у меня есть заголовок 44 байта, а затем данные. Когда дело доходит до mp3, я читал, что они состоят из кадров, каждый кадр содержит заголовок и аудиоданные. Можно ли получить все аудиоданные из mp3-файла?
Я использую java (я добавил MP3SPI, Jlayer и Tritonus), и я могу получить байты из файла, но я не уверен в том, что представляют собой эти байты или как с ними обращаться.
3 ответов
File file = new File(filename);
AudioInputStream in= AudioSystem.getAudioInputStream(file);
AudioInputStream din = null;
AudioFormat baseFormat = in.getFormat();
AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
baseFormat.getSampleRate(),
16,
baseFormat.getChannels(),
baseFormat.getChannels() * 2,
baseFormat.getSampleRate(),
false);
din = AudioSystem.getAudioInputStream(decodedFormat, in);
затем вы просто читаете данные из din
- это будут "сырые" данные согласно decodedFormat
. (См. документы на AudioFormat
для получения дополнительной информации.)
(обратите внимание, что этот пример кода не закрывает поток или что - то подобное-используйте соответствующие блоки try/finally как обычно.)
данные, которые вы хотите, являются фактическими образцами, в то время как MP3 представляет данные по-разному. Итак, как и все остальные, вам нужна библиотека для декодирования данных MP3 в фактические образцы для вашей цели.
Как упоминалось в других ответах, вам нужен декодер для декодирования MP3 в обычные звуковые образцы.
одним из популярных вариантов было бы JavaLayer (LGPL).