(我试图让我之前的问题更通用,以期获得解决方案。)
我正在使用 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 没有成功 - 但使用它时我的方法可能不正确。