MediaElement.js - Flash-Video wird nicht bis vollständig geladen abgespielt

8

Ich habe ein Problem mit MediaElement.js (meinem Flash-Videoplayer), das meine .m4V-Videodateien (codiert mit ffmpeg) nicht wiedergibt, bis das Video vollständig geladen ist.

Ich habe das mit verschiedenen Videodateien von Drittanbietern getestet, die scheinbar sofort abgespielt werden, bevor sie vollständig geladen sind. Nur meine Dateien nicht: (

Wenn sie mit der html5-Videolösung abgespielt werden, spielen sie sofort, nur nicht auf dem Flash-Fallback.

Könnte das mit den Einstellungen zu tun haben, unter denen das Video kodiert wird? Ich sehe keinen anderen Grund.

CODE:

%Vor%

Wie Sie sehen können, gebe ich keine Option an, der Player hat die Standardeinstellungen.

Hoffe, jemand hat das schon früher angesprochen und kann mir helfen!

    
wilsonpage 20.02.2011, 18:09
quelle

4 Antworten

10

Da Sie Ihre eigenen Videos kodieren und FFmpeg verwenden, empfehle ich, 'qt-faststart' zu verwenden.

Dies ist ein nützliches Werkzeug in FFmpeg, das eine Datei mit H.264-Video neu anordnet, "so dass das Moov-Atom vor den Daten liegt und somit das Streaming im Netzwerk erleichtert". Grundsätzlich können Web-Filme abgespielt werden, bevor sie vollständig heruntergeladen werden.

Aktivieren Sie es mit dem folgenden ffmpeg-Verzeichnis:

%Vor%

Verwendung (nach Ihrer ffmpeg-Codierung):

%Vor%

Dadurch sollte Ihr Player das Video abspielen können, während es noch heruntergeladen wird.

    
Kit 22.02.2011, 18:25
quelle
6

Flash kann MP4s nicht immer abspielen, wenn sie nicht auf die gewünschte Weise indiziert sind.

Um Ihre Datei zu reparieren, laden Sie einfach folgendes herunter: QTIndexSwapper

    
John Dyer 22.02.2011 02:54
quelle
2

Ich habe versucht qt-faststart mit meinen eigenen MP4 (h264 + AAC) kodierten Dateien und erhielt immer eine " letzte Atom in der Datei war kein Moov Atom " Fehlermeldung (und keine Ausgabedatei) . Ich nahm dann an, dass meine Akten in Ordnung waren, und suchte nach dem Problem elderwere. Nach stundenlangen Tests erwies sich meine Annahme als falsch - tatsächlich scheint es so, als hätten meine Dateien überhaupt kein Moov-Atom, weder am Anfang noch am Ende!

Um dies erfolgreich zu beheben, habe ich zuerst ffmpeg verwendet, um die Datei zu regenerieren - das heißt, die ursprünglichen h264 + AAC-Spuren in eine neue MP4-Datei zu migrieren, ohne sie neu zu codieren:

%Vor%

Danach sollte die neue Datei am Ende ihr eigenes moov-Atom haben. So können Sie jetzt qt-faststart verwenden, um es an den Anfang zu verschieben, wie Kit in seiner Antwort erklärt:

%Vor%

Danach spielt mediaelement alle meine Videos direkt nach dem Klick auf den Play Button ab, wenn die Datei heruntergeladen wird! :)

Wenn Ihr Problem ist, dass Sie bereits alle Ihre Dateien auf einer Youtube-ähnlichen Seite haben, ist Ihr Hosting Linux-basiert, ffmpeg ist nicht da und Sie können es nicht selbst kompilieren, Sie finden es nützlich, einen statischen Build von zu bekommen ffmpeg. Sie können das hier finden:

Ссылка (32 Bit) oder hier: Ссылка (64-Bit)

Leider gab es auf dem 32-Bit-Build, den ich benutzte, keinen qt-faststart, weder als Binärcode noch als Quellcode. In diesem Fall können Sie es von ffmpeg SVN herunterladen und es direkt mit gcc kompilieren. Ich habe es erfolgreich in meinem Ultra-el-cheapo Shared Hosting gemacht. Es scheint keine Build-Abhängigkeiten zu haben. Oder Sie können sogar versuchen, meine eigene qt-faststart binäre Version und sehen, ob es für Sie funktioniert.

BEARBEITEN: Ich habe gerade festgestellt, dass in neueren Versionen qt-faststart überhaupt nicht benötigt wird. Sie können direkt mit ffmpeg mit der folgenden Option codieren:

%Vor%     
Pere 15.03.2013 19:35
quelle
1

Ich wollte ein wenig über John Dyers Kommentar erweitern und sagen, dass QTIndexSwapper nicht nur für die Flash -Fallback- / Fallfoward-Funktionalität von MediaElement.js geeignet ist, sondern auch für den Nicht-Flash-Player.

Das Problem, das ich hatte, war im Nicht-Flash-Player. Meine .mp4-Datei musste das komplette Video laden, bevor es zu spielen begann (ich habe die Flash-Version erst überprüft, nachdem ich es ohne Flash hatte) QTIndexSwapper hat das Problem gelöst.

Ich wollte darauf hinweisen, als ich zum ersten Mal den Kommentar gelesen habe, dachte ich, dass es nur auf Flash zutrifft und habe es nicht sofort versucht. Nicht, dass ich etwas von John Dyer wegnehme, da es sein Kommentar war, der am Ende mein Problem gelöst hat, ich wollte nur hinzufügen, dass hoffentlich andere meinen Fehler nicht machen.

Wenn jemand interessiert ist, habe ich einen Blogbeitrag zu diesem Problem und über eine PHP-Klasse, die es auch beheben sollte.

    
Neil Nand 07.02.2013 17:08
quelle