Konvertieren Sie AVI in H.264, das in einem HTML5-Video-Tag funktioniert

6

Ich möchte ein vorhandenes Schwarzweiß-AVI in ein H.264-Video konvertieren, das in einem HTML5-Videotag funktioniert.

Ich benutze gerade diesen ffmpeg-Befehl:

ffmpeg -i file.avi -y -c:v libx264 file.h264

Dieser Befehl funktioniert bei mir nicht. Die H.264-Datei wird zwar erstellt, aber nur auf dem VLC-Player abgespielt.

SF Developer
quelle

Antworten:

15

.h264 ist nur ein roher H.264-Bytestream. Das sind nur Videoinhalte, die von anspruchsvollen Playern wiedergegeben werden können. In der Regel möchten Sie jedoch alles in ein Containerformat wie MPEG-4 Part 14 ("MP4") umwandeln.

Führen Sie also Folgendes aus:

ffmpeg -i file.avi -c:v libx264 -pix_fmt yuv420p file.mp4

Für den progressiven HTML5-Download möchten Sie möglicherweise die moov Atom des MP4-Containers an den Anfang der Datei, was eine sofortige Wiedergabe ermöglicht:

ffmpeg -i file.avi -c:v libx264 -pix_fmt yuv420p -movflags faststart file.mp4

Das könnte Sie interessieren: Was ist ein Codec (z. B. DivX?) Und wie unterscheidet er sich von einem Dateiformat (z. B. MPG)?

slhck
quelle
Die MP4-Ausgabe kann weder auf einem HTML5-Videotag noch auf Windows Media Player ausgeführt werden. Wenn ich Ihren Befehl ausführe, wird die gelbe Meldung "Veraltetes Pixelformat verwendet, stellen Sie sicher, dass Sie den Bereich korrekt eingestellt haben. Kein Pixelformat angegeben, yuvj444p für die h.264-Codierung ausgewählt. Verwenden Sie -pix_fmt yuv420p .., das ich und verwendet habe Jetzt kann ich das Video auf einem HTML5-Video-Tag sehen.
SF Developer
Ja, deshalb haben sie die Botschaft dort. Stellen Sie in Zukunft auch die vollständige Befehlszeilenausgabe Ihrer ffmpeg-Befehle bereit, nicht nur den Befehl selbst. Dann hätte ich Ihnen wahrscheinlich gesagt, dass Sie das Pixelformat aufgrund der nicht standardmäßigen Eingabe ändern müssen.
slhck
Mein aktuelles Szenario ist folgendes: Das Video wird auf einem lokalen Client-Computer erstellt und für Komprimierung, Qualität und Größe in h264 konvertiert (da ich es über eine API auf den Server hochladen muss). Das 70Mg avi wird zu 100K h264-Video im Vergleich zu einem 1MG mp4 (aus Gründen des Uploads ist es also gut, es zuerst als h264 und dann auf dem Server als endgültiges mp4 zu konvertieren). Ich frage mich, ob der Befehl -i file.avi -y -c: v libx264 file.h264, den ich auf dem Client ausgeführt habe, anders sein sollte.
SF Developer
Der MP4-Container verursacht nur einen Mehraufwand von wenigen Prozent, nicht 100 KB für das H.264-Video und 1 MB für dasselbe Video in einem Container. Ich denke, du machst etwas falsch. Codieren Sie alles in MP4 - Sie können die Dateien anschließend viel einfacher handhaben.
slhck
Ich werde das versuchen ... danke für die Hilfe. und ja, ich werde das nächste Mal die gesamte Ausgabe hochladen. Sehr geschätzt !!
SF Developer