使用Web Audio API,Safari和Firefox均无法处理MediaElementSource
的音频数据。
var audioContext, audioProcess, audioSource,
result = document.createElement('h3'),
output = document.createElement('span'),
mp3 = '//www.jonathancoulton.com/wp-content/uploads/encodes/Smoking_Monkey/mp3/09_First_of_May_mp3_3a69021.mp3',
ogg = '//upload.wikimedia.org/wikipedia/en/4/45/ACDC_-_Back_In_Black-sample.ogg',
gotData = false, data, audio = new Audio();
function connect() {
audioContext = window.AudioContext ? new AudioContext() : new webkitAudioContext(),
audioSource = audioContext.createMediaElementSource( audio ),
audioScript = audioContext.createScriptProcessor( 2048 );
audioSource.connect( audioScript );
audioSource.connect( audioContext.destination );
audioScript.connect( audioContext.destination );
audioScript.addEventListener('audioprocess', function(e){
if ((data = e.inputBuffer.getChannelData(0)[0]*3)) {
output.innerHTML = Math.abs(data).toFixed(3);
if (!gotData) gotData = true;
}
}, false);
}
(function setup(){
audio.volume = 1/3;
audio.controls = true;
audio.autoplay = true;
audio.src = audio.canPlayType('audio/mpeg') ? mp3 : ogg;
audio.addEventListener('canplay', connect);
result.innerHTML = 'Channel Data: ';
output.innerHTML = '0.000';
document.body.appendChild(result).appendChild(output);
document.body.appendChild(audio);
})();
近期是否有计划修补这个问题?或者是否有一些方法仍然可以为用户提供音频控件?对于苹果,是否可以在WebKit Nightlies中解决这个问题?还是我们必须等到Safari 8.0发布才能使HTML5的<audio>与Web Audio API良好地配合?自Safari 6.0以来,Web Audio API已经存在于Safari中,而我最初发布了这个问题是在Safari 7.0发布之前很久。有没有原因说明为什么还没有被修复?它会被修复吗?对于Mozilla,我知道你们仍在从旧的Audio Data API转换,但这是否是您的Web Audio实现中已知的问题,并且在Firefox下一个版本发布之前将得到修复?
<audio>
已经播放了吗?iOS延迟加载<audio>
和<video>
,直到某些用户操作提示它们开始,因此也许问题是您想要使用的audioElement
没有被加载。 - apsillersaudioElement.readyState < 3 ? audioElement.addEventListener('canplay', connect) : connect();
的作用。虽然iOS也遇到了同样的bug,但我特别想知道桌面版本。 - idbeholdScriptProcessor
没有接收到除 0 值以外的任何内容。 - idbehold