2016-05-05 17 views
15

Tôi đang sử dụng Chrome. Trong các công cụ dev của tôi console, tôi thử như sau:Âm thanh HTML không thể đặt currentTime

enter image description here

Mọi thứ hoạt động như mong đợi, ngoại trừ dòng cuối cùng. Tại sao tôi không thể đặt currentTime trên đó?

Nói chung, tôi đang tìm thấy toàn bộ âm thanh HTML5 này không đáng tin cậy lắm. Có một wrapper javascript mạnh mẽ mà fallback để flash?

+0

âm thanh có một sự kiện 'loadedmetadata' sẽ kích hoạt khi src đã được tải – echopeak

+0

@echopeak là có một ví dụ làm việc tôi có thể nhìn vào? Tôi quan tâm nhiều hơn đến sự kiện 'tìm kiếm' khi tôi muốn phát âm thanh từ một điểm bắt đầu khác. – Rajat

+0

bạn có thể cung cấp liên kết để tải xuống âm thanh không? – Chicodelarosa

Trả lời

4

Bạn cần phải làm một cái gì đó như thế này (nếu bạn sử dụng jQuery)

$('#elem_audio').bind('canplay', function() { 
    this.currentTime = 10; 
}); 

hoặc trong Javascript

var aud = document.getElementById("elem_audio"); 
aud.oncanplay = function() { 
    aud.currentTime = 10; 
}; 

Lý do đằng sau cho thiết lập này là bạn cần phải chắc chắn âm thanh là sẵn sàng để chơi.

+0

Ngoài ra, bạn có thể sử dụng sự kiện' tìm kiếm'. [Đây là ví dụ] (https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events) ở cuối trang. –

+0

Vì vậy, tôi đã thử thêm 'x.addEventListener ('seeked', function() {x.play()})' ngay trước khi cập nhật 'currentTime' thành' 10' và kết quả là như nhau. Khi phát âm thanh, nó bắt đầu từ 0. – Rajat

+0

'canplay' dường như không hoạt động. – Rajat

1

Tôi đoán là '10' dài hơn độ dài của mp3.

Nhưng ghi lại độ dài của mp3 thay vì '0'.

Phiên bản Chrome của bạn là gì?

+0

Không. 'X.duration' trả về' 31'. Phiên bản Chrome là 50 – Rajat

2

Tại sao tôi không thể đặt currentTime trên đó?

Không thể sao chép currentTime được đặt thành 0 sau khi đặt thành 10. Thời gian là 18.mp3 có nhỏ hơn 10 không?

var request = new XMLHttpRequest(); 
request.open("GET", "/assets/audio/18.mp3", true); 
request.responseType = "blob";  
request.onload = function() { 
    if (this.status == 200) { 
    var audio = new Audio(URL.createObjectURL(this.response)); 
    audio.load(); 
    audio.currentTime = 10; 
    audio.play(); 
    } 
} 
request.send(); 

jsfiddle http://jsfiddle.net/Lg5L4qso/3/

-1

tôi đã cùng một vấn đề, và lý do là thiếu tiêu đề vào file mp3, như:

Content-Length, Content-Range, Content-Type

Các vấn đề liên quan