Ho una configurazione jPlayer di base che riproduce un file audio (150 MB) da AWS S3. Il mio setup è fondamentalmente simile a questo.Quale evento jPlayer indica la possibilità di iniziare a giocare?
jQuery(function() {
var $player, jPlayerDefaults, progressCount;
$player = $('<div>');
progressCount = 0;
jPlayerDefaults = {
ready: function(e) {
console.log("player ready");
$player.jPlayer('setMedia', {
mp3: 'http://s3-eu-west-1.amazonaws.com/some/file.mp3'
});
return $player.jPlayer('play', 1234);
},
seeking: function(e) {
return console.log("seeking");
},
seeked: function(e) {
return console.log("seeked");
},
canplay: function(e) {
console.log('canplay');
},
progress: function(e) {
return console.log("progress", progressCount += 1);
},
playing: function(e) {
return console.log("playing");
},
error: function(e) {
return console.log("Error loading audio.", e);
},
supplied: 'mp3',
preload: 'auto'
};
$player.jPlayer(jPlayerDefaults);
});
mia comprensione dal HTML5 audio spec e this SO question è che l'evento canplay
designa il punto in cui l'audio dovrebbe iniziare a giocare.
Tuttavia, quando eseguo il codice sopra (con una cache del browser vuota), ottengo il seguente registro.
player ready
progress 1
progress 2
progress 3
progress 4
canplay
seeking
playing
progress 5
...
progress 888
seeked
progress 889
...
progress 896
sento solo di riprodurre file audio dopo l'evento seeked
. Questo evento si verifica a lungo (minuti) dopo l'evento canplay
.
È questo comportamento previsto o sto facendo qualcosa di sbagliato? Inoltre, jPlayer segue fedelmente le specifiche del tag HTML5 <audio>
?
Modifica: In caso ti stavi chiedendo, AWS S3 accetta le richieste di intervallo di byte.
non viene "cercato" per quando l'utente utilizza il widget di scrubber? forse si spara una volta alla fine del download o della riproduzione? – tim
Non sono sicuro di cosa sia il "widget di scrubber"? –
puoi provare a registrare anche 'canplaythrough'? sembra che stia aspettando l'intero caricamento del file – chickpeas