MediaRecorder: метод start()
Метод start() интерфейса MediaRecorder начинает запись медиа в один или несколько объектов Blob.
Вы можете записать всю продолжительность медиа в один Blob (или до тех пор, пока не вызовете requestData()), или вы можете указать количество миллисекунд для записи за раз. Затем, каждый раз, когда это количество медиа будет записано, будет отправлено событие, чтобы вы могли действовать в отношении записанных медиа, а новый Blob будет создан для записи следующего фрагмента медиа.
Предполагая, что состояние MediaRecorder — state — inactive, start() устанавливает state в recording, затем начинает захват медиа из входного потока. Создается Blob, и данные собираются в нём, пока не истечёт период временного сегмента или не закончится исходное медиа. Каждый раз, когда Blob заполняется до этого момента (длительность временного сегмента или конец медиа, если длительность сегмента не была задана), в MediaRecorder отправляется событие dataavailable с записанными данными. Если исходный поток всё ещё воспроизводится, создаётся новый Blob, и запись продолжается в него, и так далее.
Когда исходный поток заканчивается, state устанавливается в inactive, и сбор данных прекращается. В MediaRecorder отправляется заключительное событие dataavailable, за которым следует событие stop.
Примечание: Если браузер не может начать запись или продолжить запись, он сгенерирует событие error, за которым последует событие dataavailable, содержащее собранные им Blob, а затем событие stop.
Синтаксис
start() start(timeslice)
Параметры
timesliceНеобязательно-
Количество миллисекунд, которое необходимо записать в каждый объект
Blob. Если этот параметр не указан, вся продолжительность медиа записывается в одинBlob, если не вызван методrequestData()для полученияBlobи запуска создания новогоBlob, в который запись медиа будет продолжена.Примечание: Как и другие значения времени в API веб-приложений,
timesliceне является точным, и реальные интервалы могут быть немного больше из-за других задач, ожидающих обработки перед созданием следующего объекта blob.
Возвращаемое значение
None (undefined).
Исключения
Ошибки, которые могут быть обнаружены немедленно, выбрасываются как исключения DOM. Все остальные ошибки сообщаются через события error, отправляемые в объект MediaRecorder . Вы можете реализовать обработчик событий onerror для реагирования на эти ошибки.
-
InvalidStateErrorDOMException -
Выбрасывается, если
MediaRecorderне находится в состоянииinactive; вы не можете начать запись медиа, если она уже ведётся. См. свойствоstate. -
NotSupportedErrorDOMException -
Выбрасывается, если:
- Поток медиа, который вы пытаетесь записать, неактивен.
- Один или несколько потоков в потоке находятся в формате, который не может быть записан с текущей конфигурацией.
- Параметр
videoKeyFrameIntervalDurationиvideoKeyFrameIntervalCountоба указаны при созданииMediaRecorder.
-
SecurityErrorDOMException -
Выбрасывается, если
MediaStreamнастроен так, чтобы запретить запись. Например, так может быть, если источники получены с помощьюgetUserMedia(), когда пользователь отказался предоставить разрешение на использование устройства ввода. Это исключение также может быть передано как событиеerror, если параметры безопасности для источника медиа изменятся после начала записи.
Примеры
record.onclick = () => {
mediaRecorder.start();
console.log("recorder started");
};
Спецификации
| Спецификация |
|---|
| Запись потока медиа # dom-mediarecorder-start |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
start |
47 | 79 | 25 | 36 | 14.1 | 47 | 25 | 36 | 14 | 5.0 | 47 |
См. также
- Использование API записи потока медиа
- Демонстрация Web Dictaphone: демонстрация MediaRecorder + getUserMedia + Web Audio API, созданная Крисом Миллсом (исходный код на GitHub.)
- Демонстрация записи потока медиа на simpl.info, созданная Самом Даттоном.
getUserMedia()
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/start