MediaRecorder: start()-Methode
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.
Die start()
-Methode des MediaRecorder
-Interfaces beginnt mit der Aufnahme von Medien in ein oder mehrere Blob
-Objekte.
Sie können die gesamte Dauer des Mediums in ein einzelnes Blob
aufzeichnen (oder bis Sie requestData()
aufrufen), oder Sie können die Anzahl der Millisekunden angeben, die jeweils aufgezeichnet werden sollen. Dann wird jedes Mal, wenn diese Menge an Medien aufgezeichnet wurde, ein Ereignis ausgeliefert, das es Ihnen ermöglicht, auf die aufgezeichneten Medien zu reagieren, während ein neues Blob
erstellt wird, um den nächsten Abschnitt des Mediums aufzuzeichnen.
Angenommen, der state
des MediaRecorder
ist inactive
, dann setzt start()
den state
auf recording
und beginnt mit der Erfassung von Medien aus dem Eingabestream. Ein Blob
wird erstellt und die Daten werden darin gesammelt, bis die Zeitabschnittsperiode abläuft oder das Quellmedium endet. Jedes Mal, wenn ein Blob
bis zu diesem Punkt (der Zeitscheibendauer oder dem Ende des Mediums, falls keine Scheibendauer festgelegt wurde) gefüllt ist, wird ein dataavailable
-Ereignis mit den aufgezeichneten Daten an den MediaRecorder
gesendet. Wenn die Quelle weiterhin abgespielt wird, wird ein neues Blob
erstellt und die Aufnahme darin fortgesetzt, und so weiter.
Wenn der Quellstream endet, wird der state
auf inactive
gesetzt und die Datenerfassung stoppt. Ein letztes dataavailable
-Ereignis wird an den MediaRecorder
gesendet, gefolgt von einem stop
-Ereignis.
Hinweis:
Wenn der Browser nicht in der Lage ist, die Aufnahme zu starten oder fortzusetzen, wird ein error
-Ereignis ausgelöst, gefolgt von einem dataavailable
-Ereignis, das das gesammelte Blob
enthält, gefolgt von dem stop
-Ereignis.
Syntax
start()
start(timeslice)
Parameter
timeslice
Optional-
Die Anzahl der Millisekunden, die in jedes
Blob
aufgezeichnet werden sollen. Wenn dieser Parameter nicht enthalten ist, wird die gesamte Mediadauer in ein einzelnesBlob
aufgezeichnet, es sei denn, dierequestData()
-Methode wird aufgerufen, um dasBlob
zu erhalten und die Erstellung eines neuenBlob
zu triggern, in das die Medien weiterhin aufgezeichnet werden.Hinweis: Wie andere Zeitwerte in Web-APIs ist
timeslice
nicht genau, und die tatsächlichen Intervalle können aufgrund anderer anstehender Aufgaben vor der Erstellung des nächsten Blobs etwas länger sein.
Rückgabewert
Keiner (undefined
).
Ausnahmen
Fehler, die sofort erkannt werden können, werden als DOM-Ausnahmen ausgelöst. Alle anderen Fehler werden durch error
-Ereignisse gemeldet, die an das MediaRecorder
-Objekt gesendet werden. Sie können den onerror
-Ereignishandler implementieren, um auf diese Fehler zu reagieren.
InvalidStateError
DOMException
-
Ausgelöst, wenn sich der
MediaRecorder
nicht iminactive
-Zustand befindet; Sie können keine Medien aufnehmen, wenn sie bereits aufgenommen werden. Siehe diestate
-Eigenschaft. NotSupportedError
DOMException
-
Ausgelöst, wenn:
- Der Medienstream, den Sie aufzuzeichnen versuchen, inaktiv ist.
- Ein oder mehrere Spuren des Streams in einem Format vorliegen, das mit der aktuellen Konfiguration nicht aufgezeichnet werden kann.
- Die Parameter
videoKeyFrameIntervalDuration
undvideoKeyFrameIntervalCount
beide beim Erstellen desMediaRecorder
angegeben wurden.
SecurityError
DOMException
-
Ausgelöst, wenn der
MediaStream
so konfiguriert ist, dass er die Aufnahme nicht zulässt. Dies kann z. B. der Fall sein, wenn Quellen mitgetUserMedia()
bezogen werden, wenn der Benutzer die Berechtigung zur Nutzung eines Eingabegeräts ablehnt. Diese Ausnahme kann auch alserror
-Ereignis geliefert werden, wenn sich die Sicherheitsoptionen für das Quellmedium nach Beginn der Aufnahme ändern.
Beispiele
record.onclick = () => {
mediaRecorder.start();
console.log("recorder started");
};
Spezifikationen
Specification |
---|
MediaStream Recording # dom-mediarecorder-start |
Browser-Kompatibilität
Siehe auch
- Verwendung der MediaStream Recording API
- Web Dictaphone: MediaRecorder + getUserMedia + Web Audio API Visualisierungsdemo, von Chris Mills (Quelle auf GitHub.)
- simpl.info MediaStream Recording-Demo, von Sam Dutton.
getUserMedia()