soundJs庫簡單使用心得


概述

由於工作需要,學習了一下soundJs庫,把心得記錄下來,供以后開發時參考,相信對其他人也有用。

soundJs是createJs的一部分,它提供了強大的API來處理音頻,是音頻類H5的一個比較好的解決方案。

使用方法

我們主要想利用soundJs來實現一個音頻的淡出效果

對於soundJs,有兩個非常重量級而且常用的類:

  1. Sound類:通過createjs.Sound直接使用;用來創建聲音。
  2. AbstractSoundInstance類:它是通過play方法或者createInstance方法返回的;用來控制聲音。

首先我們注冊聲音源。"../../media/bgm3.mp3"表示聲音源;"myID"是聲音id;3是聲音頻道,主要用於多種聲音混合播放,我們只播放一種聲音,所以這里隨便用一個頻道3。

createjs.Sound.registerSound("../../media/bgm3.mp3", "myID", 3);

然后我們給聲音源注冊插件。我們優先使用createjs.WebAudioPlugin插件即Web Audio Api;其次是createjs.HTMLAudioPlugin即html的audio標簽功能;最后是createjs.FlashAudioPlugin即flash的audio功能。(很遺憾,經測試,加上這條代碼會報錯。stackoverflow上面說,現在版本的soundjs會自動使用默認插件方法,不需要使用registerPlugins和createjs.WebAudioPlugin.playEmptySound()方法了)

createjs.Sound.registerPlugins([createjs.WebAudioPlugin, createjs.HTMLAudioPlugin, createjs.FlashAudioPlugin]);

我們標記聲音源為mp3:

createjs.Sound.alternateExtensions = ["mp3"];

注冊的音頻是需要加載的,我們在它加載完成之后加入一個回調進行一些音頻處理,在回調中我們可以控制音頻的播放,調節音量等。

createjs.Sound.on("fileload", handleLoad);

在回調函數里面,我們把AbstractSoundInstance類引出來以實現后續的控制效果

var myInstance;
function handleLoad() {
  myInstance = createjs.Sound.play("myID", {loop:-1});
  myInstance.volume = 1;
}

在某個適當的時機,我們執行audioFadeOut函數來修改它的volume以實現音頻的淡出效果:

function audioFadeOut() {
  var count = 50;
  var interval = setInterval(function() {
    if(count < 0) {
      myInstance.paused = true;
      clearInterval(interval);
    } else {
      myInstance.volume = count/50;
    }
  }, 70);
}

ios

上面的代碼在PC端的chrome瀏覽器上面能正常運行,在ios的safara上面不能播放,原因不明。。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM