私の質問は簡単です。 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