MediaRecorder: 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 April 2021.
Phương thức start() của giao diện MediaRecorder bắt đầu ghi phương tiện vào một hoặc nhiều đối tượng Blob.
Bạn có thể ghi toàn bộ thời lượng phương tiện vào một Blob duy nhất (hoặc cho đến khi bạn gọi requestData()), hoặc bạn có thể chỉ định số mili giây để ghi mỗi lần. Sau đó, mỗi lần lượng phương tiện đó được ghi, một sự kiện sẽ được gửi để bạn có thể xử lý phương tiện đã ghi, trong khi một Blob mới được tạo để ghi phần tiếp theo của phương tiện.
Giả sử state của MediaRecorder là inactive, start() đặt state thành recording, sau đó bắt đầu ghi từ luồng đầu vào. Một Blob được tạo và dữ liệu được thu thập vào đó cho đến khi hết khoảng thời gian slice hoặc nguồn phương tiện kết thúc. Mỗi lần Blob được lấp đầy đến thời điểm đó (thời gian timeslice hoặc kết thúc phương tiện, nếu không có thời gian slice), một sự kiện dataavailable được gửi đến MediaRecorder với dữ liệu đã ghi. Nếu nguồn vẫn đang phát, một Blob mới được tạo và việc ghi tiếp tục vào đó, và tiếp tục như vậy.
Khi luồng nguồn kết thúc, state được đặt thành inactive và việc thu thập dữ liệu dừng lại. Sự kiện dataavailable cuối cùng được gửi đến MediaRecorder, tiếp theo là sự kiện stop.
Note:
Nếu trình duyệt không thể bắt đầu ghi hoặc tiếp tục ghi, nó sẽ tạo sự kiện error, tiếp theo là sự kiện dataavailable chứa Blob đã thu thập, tiếp theo là sự kiện stop.
Cú pháp
start()
start(timeslice)
Tham số
timesliceOptional-
Số mili giây để ghi vào mỗi
Blob. Nếu tham số này không được bao gồm, toàn bộ thời lượng phương tiện được ghi vào mộtBlobduy nhất trừ khi phương thứcrequestData()được gọi để lấyBlobvà kích hoạt việc tạoBlobmới để tiếp tục ghi phương tiện vào đó.Note: Giống như các giá trị thời gian khác trong web API,
timeslicekhông chính xác và các khoảng thực tế có thể hơi dài hơn một chút do các tác vụ đang chờ xử lý trước khi tạo blob tiếp theo.
Giá trị trả về
Không có (undefined).
Ngoại lệ
Các lỗi có thể phát hiện ngay lập tức được ném ra dưới dạng ngoại lệ DOM. Tất cả các lỗi khác được báo cáo qua sự kiện error được gửi đến đối tượng MediaRecorder. Bạn có thể triển khai trình xử lý sự kiện onerror để phản hồi các lỗi này.
InvalidStateErrorDOMException-
Được ném ra nếu
MediaRecorderkhông ở trạng tháiinactive; bạn không thể bắt đầu ghi phương tiện nếu nó đã đang được ghi. Xem thuộc tínhstate. NotSupportedErrorDOMException-
Được ném ra nếu:
- Luồng phương tiện bạn đang cố ghi không hoạt động.
- Một hoặc nhiều track của luồng ở định dạng không thể ghi bằng cấu hình hiện tại.
- Cả hai tham số
videoKeyFrameIntervalDurationvàvideoKeyFrameIntervalCountđều được chỉ định khi tạoMediaRecorder.
SecurityErrorDOMException-
Được ném ra nếu
MediaStreamđược cấu hình để không cho phép ghi. Điều này có thể xảy ra, ví dụ, với các nguồn được lấy bằnggetUserMedia()khi người dùng từ chối quyền sử dụng thiết bị đầu vào. Ngoại lệ này cũng có thể được gửi dưới dạng sự kiệnerrornếu các tùy chọn bảo mật cho phương tiện nguồn thay đổi sau khi bắt đầu ghi.
Ví dụ
record.onclick = () => {
mediaRecorder.start();
console.log("recorder started");
};
Thông số kỹ thuật
| Specification |
|---|
| MediaStream Recording> # dom-mediarecorder-start> |
Tương thích trình duyệt
Xem thêm
- Sử dụng MediaStream Recording API
- Web Dictaphone: MediaRecorder + getUserMedia + Web Audio API visualization demo, bởi Chris Mills (mã nguồn trên GitHub.)
- simpl.info MediaStream Recording demo, bởi Sam Dutton.
getUserMedia()