AudioBufferSourceNode: phương thức start()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức start() của giao diện AudioBufferSourceNode được dùng để lên lịch phát dữ liệu âm thanh chứa trong bộ đệm, hoặc bắt đầu phát ngay lập tức.
Cú pháp
start(when)
start(when, offset)
start(when, offset, duration)
Tham số
whenOptional-
Thời điểm, tính bằng giây, mà âm thanh nên bắt đầu phát, trong cùng hệ tọa độ thời gian được dùng bởi
AudioContext. Nếuwhennhỏ hơnAudioContext.currentTime, hoặc nếu bằng 0, âm thanh sẽ bắt đầu phát ngay. Giá trị mặc định là 0. offsetOptional-
Một độ lệch, được chỉ định theo số giây trong cùng hệ tọa độ thời gian như
AudioContext, tới thời điểm bên trong bộ đệm âm thanh mà việc phát nên bắt đầu. Ví dụ, để bắt đầu phát từ giữa một đoạn âm thanh dài 10 giây,offsetnên là 5. Giá trị mặc định 0 sẽ bắt đầu phát từ đầu bộ đệm âm thanh, và các độ lệch vượt quá phần cuối của âm thanh sẽ được phát (dựa trêndurationcủa bộ đệm âm thanh và/hoặc thuộc tínhloopEnd) sẽ bị giới hạn âm thầm về giá trị tối đa cho phép. Việc tính toán độ lệch vào âm thanh được thực hiện bằng tốc độ lấy mẫu tự nhiên của bộ đệm âm thanh, thay vì tốc độ phát hiện tại, nên ngay cả khi âm thanh đang phát ở tốc độ gấp đôi bình thường, điểm giữa của một bộ đệm âm thanh dài 10 giây vẫn là 5. durationOptional-
Thời lượng của dữ liệu âm thanh sẽ được phát, được chỉ định là số giây của toàn bộ nội dung bộ đệm. Nếu tham số này không được chỉ định, âm thanh sẽ phát cho tới khi tới kết thúc tự nhiên của nó hoặc bị dừng bằng phương thức
stop(). Giá trị này độc lập vớiAudioBufferSourceNode.playbackRate, vì vậy ví dụdurationbằng 2 giây vớiplaybackRatebằng2sẽ phát 2 giây của nguồn, tạo ra đầu ra âm thanh dài 1 giây.
Giá trị trả về
Không có (undefined).
Ngoại lệ
TypeError-
Được ném ra nếu một giá trị âm được chỉ định cho một hoặc nhiều trong ba tham số thời gian. Xin đừng cố can thiệp vào các định luật vật lý thời gian.
InvalidStateErrorDOMException-
Được ném ra nếu
start()đã được gọi trước đó. Bạn chỉ có thể gọi hàm này một lần trong vòng đời của mộtAudioBufferSourceNode.
Ví dụ
Ví dụ đơn giản nhất chỉ bắt đầu phát bộ đệm âm thanh từ đầu, trong trường hợp này bạn không cần chỉ định bất kỳ tham số nào:
source.start();
Ví dụ phức tạp hơn dưới đây sẽ bắt đầu phát, sau 1 giây kể từ bây giờ, lượng âm thanh dài 10 giây bắt đầu từ giây thứ 3 trong bộ đệm âm thanh.
source.start(audioCtx.currentTime + 1, 3, 10);
Note:
Để xem ví dụ đầy đủ hơn cho thấy start() được dùng thế nào, hãy xem ví dụ AudioContext.decodeAudioData() của chúng tôi. Bạn cũng có thể thử ví dụ trực tiếp, và xem mã nguồn ví dụ.
Thông số kỹ thuật
| Specification |
|---|
| Web Audio API> # dom-audiobuffersourcenode-start> |