MediaRecorder: start() Methode
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 einem einzelnen Blob
aufzeichnen (oder bis Sie requestData()
aufrufen), oder Sie können die Anzahl der Millisekunden angeben, die jeweils aufgezeichnet werden sollen. Jedes Mal, wenn dieser Zeitraum von Medien aufgezeichnet wurde, wird ein Ereignis ausgelöst, das es Ihnen ermöglicht, die aufgenommenen Medien zu verarbeiten, während ein neues Blob
erstellt wird, um den nächsten Abschnitt des Mediums aufzuzeichnen.
Angenommen, der state
des MediaRecorders
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 der Zeitabschnitt endet oder das Quellmedium endet. Jedes Mal, wenn ein Blob
bis zu diesem Punkt gefüllt ist (die Zeitabschnittsdauer oder das Ende des Mediums, wenn keine Zeitabschnittsdauer angegeben wurde), wird ein dataavailable
-Ereignis an den MediaRecorder
mit den aufgezeichneten Daten gesendet. Wenn die Quelle noch abgespielt wird, wird ein neues Blob
erstellt und die Aufnahme wird darin fortgesetzt, und so weiter.
Wenn der Quellstream endet, wird state
auf inactive
gesetzt und die Datenerfassung stoppt. Ein endgültiges 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 vom stop
-Ereignis.
Syntax
start()
start(timeslice)
Parameter
timeslice
Optional-
Die Anzahl der Millisekunden, die in jedes
Blob
aufgezeichnet werden sollen. Wenn dieser Parameter nicht angegeben wird, wird die gesamte Dauer des Mediums in einem einzelnenBlob
aufgezeichnet, es sei denn, die MethoderequestData()
wird aufgerufen, um dasBlob
zu erhalten und die Erstellung eines neuenBlob
, in das die Medien weiterhin aufgezeichnet werden, auszulösen.Hinweis: Wie andere Zeitwerte in Web-APIs ist
timeslice
nicht exakt und die tatsächlichen Intervalle können aufgrund anderer anstehender Aufgaben vor der Erstellung des nächsten Blob geringfügig 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
-
Wird ausgelöst, wenn der
MediaRecorder
nicht iminactive
-Zustand ist; Sie können die Medienaufnahme nicht starten, wenn sie bereits aufgezeichnet werden. Siehe diestate
-Eigenschaft. NotSupportedError
DOMException
-
Wird ausgelöst, wenn:
- Der Medienstream, den Sie aufzeichnen möchten, inaktiv ist.
- Einer oder mehrere der Tracks des Streams in einem Format vorliegen, das mit der aktuellen Konfiguration nicht aufgezeichnet werden kann.
- Der Parameter
videoKeyFrameIntervalDuration
undvideoKeyFrameIntervalCount
beim Erstellen desMediaRecorders
beide angegeben sind.
SecurityError
DOMException
-
Wird ausgelöst, wenn der
MediaStream
so konfiguriert ist, dass die Aufnahme nicht erlaubt ist. Dies kann zum Beispiel der Fall sein bei Quellen, die mitgetUserMedia()
erhalten wurden, wenn der Benutzer die Erlaubnis zur Nutzung eines Eingabegeräts verweigert. Diese Ausnahme kann auch alserror
-Ereignis geliefert werden, wenn sich die Sicherheitsoptionen für die Quellmedien nach Beginn der Aufnahme ändern.
Beispiele
record.onclick = () => {
mediaRecorder.start();
console.log("recorder started");
};
Spezifikationen
Specification |
---|
MediaStream Recording # dom-mediarecorder-start |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Verwendung der MediaStream Recording API
- Web Dictaphone: MediaRecorder + getUserMedia + Web Audio API Visualisierungs-Demo, von Chris Mills (Quelle auf GitHub.)
- simpl.info MediaStream Recording demo, von Sam Dutton.
getUserMedia()