我正在使用 a向 aAudioInputStream
提供字节来SourceDataLine
播放 PCM 文件。我想让用户能够移动滑块以跳转到文件中的某个点。
我遇到的问题:
markSupported()
返回false
我的AudioInputStream
. 所以我不能使用我最初的方法来打电话reset()
(skip()
我已经认为这有点难看......)- 我真的不想拆掉
InputStrea
m 并创建一个新的,只是为了跳到我当前标记之前的位置。 SourceLineData.getLongFramePosition()
似乎不是很可靠......我知道它有一个缓冲区,但即使考虑到byte
缓冲区中的 s ,我也不明白这种行为
我考虑过使用 aMemory-Mapped File
将字节馈送到行中,这样我就可以跳到任何我想要的地方,但是如果我不需要的话,我不想增加函数的复杂性。有没有我想念的好方法?也有人可以解释getLongFramePosition()
实际返回的帧号是什么意思吗?是通过扬声器的帧数(似乎不是)?