| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/API/HTMLMediaElement/srcObject | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Die srcObject-Eigenschaft des HTMLMediaElement Interfaces setzt oder gibt das Objekt zurck, das als Quelle des Medieninhalts dient, der mit dem HTMLMediaElement verknpft ist, oder null falls nicht zugewiesen.
Das Objekt kann ein MediaStream, eine MediaSource, ein Blob oder eine File (die von Blob erbt) sein.
Hinweis:
Ab Mrz 2020 bietet nur Safari volle Untersttzung fr srcObject, d.h. die Verwendung von MediaSource, MediaStream, Blob und File Objekten als Werte. Andere Browser untersttzen MediaStream Objekte; bis sie aufgeholt haben, ziehen Sie in Betracht, eine URL mit URL.createObjectURL() zu erstellen und diese der HTMLMediaElement.src zuzuweisen (siehe unten fr ein Beispiel). Darber hinaus untersttzt ab Version 108 Chromium das Anfgen eines dedizierten Worker-MediaSource-Objekts, indem die MediaSourceHandle-Instanz dieses Objekts (bertragen vom Worker) an srcObject zugewiesen wird.
Ein MediaStream, MediaSource, Blob oder
File Objekt (siehe jedoch die Kompatibilittstabelle fr tatschlich untersttzte Formate), oder null falls nicht zugewiesen.
ltere Versionen der Media Source-Spezifikation erforderten die Verwendung von
URL.createObjectURL(), um eine Objekt-URL zu erstellen, die dann auf src gesetzt wurde. Jetzt knnen Sie einfach srcObject direkt auf den MediaStream setzen.
In diesem Beispiel wird ein MediaStream von einer Kamera einem neu erstellten <video>-Element zugewiesen.
const mediaStream = await navigator.mediaDevices.getUserMedia({ video: true });
const video = document.createElement("video");
video.srcObject = mediaStream;
In diesem Beispiel wird eine neue MediaSource einem neu erstellten <video>-Element zugewiesen.
const mediaSource = new MediaSource();
const video = document.createElement("video");
video.srcObject = mediaSource;
Die folgenden Beispiele untersttzen ltere Browserversionen, die erfordern, dass Sie eine Objekt-URL erstellen und sie src zuweisen, falls srcObject nicht untersttzt wird.
Zuerst wird ein MediaStream von einer Kamera einem neu erstellten <video>-Element zugewiesen, mit einem Rckfall fr ltere Browser.
const mediaStream = await navigator.mediaDevices.getUserMedia({ video: true });
const video = document.createElement("video");
if ("srcObject" in video) {
video.srcObject = mediaStream;
} else {
// Avoid using this in new browsers, as it is going away.
video.src = URL.createObjectURL(mediaStream);
}
Zweitens wird eine neue MediaSource einem neu erstellten <video>-Element zugewiesen, mit einem Rckfall fr ltere Browser und Browser, die die direkte Zuweisung von MediaSource noch nicht untersttzen.
const mediaSource = new MediaSource();
const video = document.createElement("video");
// Older browsers may not have srcObject
if ("srcObject" in video) {
try {
video.srcObject = mediaSource;
} catch (err) {
if (err.name !== "TypeError") {
throw err;
}
// Even if they do, they may only support MediaStream
video.src = URL.createObjectURL(mediaSource);
}
} else {
video.src = URL.createObjectURL(mediaSource);
}
MediaSource in einem Worker und bergabe an den Haupt-Thread zum AbspielenDie MediaSource.handle-Eigenschaft kann innerhalb eines dedizierten Workers zugegriffen werden und das resultierende MediaSourceHandle-Objekt wird dann ber einen postMessage() Aufruf an den Thread bertragen, der den Worker erstellt hat (in diesem Fall der Haupt-Thread):
// Inside dedicated worker
let mediaSource = new MediaSource();
let handle = mediaSource.handle;
// Transfer the handle to the context that created the worker
postMessage({ arg: handle }, [handle]);
mediaSource.addEventListener("sourceopen", () => {
// Await sourceopen on MediaSource before creating SourceBuffers
// and populating them with fetched media MediaSource won't
// accept creation of SourceBuffers until it is attached to the
// HTMLMediaElement and its readyState is "open"
});
Im Haupt-Thread erhalten wir den Handle ber einen message-Ereignishandler, fgen ihn ber seine HTMLMediaElement.srcObject-Eigenschaft an ein <video>-Element an und spielen das Video mit play ab:
worker.addEventListener("message", (msg) => {
let mediaSourceHandle = msg.data.arg;
video.srcObject = mediaSourceHandle;
video.play();
});
Hinweis:>MediaSourceHandles knnen nicht erfolgreich in oder ber einen Shared Worker oder Service Worker bertragen werden.
| Spezifikation |
|---|
| HTML # dom-media-srcobject-dev |
| Media Source Extensions # htmlmediaelement-extensions-srcobject |
HTMLMediaElementaudioTracksautoplaybufferedcontrollercontrolscontrolsListcrossOrigincurrentSrccurrentTimedefaultMuteddefaultPlaybackRatedisableRemotePlaybackdurationendederrorloadingloopmediaGroupmediaKeysmutednetworkStatepausedplaybackRateplayedpreloadpreservesPitchreadyStateremoteseekableseekingsinkIdsrcsrcObjecttextTracksvideoTracksvolumeBeforeUnloadEventDOMStringMapErrorEventHTMLAnchorElementHTMLAreaElementHTMLAudioElementHTMLBRElementHTMLBaseElementHTMLBodyElementHTMLButtonElementHTMLCanvasElementHTMLDListElementHTMLDataElementHTMLDataListElementHTMLDialogElementHTMLDivElementHTMLDocumentHTMLElementHTMLEmbedElementHTMLFieldSetElementHTMLFormControlsCollectionHTMLFormElementHTMLFrameSetElementHTMLGeolocationElementHTMLHRElementHTMLHeadElementHTMLHeadingElementHTMLHtmlElementHTMLIFrameElementHTMLImageElementHTMLInputElementHTMLLIElementHTMLLabelElementHTMLLegendElementHTMLLinkElementHTMLMapElementHTMLMenuElementHTMLMetaElementHTMLMeterElementHTMLModElementHTMLOListElementHTMLObjectElementHTMLOptGroupElementHTMLOptionElementHTMLOptionsCollectionHTMLOutputElementHTMLParagraphElementHTMLPictureElementHTMLPreElementHTMLProgressElementHTMLQuoteElementHTMLScriptElementHTMLSelectElementHTMLSourceElementHTMLSpanElementHTMLStyleElementHTMLTableCaptionElementHTMLTableCellElementHTMLTableColElementHTMLTableElementHTMLTableRowElementHTMLTableSectionElementHTMLTemplateElementHTMLTextAreaElementHTMLTimeElementHTMLTitleElementHTMLTrackElementHTMLUListElementHTMLUnknownElementHTMLVideoElementHashChangeEventHistoryImageDataLocationMessageChannelMessageEventMessagePortNavigatorPageRevealEventPageSwapEventPageTransitionEventPluginPluginArrayPromiseRejectionEventRadioNodeListTimeRangesUserActivationValidityStateWindowWorkletGlobalScopeDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |