簡體   English   中英

HTML5中的音頻數據流

[英]Audio data streaming in HTML5

我正在以小塊的形式從服務器接收PCM音頻數據,並將它們存儲在一個數組中。 現在我想使用一些HTML5功能順序播放這些音頻塊。 我將其視為“可能”解決方案的兩個選項是:

  1. 帶有數據URI的 HTML5音頻標記
  2. Web音頻API

在我調查這些選項時,請向我建議我正在考慮的兩個選項的任何其他選項或觀點。 雖然跨平台解決方案將是最好的,但我可以滿足Chrome專用解決方案

調度音頻是Web Audio API的設計目標。 如果將已解碼的PCM音頻塊作為類型化陣列( AUDIO_CHUNKS ),則可以為每個塊創建音頻緩沖區,並使用noteOn()在准確的時間(一個接一個)安排它們。 就像是:

var startTime = 0;

for (var i = 0, audioChunk; audioChunk = AUDIO_CHUNKS[i]; ++i) {
  // Create/set audio buffer for each chunk
  var audioBuffer = audioCtx.createBuffer(NUM_CHANNELS, NUM_SAMPLES, SAMPLE_RATE);
  audioBuffer.getChannelData(0).set(audioChunk);

  var source = audioCtx.createBufferSource();
  source.buffer = audioBuffer;
  source.noteOn(startTime);
  source.connect(audioCtx.destination);

  startTime += audioBuffer.duration;
}

選項1可能不起作用,因為音頻標簽不播放原始音頻數據(我假設你是PCM音頻數據的意思,或者我錯了?)。 每個瀏覽器都需要特定的編解碼 最重要的是音頻標簽在沒有間隙的情況下完全不可靠。

選項2可能有效。 網絡音頻api包含可能填充原始數據並播放的緩沖區,但我從未嘗試過這樣做。 現在最大的缺點是; 一個。 Chrome僅限b。 用戶需要通過鍵入about:flags並啟用Web Audio來配置chrome,這可能對某些人來說可怕。

第三種選擇是音頻數據API,這是一個中間立場。 我自己從未嘗試過,但從規格來看,它看起來就像你正在尋找的那樣。 我不贊成實現,所以你必須自己做一些研究:) https://wiki.mozilla.org/Audio_Data_API#Writing_Audio

請注意,我正在給出這些答案,而且我仍然是HTML5音頻的新手。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM