Web Audio初步介紹和實踐

2022-09-13 22:42:20 字數 2314 閱讀 5834

web audio api緊緊圍繞著乙個概念設計:audio context,它就像是乙個有向圖,途中的每個節點都是乙個audio node,音訊資料從源節點按照程式中指定的邊一步一步的走的目的節點。

如果你接觸過directshow開發,audio context就像filter manager,而audio node則是各種filter,當然,如果你是個linux開發者,這有看起來像是pipe。乙個audio context中的audio node可以有很多,上面的是最簡單的形式了。而audio node又包括四種,

1. 源節點(source node)

2. 處理節點(gain node、panner node、w**e shaper node、oscillator node、delay node、convolver node等)

4. 目的節點(destination node)

現在只有firefox和webkit系的瀏覽器(chrome、safari、opera)都支援web audio api,不過和其他新標準一樣,每家瀏覽器還是使用了特定的字首,所以在呼叫api時,要考慮一下這個問題。?1

2345

6window.audiocontext = (window.audiocontext || window.webkitaudiocontext);

if(window.audiocontext)else

乙個audio context物件可以支援多個節點,包括source和destination節點,每個新建立的audio context都有乙個預設的目的節點,通常代表當前機器上的預設音訊輸出裝置,可以通過context.destination來獲取。?1

2// create source node

varsource = context.createbuffersource();

?1

2345

6789

1011

1213

1415

16varaudiourl ='http://...'; // 這裡替換為音訊檔案url

xhr.responsetype ='arraybuffer';// xmlhttprequest 2的新東西

xhr.onload =function()

}

xhr.send();

web audio提供了非常精準的時間控制,所有的時間都是以秒來計數的。是的,你沒看錯,是秒,不過這裡的秒在底層都是使用高精度的浮點數儲存的,其實際精確度是很高的。在建立的audio context中都有乙個同步系統,用來對外提供絕對時間,這個時間可以通過context.currenttime獲取。這個絕對時間從0開始,而且一旦新建context,就開始走了。?1

2345

6789

1011

1213

1415

1617

1819

2021

22varstartoffset = 0;// audio file offset

varstarttime = 0;// web audio absolute time

functionstart()

functionpause()

functionresume()

到此為止,就是web audio最基本的應用。當然,web audio不止這麼簡單,使用其他型別的audio node,基本可以完成乙個小型的混音室。

vue初步介紹

摘要 vue.js 讀音類似於view 是一套構建使用者介面的漸進式框架。與其他重量級框架不同的是,vue 採用自底向上增量開發的設計。vue 的核心庫只關注檢視層,它不僅易於上手,還便於與第三方庫或既有專案整合。vue.js 讀音類似於view 是一套構建使用者介面的漸進式框架。與其他重量級框架不...

HTTPS 初步介紹

非對稱加密 基於數學方法,生成乙個公鑰 金鑰對,來對資料做加密 解密,被公鑰加密的資料只能被私鑰解密,同樣,被私鑰加密的資料也只能被公鑰解密。所以可以用別人公開的公鑰加密一段資訊然後傳送出去,只有擁有對應金鑰的那個人才能解密。但是缺點是加密 解密的計算成本高,比較占用cpu資源 對稱加密 和非對稱加...

Url 初步介紹

uri uniform resource identifier 是統一資源識別符號,就像網際網路上的位址一樣,在世界範圍內唯一標識並定位資源 url是uri最常見的形式,url描述了一台特定伺服器上某資源的特定位置。1 第一部分被稱為方案,說明了訪問資源所使用的協議型別,例如我們常常看到的 http...