27 lines
811 B
JavaScript
27 lines
811 B
JavaScript
(function(){
|
|
var hasWebKit = ('webkitAudioContext' in window) && !('chrome' in window)
|
|
var context = new webkitAudioContext()
|
|
var request = new XMLHttpRequest()
|
|
var source
|
|
|
|
request.open('GET', url, true)
|
|
request.responseType = 'arraybuffer'
|
|
request.onload = function() {
|
|
context.decodeAudioData(request.response, function(response) {
|
|
(function loop(){
|
|
if (source) {
|
|
source.start(0)
|
|
setTimeout(loop, source.buffer.duration * 1000 - (source.buffer.duration < 2 ? 0 : 60) )
|
|
}
|
|
else {
|
|
setTimeout(loop, 0)
|
|
}
|
|
source = context.createBufferSource()
|
|
source.connect(context.destination)
|
|
source.buffer = response
|
|
})()
|
|
}, function () { console.error('The request failed.') } )
|
|
}
|
|
request.send()
|
|
})()
|