![](/img/trans.png)
[英]AudioContext, getUserMedia, and websockets audio streaming
[英]Streaming audio through WebSockets to Web Audio player
我有一個有點工作的系統
因此,如果我有 4 個音頻剪輯,則呼叫看起來像
AudioBufferSourceNode.start(0);
AudioBufferSourceNode.start(1);
AudioBufferSourceNode.start(2);
AudioBufferSourceNode.start(3);
我認為這可以完美地安排 4 秒的音頻,但我似乎面臨時鍾問題,也許是因為我希望音頻時鍾是完美的。 我已經使用增益節點來消除每個聲音片段之間的咔嗒聲(1 秒),但我立即或在很長一段時間后開始出現計時問題。 基本上,在最壞的情況下,我的音頻是這樣播放的
---------------------- ----------- ----------- -----------
| 1 second | 1 second | | 950ms | | 900ms | | 850ms |
---------------------- ----------- ----------- -----------
gap gap gap
在此圖中,“1 秒”和“#ms”是正在播放的音頻量。 它應該總是 1 秒。 隨着音頻的進展,似乎也出現了間隙。 我想即使我告訴音頻上下文以 0 精確播放文件,它也很好,但其他預定的音頻剪輯可能會也可能不會准時。
這是正確的,還是我的系統中還有其他問題? 是否有 100% 的可靠性可以安排音頻剪輯在准確的時間播放,或者我是否需要添加一些計算來計算幾毫秒的 +/- 何時播放?
看起來服務於這個任務的東西是AudioWorkletNode 。
AudioBufferSourceNode 接口是一個 AudioScheduledSourceNode,它代表一個由內存中的音頻數據組成的音頻源,存儲在一個 AudioBuffer 中。 它對於播放對時間精度要求特別嚴格的音頻特別有用,例如必須匹配特定節奏並且可以保存在內存中而不是從磁盤或網絡播放的聲音。 要播放需要准確計時但必須從網絡流式傳輸或從磁盤播放的聲音,請使用 AudioWorkletNode來實現其播放。
本例正是實現了網絡流。 AudioBufferSourceNode並非設計為從網絡動態更新。
什么會導致不同步:
建議:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.