Google Chrome möchte mp4 nicht mit mediaelement.js abspielen

8

Ich verwende das neueste mediaelement.js auf meiner Website, um HTML5-Video zu spielen. In Google Chrome ist etwas seltsam. Er spielt ein Video, möchte aber das andere Video nicht im mp4-Format abspielen und greift nicht auf webm zurück. Beide Videos wurden mit ffmpeg mit diesem Parameter konvertiert:

%Vor%

Außerdem wird das erste Video normal wiedergegeben, ohne die Bibliothek mediaelement.js im mp4-Format zu verwenden, und das zweite Video wird in das Webm-Format umgewandelt.

Beispielseiten von http://random.net.ua/video_test/ :

  • http://random.net.ua/video_test/video1.html (ok)
  • http://random.net.ua/video_test/video2.html (ok)
  • http://random.net.ua/video_test/video1-mediaelement.html (ok)
  • http://random.net.ua/video_test/video2-mediaelement.html (fehlgeschlagen)
rndm 09.07.2012, 10:16
quelle

3 Antworten

14

Wenn Sie versuchen, $("video").get(0).currentSrc oder gleichwertig in einer Konsole zu tun, werden Sie sehen, dass die non-mediaelement.js-Version das Webm-Video spielt, welches Chrome gut spielen kann, aber wenn Sie dasselbe in der mediaelement.js Version versucht es, das MP4 zu spielen.

Wenn Sie sich dann $("video").get(0).error ansehen, sehen Sie, dass Sie einen MediaError haben. Überprüfen Sie das und Sie sehen, dass es "Code 4" hat. Laut Spezifikation ist das MEDIA_ERR_SRC_NOT_SUPPORTED.

Probieren Sie jetzt $("video").get(0).canPlayType("video/mp4") - es gibt "maybe" zurück.

Das ist jetzt rätselhaft, aber vielleicht meldet Chrome "vielleicht", weil es einige MP4-Profile abspielen kann, aber keine anderen. Unabhängig von den Gründen würde ich persönlich Mediaelement.js bevorzugen, um "vielleicht" als "nein" zu behandeln und das Flash-Fallback zu starten, wenn keiner der anderen Quellentypen nativ spielbar ist. Es ist einfach genug, um es zu patchen. Ich habe genau das auf einer Gabel gemacht, die ich gerade gemacht habe - sehen Sie sich Ссылка

Ich hoffe, das hilft. Lass es mich wissen, wenn es für dich funktioniert - ich hoffe, dass es auf dem MP4 aufgeben wird und das Webm stattdessen in deinem Fall versuchen wird. In meinem eigenen Projekt (Debugging, das mich zu dieser Frage gebracht hat) habe ich nur eine MP4-Datei, und der Flash-Fallback übernimmt diesen Platz.

    
tremby 01.12.2012, 00:28
quelle
0

über die Media Source API ...

Ich weiß, das bezieht sich nicht auf den Fallback oben beantwortet, aber ich denke, dass es wichtig ist, darauf hinzuweisen, dass Fallback zu Webm nicht erforderlich ist, wenn die MP4-Videos entsprechend codiert sind.

MP4-Video kann auch codiert werden, um die Media Source API , die das Herunterladen von Chunks ermöglicht, die das Video verfügbar machen, bevor die gesamte Datei heruntergeladen wurde.

Die MP4-Implementierung wird häufiger verwendet und erfordert in den meisten Browsern kein Webm-Fallback.

Ein Diagramm, das die Videoformatunterstützung für die Media Source-API hier .

FFmpeg tut dies und seine Opensource.

Siehe hier: ( Kodieren Sie h.264- und WebM-Videos für MediaElement.js mit FFmpeg ) unten:

Chris Coulson schreibt: 14. Juni 2012 (Windows)

Ich habe vor Kurzem einen Video-Player zur Website eines Kunden hinzugefügt. Ich fand John Dyer's MediaElement.js eine ausgezeichnete Lösung dafür. Solange Sie sowohl eine h.264- als auch eine WebM-codierte Version des Videos bereitstellen, wird es nativ in fast allen Browsern wiedergegeben. Bei nicht unterstützten Browsern wird auf Flash zurückgegriffen.

Die Videos des Kunden waren alle WMVs, also müssten sie in h.264 und WebM konvertiert werden. Glücklicherweise lieferte John auch einige Anweisungen zum Kodieren dieser Formate mit FFmpeg:

Ссылка

Leider hat sich FFmpeg seit der Veröffentlichung der Befehle geändert, daher waren einige geringfügige Änderungen erforderlich. Ich habe auch einige Änderungen vorgenommen, so dass das Seitenverhältnis des Videos beibehalten wurde und das Video mit einer niedrigeren Bitrate und einer höheren Geschwindigkeit codiert wurde. Außerdem waren einige der Videos, die konvertiert wurden, wirklich kurz und würden vor der 10-Sekunden-Marke, an der das Thumbnail erstellt wurde, fertig sein. Um dieses Problem zu lösen, habe ich das Skript modifiziert, um zu versuchen, das Thumbnail bei den Markierungen 1, 2, 3, 5 und 10 Sekunden zu erfassen, wobei jede erfolgreiche Aufnahme die letzte überschreibt.

Hier ist die aktualisierte Batch-Datei, die ich verwendet habe:

%Vor%

Ich habe auch eine separate Batch-Datei erstellt, die über alle WMVs in einem bestimmten Verzeichnis iteriert und den Encoder-Batch für jede Datei ausführt:

%Vor%

Faron Coder sagt: am 3. September 2014 um 18:52 Uhr (* nix)

Hallo -

Für diejenigen, die Unix-basierte ffmpeg verwenden - hier ist der Code des Autors (oben) im Namen von Unix.

%Vor%

Ich hoffe, das hilft.

    
vivvvi 14.09.2014 03:41
quelle
-1

Hier ist eine einfache Lösung, die für mich funktioniert hat. Mein Problem war, MP4-Videodateien auf Chrome 29 abzuspielen. Ich fand diese Lösung, nachdem ich einige ähnliche Threads im WWW durchforstet und einiges mit Erweiterungen usw. probiert hatte. Das hat funktioniert:

Geben Sie chrome: flags in die Chrome-Adressleiste ein Auf dieser Seite suchen Sie nach "Hardware"

Aktivieren Sie "hardwarebeschleunigte Videodecodierung". Dann starte es neu

Damit können Sie den mp4 auf chrome abspielen - und in Chromecast casten, wenn Sie das versuchen.

    
Camilo 23.09.2013 18:56
quelle