/**
* @file media-error.js
* /
importiere {assign, isObject} aus '. /utils/obj ';
/**
* Eine benutzerdefinierte `MediaError`-Klasse, die die standardmäßige HTML5-`MediaError`-Klasse nachahmt.
*
* @param {number|string|object|mediaError} -Wert
* Dies kann von mehreren Typen sein:
* - Zahl: sollte ein Standardfehlercode sein
* - string: eine Fehlermeldung (der Code wird 0 sein)
* - Objekt: beliebige Eigenschaften
* - `MediaError` (native): Wird verwendet, um ein `MediaError`-Objekt von video.js zu füllen
* - `MediaError` (video.js): gibt sich selbst zurück, wenn es bereits ein
* video.js `MediaError`-Objekt.
*
* @see [MediaError-Spezifikation] {@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}
* @see [Verschlüsselte Medienfehlerspezifikation] {@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}
*
* @class Medienfehler
* /
Funktion MediaError (Wert) {
//Erlaube redundante Aufrufe an diesen Konstruktor, um `instanceof` zu vermeiden
//Checks rund um den Code.
if (Wert-Instanz von MediaError) {
rückgabewert;
}
if (Werttyp === 'Zahl') {
this.code = Wert;
} sonst wenn (Wertetyp === 'Zeichenfolge') {
//Der Standardcode ist Null, das ist also ein benutzerdefinierter Fehler
this.message = Wert;
} sonst wenn (isObject (value)) {
//Wir weisen die Eigenschaft `code` manuell zu, da es sich um native `MediaError`-Objekte handelt
//mache es nicht als eigene/aufzählbare Eigenschaft des Objekts verfügbar.
if (typeof value.code === 'Zahl') {
this.code = wert.code;
}
zuweisen (dies, Wert);
}
wenn (! diese.nachricht) {
this.message = MediaError.defaultMessages [this.code] || „;
}
}
/**
* Der Fehlercode, der sich auf zwei der definierten `MediaError`-Typen bezieht
*
* @Typ {Zahl}
* /
MediaError.prototype.code = 0;
/**
* Eine optionale Meldung, die bei dem Fehler angezeigt werden soll. Nachricht ist nicht Teil des HTML5
* Videospezifikation, ermöglicht jedoch informativere benutzerdefinierte Fehler.
*
* @type {Zeichenfolge}
* /
mediaError.prototype.message = „;
/**
* Ein optionaler Statuscode, der durch Plugins gesetzt werden kann, um noch mehr Details zu erhalten
* der Fehler. Zum Beispiel könnte ein Plugin einen bestimmten HTTP-Statuscode und einen
* Fehlermeldung für diesen Code. Wenn das Plugin dann diesen Fehler bekommt, wird diese Klasse
* wissen, wie man dafür eine Fehlermeldung anzeigt. Dadurch kann eine benutzerdefinierte Nachricht angezeigt werden
* oben auf dem `Player`-Fehler-Overlay.
*
* @Typ {Array}
* /
MediaError.prototype.status = null;
/**
* Nach dem W3C-Standard indexierte Fehler. Die Bestellung **KANN NICHT ÄNDERN**! Sehen Sie die
* Die Spezifikation ist unter {@link MediaError} aufgeführt für weitere Informationen.
*
* @enum {array}
* @readonly
* @property {string} 0 - MEDIA_ERR_BENUTZERDEFINIERT
* @property {string} 1 - MEDIA_ERR_ABORTED
* @property {string} 2 - MEDIA_ERR_NETWORK
* @property {string} 3 - MEDIA_ERR_DECODE
* @property {string} 4 - MEDIA_ERR_SRC_NICHT UNTERSTÜTZT
* @property {string} 5 - MEDIA_ERR_VERSCHLÜSSELT
* /
mediaError.errorTypes = [
'MEDIA_ERR_CUSTOM',
'MEDIA_ERR_ABORTED',
'MEDIA_ERR_NETWORK',
'MEDIA_ERR_DECODE',
'MEDIA_ERR_SRC_NOT_SUPPORTED',
'MEDIA_ERR_VERSCHLÜSSELT'
];
/**
* Die standardmäßigen `MediaError`-Meldungen basieren auf den {@link MediaError.errorTypes}.
*
* @Typ {Array}
* @konstant
* /
MediaError.defaultMessages = {
1: 'Sie haben die Medienwiedergabe abgebrochen',
2: 'Ein Netzwerkfehler führte dazu, dass der Mediendownload teilweise fehlschlug. ',
3: 'Die Medienwiedergabe wurde aufgrund eines Korruptionsproblems oder weil die von Ihrem Browser verwendeten Medienfunktionen nicht unterstützt wurden, abgebrochen. ',
4: 'Das Medium konnte nicht geladen werden, entweder weil der Server oder das Netzwerk ausgefallen ist oder weil das Format nicht unterstützt wird. ',
5: „Die Medien sind verschlüsselt und wir haben nicht die Schlüssel, um sie zu entschlüsseln.“
};
//Füge Typen als Eigenschaften auf MediaError hinzu
//z. B. mediaError.media_err_src_not_supported = 4;
für (sei errNum = 0; errNum < mediaError.errorTypes.length; errNum++) {
mediaError [MediaError.errorTypes [errNum]] = Fehlernummer;
//Werte sollten sowohl in der Klasse als auch in der Instanz zugänglich sein
mediaError.prototype [MediaError.errorTypes [errNum]] = Fehlernummer;
}
//jsdocs zum Instanz/statische Mitglieder wurden oben hinzugefügt
//Instanzmethoden verwenden `#` und statische Methoden verwenden ` . `
/**
* W3C-Fehlercode für jeden benutzerdefinierten Fehler.
*
* @member Medienfehler #MEDIA_ERR_CUSTOM
* @Konstante {Zahl}
* @Standard 0
* /
/**
* W3C-Fehlercode für jeden benutzerdefinierten Fehler.
*
* @member MediaError.MEDIA_ERR_CUSTOM
* @Konstante {Zahl}
* @Standard 0
* /
/**
* W3C-Fehlercode für Medienfehler abgebrochen.
*
* @member Medienfehler #MEDIA_ERR_ABORTED
* @Konstante {Zahl}
* @Standard 1
* /
/**
* W3C-Fehlercode für Medienfehler abgebrochen.
*
* @member MediaError.MEDIA_ERR_ABORTED
* @Konstante {Zahl}
* @Standard 1
* /
/**
* W3C-Fehlercode für jeden Netzwerkfehler.
*
* @member Medienfehler #MEDIA_ERR_NETWORK
* @Konstante {Zahl}
* @Standard 2
* /
/**
* W3C-Fehlercode für jeden Netzwerkfehler.
*
* @member MediaError.media_err_network
* @Konstante {Zahl}
* @Standard 2
* /
/**
* W3C-Fehlercode für jeden Dekodierungsfehler.
*
* @member Medienfehler #MEDIA_ERR_DECODE
* @Konstante {Zahl}
* @Standard 3
* /
/**
* W3C-Fehlercode für jeden Dekodierungsfehler.
*
* @member MediaError.media_err_decode
* @Konstante {Zahl}
* @Standard 3
* /
/**
* W3C-Fehlercode für den Fall, dass eine Quelle nicht unterstützt wird.
*
* @member Medienfehler #MEDIA_ERR_SRC_NOT_SUPPORTED
* @Konstante {Zahl}
* @Standard 4
* /
/**
* W3C-Fehlercode für den Fall, dass eine Quelle nicht unterstützt wird.
*
* @member MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED
* @Konstante {Zahl}
* @Standard 4
* /
/**
* W3C-Fehlercode für den Fall, dass eine Quelle verschlüsselt ist.
*
* @member Medienfehler #MEDIA_ERR_ENCRYPTED
* @Konstante {Zahl}
* @Standard 5
* /
/**
* W3C-Fehlercode für den Fall, dass eine Quelle verschlüsselt ist.
*
* @member MediaError.MEDIA_ERR_ENCRYPTED
* @Konstante {Zahl}
* @Standard 5
* /
exportiere den Standard-MediaError;