2015-05-20 12 views
6

Điều này khiến tôi phát điên. Đây là mã tôi sử dụng để thiết lập thời gian hiện tại:Tôi có thể tải audio.currentTime nhưng không đặt nó (trong Google Chrome)

$("#audio").click(function(e) { 
    e.preventDefault(); 
    mr_waveform_skip(e) 
}); 

function mr_waveform_skip(event) { 
    clientX = event.clientX; 
    left = event.currentTarget.offsetLeft; 
    clickoffset = clientX - left; 
    percent = clickoffset/event.currentTarget.offsetWidth 
    audio_duration = audio_element.duration; 
    duration_seek = percent*audio_duration; 
    audio_element.currentTime = duration_seek; 
    // audio_element.currentTime = 10; 
    console.log('CLICK: ' + duration_seek + ' Element: ' + audio_element + ' CurrentTime: ' + audio_element.currentTime); 
} 

tôi dường như không thể thiếtaudio_element.currentTime chỉ được nó!

Và tệ hơn, nó hoạt động trong fireFox! Chrome khởi động lại ở mức 0, bất kể điều gì.

Đây là những gì các mã trên tạo ra trong Firefox console:

CLICK: 63.82905432385121 Element: [object HTMLAudioElement] CurrentTime: 3.849546 

Và trong Chrome:

CLICK: 63.82905432385121 Element: [object HTMLAudioElement] CurrentTime: 3.849546 

Thấy không? Cùng một! Chúng ta có thể thấy rằng Chromes thấy phần tử âm thanh HTML (vì nó có thể nhận được giá trị). Nếu tôi làm audio_element.currentTime = 10; nó vẫn không hoạt động (trong Chrome, Firefox trung thành khởi động lại ở mức 10) ..

+0

Thử gọi audio.stop(), sau đó audio.currentTime = 10, sau đó audio.play(). –

+0

Tôi đoán bạn có nghĩa là 'audio.pause()' nhưng có, nó hoạt động ... Trong Firefox. Chrome tiếp tục khởi động lại ở 0: [ – yPhil

+0

Bạn đã thử với codec âm thanh khác? – K3N

Trả lời

2

Mã của bạn hoạt động hoàn hảo khi tôi thử nghiệm nó với với một tập tin Ogg từ Wikipedia .. Nếu đó thực sự là tất cả mã của bạn, sau đó vấn đề này xuất hiện được gây ra bởi một số loại tham nhũng hoặc định dạng bất ngờ trong tập tin phương tiện truyền thông của bạn.

Bạn sẽ không thể khắc phục sự cố này bằng mã; bạn sẽ cần tạo một tệp phương tiện mới để trình duyệt của bạn có thể xử lý chính xác. Có lẽ hãy thử sử dụng một phần khác của phần mềm âm thanh (hoặc các cài đặt khác nhau) để tạo hoặc xử lý lại tệp phương tiện.

+0

Đó là vấn đề chính xác của tôi. Cảm ơn. –

1

Nếu định dạng không phải là vấn đề:

Tôi đã gặp sự cố này trong Chrome vài lần hôm nay. Đã lãng phí rất nhiều thời gian để giải quyết nó. (Phiên bản 55.x)

Giải pháp là khởi động lại Chrome. Sau khi vô số lần làm mới trang, giá trị đột nhiên không được đặt. Đó có thể là một số lỗi bộ nhớ cache. Tôi sẽ nhấn mạnh rằng việc sử dụng một máy chủ phát triển hỗ trợ các yêu cầu phạm vi cũng là một ý tưởng tốt.

Nếu tôi không chạy Node hoặc Django tôi sử dụng: https://github.com/danvk/RangeHTTPServer

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