내 질문은 간단합니다. mp3 파일에서 PCM 데이터를 얻으려면 어떻게해야합니까?안드로이드의 mp3 파일에서 pcm 데이터를 얻으십시오
이제 노래에서 PCM 바이트를 얻는 방법을 찾았습니다. MediaPlayer
에 의해 mp3 파일을로드하고 재생했으며, 변경된 파일을 Visualizer.OnDataCaptureListener
(으)로 시도했습니다. 이 인터페이스의 메서드는 byte[] bytes
매개 변수를 전달합니다. 이 모든 바이트를 1 바이트 배열에 저장하려고 시도한 다음이 배열을 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에서 PCM 데이터를 가져 오는 일반적인 방법이 있다면 말할 수 있습니까?
이 문제와 관련된 해결책을 공유 할 수 있습니까? – Karthik