zoukankan      html  css  js  c++  java
  • 大话Web-Audio-Api

    大话Web-Audio-Api

    转:https://www.jianshu.com/p/0079d1fe7496

    简单的例子:

    <script>
    
        var context;
        var musicBuffer;
        window.addEventListener('load',init,false);
        function init()
        {
            try{
                window.AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.msAudioContext;
                context = new window.AudioContext();
                loadSound("m.mp3");//获取音频
            }
            catch (e) {
                alert(e);
            }
        }
    
        //获取音频数据
        function loadSound(url){
            var request = new XMLHttpRequest();
            request.open('GET',url,true);
            request.responseType= 'arraybuffer';
            request.send();
    
            //下面就是对音频文件的异步解析
            request.onload = function(){
                context.decodeAudioData(request.response,function(buffer){
                    musicBuffer = buffer;
                    console.log(context);
                    console.log(musicBuffer);
                    playSound(context, musicBuffer);//获取成功后播放
                });
            }
    
    
        }
    
        //播放音频数据
        function playSound(audioContext, buffer) {
            var audioBufferSouceNode = audioContext.createBufferSource(),
                analyser = audioContext.createAnalyser();
            //将source与分析器连接
            audioBufferSouceNode.connect(analyser);
            //将分析器与destination连接,这样才能形成到达扬声器的通路
            analyser.connect(audioContext.destination);
            //将上一步解码得到的buffer数据赋值给source
            audioBufferSouceNode.buffer = buffer;
            //播放
            audioBufferSouceNode.start(0);
            //音乐响起后,把analyser传递到另一个方法开始绘制频谱图了,因为绘图需要的信息要从analyser里面获取
            //this._drawSpectrum(analyser);//可以绘制波形图
        }
    
    </script>

    上面例子也受同源跨域策略影响

  • 相关阅读:
    如何在Windows 7平台搭建Android Cocos2d-x3.2alpha0开发环境
    boost::unordered_map分析和使用(转)
    #、##、__VA_ARGS__和##__VA_ARGS__的作用(转)
    C++ explicit关键字详解(转)
    C++11的auto关键字
    Nagios监控系统
    CentOS6.5安装oracle11
    Centos7系统中Mysql登录忘记root密码
    在Centos7系统上查看Mysql版本的方法
    忘记Redhat7root密码
  • 原文地址:https://www.cnblogs.com/fps2tao/p/9234750.html
Copyright © 2011-2022 走看看