Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

audioprocess事件在Chrome上不触发?

  确切地说,audioprocess事件应该是在Chrome@Windows上不触发,在Chrome@Ubuntu上是正常的,在Firefox上也是正常的。不知是我的环境问题还是Chrome的BUG,总之这个问题折腾了我好几个小时都没结果,要是BUG的话那错的也太离谱了。
  下面是一段测试代码: <script>
var AudioContext=AudioContext||webkitAudioContext;
//创建声音环境
var context=new AudioContext();
//创建一个processor,块大小为1024,没有输入,输出1个声道
var processor=context.createScriptProcessor(1024,0,1);
//连接到最终输出源
processor.connect(context.destination);
//绑定audioprocess事件
processor.onaudioprocess=function(e){
  console.log("audioprocess");
  //获取输出声道的数组
  var buf=e.outputBuffer.getChannelData(0);
  //生成噪音,音量10%
  for(var i=0;i<1024;i++)buf[i]=Math.random()/10;
};
</script>
  这个代码正常运行应该可以听到页面播放噪音,并且控制台有持续的"audioprocess"字符串输出。但我在Chrome32@Windows7上测试,程序不报错,也不输出任何声音,控制台也没有输出。也就是说audioprocess事件根本就没被触发,或者processor根本就没起作用?
  到谷歌上找了很多资料,但是没看到相关的问题。只有一个Safari上processor没有数据输入时不会触发audioprocess的BUG。但上面的代码即使向其输入一个声道也无法解决问题。大家也测试下看看问题能不能重现,我希望是我的环境问题。

  测试环境
    搜狗Chromium28@Windows7 不正常
    Chrome32@Windows7 不正常
    Chrome31@Ubuntu13 正常
    Firefox26@Windows7 正常
    Firefox26@Ubuntu13 正常
网名:
54.92.174.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^