我有一首歌曲,包括介紹(I),一部分是環(L)和結尾(E)。我不希望結局被播放,即音頻文件歌曲= I + L + E,音頻播放= I + L + L + ...解碼音頻和播放介紹然後循環部分
我成功地通過將前奏和循環分成兩個文件,但我想在客戶端「即時」執行該操作。
我該怎麼做?
我有一首歌曲,包括介紹(I),一部分是環(L)和結尾(E)。我不希望結局被播放,即音頻文件歌曲= I + L + E,音頻播放= I + L + L + ...解碼音頻和播放介紹然後循環部分
我成功地通過將前奏和循環分成兩個文件,但我想在客戶端「即時」執行該操作。
我該怎麼做?
Web Audio API爲此準確地提供了AudioBufferSourceNode.loopStart
和AudioBufferSourceNode.loopEnd
(source)。你也必須記得設置AudioBufferSourceNode.loop = true
。
如果您想使用Web Audio播放文件(例如,使用decodeAudioData()解碼爲AudioBuffer,然後使用BufferSourceNodes播放聲音),那麼通過將兩個BufferSource節點指向具有不同偏移量的緩衝區很容易,並循環第二個。
網絡音頻使用雙打(而不是浮動) - 所以語句「這比浮點秒精確得多」通常不是真的(雙打大約有15個小數位的精度)。 (當然,取決於絕對值。)它足夠準確地處理採樣精度(即不會在值之間產生干擾)。不過,如果你擔心的是,它們之間的交叉淡入淡出。
如果你的目標實際上只是產生一個帶有該部分的音頻文件,這有點不同;但它聽起來像你想要回放。