2016-05-06 8 views
7

In den letzten Tagen haben wir festgestellt, dass unsere Videos beenden Streaming ohne ein Problem mit MediaElement.js Version 2.11.3 und Chrome Version 50.0.2661.94 (64-bit)Videos kein Streaming länger mit mediaelement.js in Chrome

Videos noch in Firefox und Safari spielen.

Der Fehler, den wir in den Chrome Dev-Tools erhalten ist:

Uncaught (in promise) DOMException: The element has no supported sources.

Der Aufschlag auf die gerenderte Seite sieht wie folgt aus:

<video height="150" poster="https://xxxxxxxxxx.cloudfront.net/123423_1_thumb.jpg" preload="auto" width="200" src="" hidden-source="https://xxxxxxx.cloudfront.net/123423_1_wm.webm"> 
    <object data="flashmediaelement.swf" height="150" type="application/x-shockwave-flash" width="200"> 
    <param name="movie" value="flashmediaelement.swf"> 
    <param name="flashvars" value="controls=true&amp;file=http://s38zby1czkz3d7.cloudfront.net/123423_1_wm.mp4"> 
    </object> 
</video> 

Hier sind einige Bilder der Fehler zu machen es ein wenig mehr klar:

enter image description here

Hier sind die Fehlermeldungen in der Konsole:

enter image description here

+1

Das gleiche Problem hier mit Chrome 51.0.2704.81 auf Samsung Galaxy Tab 4 – svassr

+0

Für was es wert ist, stieß ich auf diesen Fehler beim Umgang mit gemischten http/https Audio-Quellen. Meine Seite war https, aber meine Ressource wurde http serviert. Das Bereitstellen sowohl der Ressource als auch der Seite unter https behebt diesen Fehler. Ich sehe, dass es eine HTTP-MP4-Datei in Ihrem Code gibt, so dass das Problem sein könnte? –

+0

Es ist ein CORS-Problem. Siehe meine Antwort hier: http://stackoverflow.com/a/43434754/625745 –

Antwort

4

Das liegt daran, dass seit Chrome 50 ein Spiel() aufrufen, auf einem <video> oder ein <audio> Element gibt ein Versprechen. Wenn die Wiedergabe erfolgreich ist, ist das Versprechen erfüllt und wenn die Wiedergabe fehlschlägt, wird das Versprechen mit einer Fehlermeldung abgelehnt, die den Fehler erklärt.

Sie können einige Beispiele finden und weitere Informationen hier: https://developers.google.com/web/updates/2016/03/play-returns-promise?hl=en

+0

Interessante Informationen. Leider finde ich es irgendwie nicht relevant für den Fehler. Antwort unten bietet genaue Informationen über die Quelle des Problems, das ein Fehler in Chromium 50 ist, und nicht API-Änderung. – viskin

5

ich dieses Problem mit Chrom replizieren könnten 51. jedoch es dieses Problem tritt nicht mehr auftritt mit Chrome 53.

Leider habe ich gewesen Ich konnte keine leicht lesbare Bestätigung im Internet finden, dass dies ein bestätigter Bug für Chromium/Chrome war, der behoben wurde, aber nur Hinweise darauf, dass mehrere Personen Probleme mit Chrome/Chromium-Versionen berichteten. z.B. hier Videos no longer streaming with mediaelement.js in Chrome wo Google Chrome Developer auch auf diese interne Chrom-Mailingliste verweist, deren Inhalt aber ohne weitere Recherche eher kryptisch ist. Es scheint mit einem Schalter namens ENABLE_BROWSER_CDMS und der EME-Implementierung für die DRM-Unterstützung zusammenzuhängen, die nicht so funktionierte, wie sie sollte. https://groups.google.com/a/chromium.org/forum/#!topic/chromium-reviews/Qi4dLcKjcCM

+1

Deepak, das beantwortet eindeutig die Frage. In Chromium 50/51 ist das Medienelement gebrochen. Seit Chromium 52 ist das Problem behoben und der obige Code funktioniert. – viskin

+0

Danke viskin. Deepak: Ich habe versucht, meine Antwort mit Hinweisen auf das, was ich über das Problem weiß, zu erweitern.Da ich keine offizielle, leicht verständliche Fehlerbestätigung durch das Chromium-Team finden konnte und eher anekdotische Daten hatte, die die Vorstellung, dass das Medienelement in den Versionen 50/51 defekt war, intuitiv unterstützen würden, war ich ein bisschen defensiv, als ich hier meine Antwort formulierte . Und, ja, ich hätte tatsächlich einen Kommentar vorgezogen, anstatt eine Antwort schreiben zu müssen, aber es ist nicht meine Schuld, dass ich das nicht konnte. –

+0

Ich erhalte immer noch diesen Fehler in Chrome 55. Es scheint ein Standardfehler zu sein, wenn der Browser die Datei nicht verstehen kann. – VectorVortec

0

Es kann auch ein CORS-Problem sein. Setzen Sie media.crossOrigin = 'anonymous'; Und stellen Sie sicher, dass die Serverantwort den Header hat. Oder geben Sie anstelle des Sternchen-Platzhalters die Domäne der Website an, die vom Server auf das Video zugreifen darf.