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

js
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 einzelnes Blob aufgezeichnet, es sei denn, die requestData()-Methode wird aufgerufen, um das Blob zu erhalten und die Erstellung eines neuen Blob 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 im inactive-Zustand befindet; Sie können keine Medien aufnehmen, wenn sie bereits aufgenommen werden. Siehe die state-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 und videoKeyFrameIntervalCount beide beim Erstellen des MediaRecorder 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 mit getUserMedia() bezogen werden, wenn der Benutzer die Berechtigung zur Nutzung eines Eingabegeräts ablehnt. Diese Ausnahme kann auch als error-Ereignis geliefert werden, wenn sich die Sicherheitsoptionen für das Quellmedium nach Beginn der Aufnahme ändern.

Beispiele

js
record.onclick = () => {
  mediaRecorder.start();
  console.log("recorder started");
};

Spezifikationen

Specification
MediaStream Recording
# dom-mediarecorder-start

Browser-Kompatibilität

Siehe auch