2013-09-06 27 views
6

Tôi đang viết một cái gì đó như một trình soạn thảo âm thanh web và tôi nghĩ rằng tôi sắp hoàn thành những điều cơ bản. Tôi có thể chơi và dừng một audiofile, nhưng khi tôi cố gắng gọi phương thức play một lần nữa nó sẽ không hoạt động, mặc dù các tham số không thay đổi.WebAudio không phát sau khi dừng (0)

Tôi rất vui khi thấy ai đó xem xét vấn đề của tôi vì tôi không thể thấy lý do tại sao nó không hoạt động khi mã tương tự trong các dự án khác thực hiện. Thật không may tôi không thể tạo ra một jsfiddle, bởi vì tôi sẽ cần phải tải một tập tin mp3 bên ngoài và có vẻ như tôi không được phép làm điều đó. Nhưng tôi đã dán javascript here và tệp html tương ứng here.

Tất cả những gì bạn cần là máy chủ, bạn có thể tải tệp lên và mp3 trên đó. Hoặc bạn có thể sử dụng this link, nhưng cuối cùng tôi sẽ xóa các tệp.

Trả lời

8

Bạn không thể gọi start() trên số AudioBufferSourceNode nhiều lần. Chúng chỉ sử dụng một lần.

Thực sự cách duy nhất để thực hiện việc này là tạo AudioBufferSourceNode mới từ số AudioBuffer cơ bản mỗi lần bạn cần bắt đầu phát lại.

+0

Cảm ơn bạn, tôi sẽ thử điều đó. Điều gì sẽ là cách nhanh nhất để "sao chép" tất cả các thuộc tính vào một NEW AudioBufferSourceNode? Có lý do gì phải làm như thế không? Tôi có thể nghĩ rằng không ai có ý nghĩa thực sự. –

+1

Tất cả những gì bạn thực sự cần làm là nói 'var newSource = context.createBufferSource(); newSource.buffer = oldAudioBuffer; '. Về lý do tại sao nó hoạt động theo cách này ... không thực sự chắc chắn. Tôi nghi ngờ nó đã làm với bộ nhớ/hiệu suất. –

0

Bạn cũng có thể để nó chạy và chỉ cần ngắt kết nối nó khỏi nút thu, và bộ dao động có lẽ sẽ chỉ tạo ra một dạng sóng không chính xác/âm thầm.

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