我正在使用AudioInputStream
將字節傳送到SourceDataLine
以播放PCM文件。我想讓用戶能夠將滑塊移動到文件中的某個點。跳轉到使用Java Sound API的音頻文件中的位置
問題我有:
markSupported()
回報false
我AudioInputStream
。所以我 不能使用我最初的方法調用reset()
然後skip()
(其中 我已經認爲是一種醜陋的...)- 我真的不想推倒
InputStrea
米,並創建一個新的剛跳到在我目前的商標之前的位置。 SourceLineData.getLongFramePosition()
似乎並不十分可靠......我知道它有一個緩衝區,但即使考慮爲byte
的左在緩衝區中,我不理解的行爲
我已經考慮使用一個Memory-Mapped File
將字節提供給線路,以便我可以隨意跳到任何地方,但是如果我不需要,我不想增加函數的複雜性。有沒有一種好方法可以做到這一點,我錯過了?任何人都可以解釋getLongFramePosition()
返回的幀號實際上是什麼意思?是通過揚聲器傳遞的幀數(看起來不是)?
爲什麼不使用'Clip'? –
,因爲我正在播放的文件可能是未指定的長度。我的理解是剪輯適用於非常短的聲音。 – sethro
'未指定'或'大'?區別非常重要。例如。 [BigClip](http://stackoverflow.com/questions/5667454/playing-audio-file-in-java-application/5668510#5668510)可以處理**大**剪輯。 (是的,你對'Clip'的理解是正確的。) –