0

Giới thiệu về Createjs-SoundJS - thư viện chơi nhạc No JQuery

Bài này mình viết giới thiệu về thằng SoundJs mà mình đã từng có dịp dùng qua.

Ngày gặp nhau, đó là ngày khách hàng dự án bên mình kêu về vấn đề muốn tối ưu hóa peformance cho dự án, cụ thể là việc dần dần loại bỏ các thư viện dependency JQuery và tìm các thư viện thay thế.

Và thế là mình gặp em này, yêu luôn từ cái nhìn đầu tiên (thực ra la sau khi đọc docs của em áy xem có ngon không =]]) và quyết định thay thế cho thằng mediaelement đang dùng trong dự án.

Em nó đây https://github.com/CreateJS/SoundJS và đây http://createjs.com/soundjs

Giới thiệu qua về Soundjs, như đã nói đầu tiên em này No JQuery. Và hỗ trợ hầu hết các trình duyệt, nó sẽ làm việc với trình duyệt hỗ trợ Web Audio và HTMLAudioElement, cụ thể là hỗ trợ trình duyệt nào version từ bao nhiêu trở lên các bạn xem thêm ở đây:

Và thêm giới thiệu từ trang chủ: "A Javascript library for working with Audio. It provides a consistent API for loading and playing audio on different browsers and devices. Currently supports WebAudio, HTML5 Audio, Cordova / PhoneGap, and a Flash fallback." (đoạn này hơi ngại dịch mà cũng dễ thôi các bạn tự dịch =]] )

Đầu tiên lấy lấy em nó về như các em khác:

    bower install createjs-soundjs

và add to library

    //=require SoundJs/soundjs-0.6.1.min

Ok, giờ thì chiến với em nó thôi.

Sau đây là 1 ví dụ easy nhất để chơi 1 bài nhạc:

    function init(){
        createjs.Sound.registerSounds(soundPath, soundId);
        var soundInstance = createjs.Sound.createInstance(soundId);

    }

    function playSound(){
        soundInstance.play();
    }

Khá đơn giản phải không. để pause và resume chúng ta sử dụng

    //pause
    soundInstance.paused = true;

    //resume
    soundInstance.paused = false ;

    //stop
    soundInstance.stop();

Để chơi 2 hay nhiều bài hát mình có 1 ví dụ như sau:

    function init(){
        var audioPath = "../../_assets/audio/";
        var sounds = [
            {id:"bai_goc", src:"We_don't_talk_anymore.mp3"},
            {id:"dao_nhac", src:"Chung_ta_khong_thuoc_ve_nhau.mp3"}
        ];
        createjs.Sound.registerSounds(sounds, audioPath);
        var soundInstance = createjs.Sound.createInstance(soundId);

    }

    function playSound(){
        soundInstance.play();
    }

Để set âm lương cho bài hát, sử dụng

    soundInstance.volume = 0.5;

mặc định giá trị sẽ là 1.

Tiếp theo sẽ là 1 ví dụ về preload với soundjs. Trước khi chơi 1 bài hát, trên view thường mình sẽ cần show ra thời lượng của bài hát đó, soundJs cung cấp cho mình hàm getDuration() để mình có thể lấy được bài thời gian bài hát đó. Ở ví dụ này mình sẽ load bài hát trước khi lấy thời gian của nó.

    function init(){
        createjs.Sound.on("fileLoad", handleLoad)
        createjs.Sound.registerSounds(soundPath, soundId);
    }

    function handleLoad(){
        var soundInstance = createjs.Sound.createInstance(soundId);
    }

    var duration = soundInstance.getDuration();

Trong ví dụ trên, trước khi bạn play bài hát bạn có thể lấy được thời lượng cảu nó. Trên đây chỉ là một số ví dụ rất cơ bản với soundJs, ngoài ra bạn còn có thể làm được việc với nó, như cho chạy từ giây thứ bao nhiều đến bao nhiêu,...etc

Rất nhiều thứ dành cho các bạn tiếp tục tìm hiểm tại đây http://www.createjs.com/docs/soundjs/modules/SoundJS.html

Hy vọng bài viết là 1 sự gợi ý nho nhỏ cho các bạn trong việc sử dụng thư viện chơi media với no jquery 😃


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí