2012-06-13 78 views
2

我想使用websocket發送音頻消息,應該將哪種類型的消息更改爲音頻流,以便我可以使用套接字發送? 如果我直接使用websocket.send(音頻),我會得到一個錯誤「DOMException」,我應該將其更改爲二進制數據?如何? 我對程序完全陌生,所以請幫助!websocket可以發送什麼類型的消息?

回答

3

Websocket API並支持發送Blob和ArrayBuffer二進制類型。

如果您的瀏覽器支持Mozilla's audio data API,則可以將音頻標籤中的數據作爲ArrayBuffer讀出併發送出去。但是,這個API不太可能被標準化。

如果您的瀏覽器支持Web Audio API(由Google提出),那麼您還可以提取數據的ArrayBuffer併發送該數據。 Web Audio API可能會得到更多的採用。這是一個intro to Web Audio APIThis FAQ有一個描述如何使用Web Audio API從普通音頻/視頻標籤讀取的答案。

更新

this blog post提到的Aurora.js庫看起來可能是在處理音頻和二進制數據很有幫助。

+0

那麼我怎樣才能從現有的音頻標籤獲得數據流,我的意思是,如果已經有一個帶有src的音頻標籤,我想獲得流並將其添加到peerConnection,但我可以這樣做嗎? – Amy

+0

我鏈接到的Web Audio常見問題有一個題爲「我如何從音頻和視頻標籤中處理聲音?」的問題?它演示瞭如何使用Web Audio API連接到現有的音頻標籤。 AudioBuffer上的getChannelData方法可用於將原始PCM數據讀出爲Float32Array(ArrayBuffer):https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioBuffer - 部分 – kanaka

+0

流與Audiobuffer一樣嗎?我想從音頻標籤中獲取流,存儲在audiobuffer中的內容是什麼?我對所有這些東西都很陌生,所以你可以給我更多的信息和解釋 – Amy

相關問題