Cette traduction est incomplète. Aidez-nous à traduire cet article depuis l’anglais
Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.
The MediaSource interface of the Media Source Extensions API represents a source of media data for an HTMLMediaElement object. A MediaSource object can be attached to a HTMLMediaElement to be played in the user agent.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="https://developer.mozilla.org/fr/docs/Web/API/EventTarget" target="_top"><rect x="1" y="1" width="110" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="56" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">EventTarget</text></a><polyline points="111,25 121,20 121,30 111,25" stroke="#D4DDE4" fill="none"/><line x1="121" y1="25" x2="151" y2="25" stroke="#D4DDE4"/><a xlink:href="https://developer.mozilla.org/fr/docs/Web/API/MediaSource" target="_top"><rect x="151" y="1" width="110" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="206" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">MediaSource</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Constructor
MediaSource()- Constructs and returns a new
MediaSourceobject with no associated source buffers.
Properties
MediaSource.sourceBuffersLecture seule- Returns a
SourceBufferListobject containing the list ofSourceBufferobjects associated with thisMediaSource. MediaSource.activeSourceBuffersLecture seule- Returns a
SourceBufferListobject containing a subset of theSourceBufferobjects contained withinMediaSource.sourceBuffers— the list of objects providing the selected video track, enabled audio tracks, and shown/hidden text tracks. MediaSource.readyStateLecture seule- Returns an enum representing the state of the current
MediaSource, whether it is not currently attached to a media element (closed), attached and ready to receiveSourceBufferobjects (open), or attached but the stream has been ended viaMediaSource.endOfStream()(ended.) MediaSource.duration- Gets and sets the duration of the current media being presented.
Event handlers
MediaSource.onsourceclose- The event handler for the
sourcecloseevent. MediaSource.onsourceended- The event handler for the
sourceendedevent. MediaSource.onsourceopen- The event handler for the
sourceopenevent.
Methods
Inherits methods from its parent interface, EventTarget.
MediaSource.addSourceBuffer()- Creates a new
SourceBufferof the given MIME type and adds it to theMediaSource.sourceBufferslist. MediaSource.clearLiveSeekableRange()- Clears a seekable range privious set with a call to
setLiveSeekableRange(). MediaSource.endOfStream()- Signals the end of the stream.
MediaSource.removeSourceBuffer()- Removes the given
SourceBufferfrom theMediaSource.sourceBufferslist. MediaSource.setLiveSeekableRange()- Sets the range that the user can seek to in the media element.
Static methods
MediaSource.isTypeSupported()- Returns a
Booleanvalue indicating if the given MIME type is supported by the current user agent — this is, if it can successfully createSourceBufferobjects for that MIME type.
Examples
The following simple example loads a video with XMLHttpRequest, playing it as soon as it can. This example was written by Nick Desaulniers and can be viewed live here (you can also download the source for further investigation.)
var video = document.querySelector('video');
var assetURL = 'frag_bunny.mp4';
// Need to be specific for Blink regarding codecs
// ./mp4info frag_bunny.mp4 | grep Codec
var mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';
if ('MediaSource' in window && MediaSource.isTypeSupported(mimeCodec)) {
var mediaSource = new MediaSource();
//console.log(mediaSource.readyState); // closed
video.src = URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', sourceOpen);
} else {
console.error('Unsupported MIME type or codec: ', mimeCodec);
}
function sourceOpen (_) {
//console.log(this.readyState); // open
var mediaSource = this;
var sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
fetchAB(assetURL, function (buf) {
sourceBuffer.addEventListener('updateend', function (_) {
mediaSource.endOfStream();
video.play();
//console.log(mediaSource.readyState); // ended
});
sourceBuffer.appendBuffer(buf);
});
};
function fetchAB (url, cb) {
console.log(url);
var xhr = new XMLHttpRequest;
xhr.open('get', url);
xhr.responseType = 'arraybuffer';
xhr.onload = function () {
cb(xhr.response);
};
xhr.send();
};
Specifications
| Specification | Status | Comment |
|---|---|---|
| Media Source Extensions La définition de 'MediaSource' dans cette spécification. |
Recommendation | Initial definition. |
Browser compatibility
| Ordinateur | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
MediaSource | Chrome
Support complet
31
| Edge Support complet 12 | Firefox
Support complet
42
| IE
Support complet
11
| Opera
Support complet
18
| Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android
Support complet
31
| Firefox Android Support complet 41 | Opera Android
Support complet
18
| Safari iOS Aucun support Non | Samsung Internet Android
Support complet
2.0
|
MediaSource() constructor | Chrome
Support complet
31
| Edge Support complet 12 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 33 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 2.0 |
activeSourceBuffers | Chrome Support complet 23 | Edge Support complet 12 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 25 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 1.5 |
addSourceBuffer | Chrome Support complet 23 | Edge Support complet 12 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 25 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 1.5 |
clearLiveSeekableRange | Chrome Support complet 62 | Edge Support complet 17 | Firefox Aucun support Non | IE Aucun support Non | Opera Support complet 49 | Safari Aucun support Non | WebView Android Support complet 62 | Chrome Android Support complet 62 | Firefox Android ? | Opera Android Support complet 46 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 8.0 |
duration | Chrome Support complet 23 | Edge Support complet 12 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 25 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 1.5 |
endOfStream | Chrome Support complet 23 | Edge Support complet 12 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 25 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 1.5 |
isTypeSupported | Chrome Support complet 23 | Edge Support complet 12 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 25 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 1.5 |
onsourceclose | Chrome Support complet 53 | Edge Support complet 17 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 33 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 2.0 |
onsourceended | Chrome Support complet 53 | Edge Support complet 17 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 33 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 2.0 |
onsourceopen | Chrome Support complet 53 | Edge Support complet 17 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 33 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 2.0 |
readyState | Chrome Support complet 23 | Edge Support complet 12 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 33 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 2.0 |
removeSourceBuffer | Chrome Support complet 23 | Edge Support complet 12 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 25 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 1.5 |
setLiveSeekableRange | Chrome Support complet 62 | Edge Support complet 17 | Firefox Aucun support Non | IE Aucun support Non | Opera Support complet 49 | Safari Aucun support Non | WebView Android Support complet 62 | Chrome Android Support complet 62 | Firefox Android ? | Opera Android Support complet 46 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 8.0 |
sourceBuffers | Chrome Support complet 23 | Edge Support complet 12 | Firefox
Support complet
42
| IE
Support complet
11
| Opera Support complet 15 | Safari Support complet 8 | WebView Android Support complet 4.4.3 | Chrome Android Support complet 25 | Firefox Android Support complet 41 | Opera Android Support complet 14 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 1.5 |
Légende
- Support complet
- Support complet
- Aucun support
- Aucun support
- Compatibilité inconnue
- Compatibilité inconnue
- Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
- Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
- Voir les notes d'implémentation.
- Voir les notes d'implémentation.
- Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
- Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
- Cette fonctionnalité nécessite un préfixe particulier ou utilise un autre nom.
- Cette fonctionnalité nécessite un préfixe particulier ou utilise un autre nom.