(解決策を期待して、以前の質問をより一般的にしようとしています。)
JLayer ライブラリと sample.mp3 ファイルを使用しています。ファイルの再生とデコードを同時に行いたいと考えています。
ただし、それらを同期させたい-曲の一部がデコードされている場合は、それも再生されます。再生される前に何もデコードされず、その逆も同様です (もちろん、適度な程度で)。
敬意を表して、曲を再生してデコードする方法を次に示します。
Player p = new Player(InputStream mp3stream);
p.play();
Decoder d = new Decoder();
BitStream bs = new Bitstream(InputStream mp3stream);
SampleBuffer s = (SampleBuffer) d.decodeFrame(bs.readFrame(), bs);
// ... for processing the SampleBuffer but irrelevant for the question
私は現在使用しています:
InputStream mp3stream = new FileInputStream("sample.mp3");
しかし、これは曲全体を一度に使用するため、同期できません。sample.mp3 を両方のプロセスで操作できるように分割する方法はありますか? 十分に小さなピースがあれば、両方のピースをプロセスに実行し、両方が完了するまで待ってから、次の小さなピースをつかんで、小さなピースがなくなるまで繰り返します。
注: 私は ByteArrayInputStream を使用しようとしましたが、成功しませんでした。