Javascript操作音频流数据的重大问题
作者:秋了秋 发表时间:2015年08月24日
回顾一下我之前写的一篇文章《吐槽一下w3c更新后出现的脚本问题》,已经时过接近四个月了,关于博客音乐没声音这个问题也一直困扰到现在,期间我也一直在寻找解决方案,也请求过很多人,但一直都未果,没有人知道答案,就现在网上探讨这个技术的也屈指可数,刚还特地百度和好搜了下,几乎都是国外的网站有人在探讨,国内的只有一个,不得不感叹下国人的web意识还是差了点。今天再次发布下希望能遇到某个大神路过能指点下。
问题描述:现在已经找准问题的根源了,主要是javascript对html上的audio音频进行操作上的问题,问题代码块:
window.AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.msAudioContext; var player = document.getElementById('musicEngine'), audioContext = new AudioContext(); var playerAnalyser = audioContext.createAnalyser(), playerSource = audioContext.createMediaElementSource(player); playerAnalyser.connect(audioContext.destination);//声音连接到扬声器 playerSource.connect(playerAnalyser);//截取音频信
问题出在2015.05.05之后,也就是说在2015.05.05之前这样写都是可以使音乐正常工作的,那天好像正是w3c更新的时候,之后就一直不能正常工作了,在chrome高版本(40+)浏览器上表现为听不到声音,mp3音乐文件正常加载并有走动,也即只是获取不到音频数据或者访问不到扬声器。在console面板上提示的信息是: MediaElementAudioSource outputs zeroes due to CORS access restrictions for //netblog.cn/mp3/26.mp3 而低版本的谷歌浏览器却能正常播放音乐。 测试代码(分别在360“安全”浏览器和谷歌浏览器上测试):
问题补充:不要说什么跨域问题,今天浏览了许多国外的网站,关于这个问题探讨的都是跨域问题,说是不能对域名之外的mp3操作,也确实是如此,但是我要解决的就是跨域访问问题。 问题补充:问题精准代码:playerSource = audioContext.createMediaElementSource(player);就这句就出问题了。
写在最后:web技术还是要关注下啊,不然更新了什么都不知道。不过都是国外的人在更新,还得英文较好才行啊,不然看见英文就不舒服。