Tôi có một thiết lập jPlayer cơ bản để phát một tệp âm thanh (150MB) từ AWS S3. Thiết lập của tôi về cơ bản trông như thế này.Sự kiện jPlayer nào chỉ định khả năng bắt đầu chơi?
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);
});
hiểu biết của tôi từ HTML5 audio spec và this SO question là sự kiện canplay
chỉ rõ những điểm mà tại đó các âm thanh nên bắt đầu chơi.
Tuy nhiên, khi tôi chạy mã ở trên (với bộ nhớ cache của trình duyệt trống), tôi nhận được nhật ký sau.
player ready
progress 1
progress 2
progress 3
progress 4
canplay
seeking
playing
progress 5
...
progress 888
seeked
progress 889
...
progress 896
Tôi chỉ nghe thấy âm thanh phát sau sự kiện seeked
. Sự kiện này diễn ra trong một thời gian dài (phút) sau sự kiện canplay
.
Hành vi mong đợi này hay tôi đang làm điều gì đó sai? Ngoài ra, jPlayer có tuân thủ thông số thẻ HTML5 <audio>
trung thực ở đây không?
Chỉnh sửa: Trong trường hợp bạn đang băn khoăn, AWS S3 không chấp nhận yêu cầu Byte-Range.
không phải là 'đã tìm kiếm' khi người dùng sử dụng tiện ích con lừa? có lẽ nó cháy một lần ở phần cuối của tải xuống hoặc giờ chơi? – tim
Tôi không chắc chắn "tiện ích lọc" là gì? –
bạn có thể thử đăng nhập 'canplaythrough' không? có vẻ như nó chờ đợi toàn bộ tập tin để tải – chickpeas