Путем рассматривания дебрей вконтактовского HTLM5-плеера родилось вот что
var player = new Audio();
player.setAttribute('src', 'http://dl.dropbox.com/u/95730813/1.mp3');
player.load();
var time = 276.331;
var onProgress = function(){
var buffered;
try{
buffered = (Math.floor(this.buffered.end(0) * 1000) / 1000) || 0;
}catch(e){}
if(time && Math.abs(time - buffered) < 0.1){
console.log('Buffered: 100%');
this.removeEventListener('progress', onProgress);
}else{
var percent = Math.ceil(buffered / time * 100);
percent = Math.min(100, Math.max(0, percent));
if(!isNaN(percent)){
console.log('Buffered: '+ percent +'%');
}
}
}
player.addEventListener('progress', onProgress);
$(document).ready(function(){
player.play();
});
http://jsfiddle.net/yH8t5/3/
Адовый костыль, т.к. нужно знать длину трека изначально. В моем конкретном случае это не критично, но костыль.
Еще хотелось бы прочитать мнение более умных людей, чем я, как решать эту проблему