Мой вопрос прост. Как получить данные PCM из mp3-файла?получить pcm данные из mp3-файла в android
Теперь я нашел только способ получить байты PCM из песни, загрузил и воспроизвел mp3 MediaPlayer
и попытался прослушать изменение волн на Visualizer.OnDataCaptureListener
. Этот метод интерфейса передает параметр byte[] bytes
. Я попытался сохранить все эти байты в один байтовый массив, а затем передал этот массив методу AudioTrack.write
и воспроизвел его методом AudioTrack.play
. Что-то вроде этого:
mVisualizer.setDataCaptureListener(new Visualizer.OnDataCaptureListener() {
public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
int samplingRate) {
// allBytes += bytes
}
public void onFftDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) {
}
, Visualizer.getMaxCaptureRate()/2, true, false);
}
, а затем
AudioTrack tr = new AudioTrack(AudioManager.STREAM_MUSIC, 22050,
AudioFormat.CHANNEL_OUT_STEREO,
AudioFormat.ENCODING_PCM_16BIT,
allBytes.length, AudioTrack.MODE_STREAM);
tr.play();
tr.write(barr, 0, allBytes.length);
Но, к сожалению, я не получил ожидаемых результатов. Звук играет, но в звуке много шума, качество настолько плохое, что вы не можете определить, что там поет.
Но это было своего рода «метод взлома» для получения данных ИКМ. Можете ли вы сказать, есть ли нормальный метод получения данных PCM из моего mp3?
Вы можете поделиться решением проблемы, которую обнаружили для этой проблемы. – Karthik