Wie kann ich some.flv
oder some.avi
oder some.wmv
mit FFmpeg konvertieren, um sicherzustellen, dass dieses Video in JW Player abgespielt und gesucht werden kann?
Dies ist eine Antwort auf den letzten Kommentar von dir @abrahab.
Sie müssen keine Datei mp4box
, um sie per Pseudo-Streaming über Nginx zu übertragen. Das MP4-Streaming-Modul erledigt dies unabhängig von der Positionierung der Moov-Atome (mp4box
verschiebt das Moov-Atom zum Dateianfang).
Verwenden Sie für den 500-Server-Fehler die Option "-frag" für mp4box? MP4-Streaming-Modul kann keine fragmentierten MP4-Dateien lesen. mp4box
wird zum Pseudo-Streaming gut verwendet, um die Videos für eine bessere Suche zu verschachteln. Moov Atom Shifting ist ein zusätzlicher Vorteil.
Ich mache das immer mit mp4box
einer FFmpeg-kodierten Datei
MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4
Dies verschachtelt die MP4-Datei standardmäßig in 500 Millisekunden.
Im Allgemeinen möchten Sie x264-Videos in einem MP4-Container erstellen. Diese Option wird grundsätzlich von jedem Gerät und Browser unterstützt.
Folgendes sollte ausreichen. Stellen Sie sicher, dass Sie die Optionen für Eingabenamen und CRF ersetzen. Letzteres legt die Qualität fest, wobei die normalen Werte zwischen 19 und 25 liegen. Niedriger bedeutet bessere Qualität, aber auch höhere Bitrate:
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -movflags faststart output.mp4
Sie können auch Handbremse zum Codieren verwenden, wenn Sie die GUI-Methode mögen.
faststart
Verschieben Sie nun das AtomMOOVdes MP4-Containers an den Anfang. Dieses Atom (im Wesentlichen eine Dateneinheit im MP4-Container) enthält wichtige Metadaten zu den Video-/Audiostreams selbst. -movflags faststart
sollte genau das tun.
Wenn Ihre FFmpeg-Version diese Option nicht bietet, sollten Sie ein Upgrade in Betracht ziehen. Wenn Sie kein Upgrade durchführen können, können Sie dasselbe mit einem der folgenden Tools erreichen:
QTIndexSwapper , eine Adobe AIR-Anwendung
MP4Box , frei und Open Source, mit einem Befehl ähnlich dem folgenden, in dem Sie das Intervall ändern können (hier 500):
mp4box -inter 500 input.mp4
qt-faststart in Python , das überall dort funktioniert, wo Python installiert ist.
qtfaststart input.mp4
Das ist alles.
Zum Streamen möchten Sie jetzt möglicherweise die Bitrate einschränken, um innerhalb bestimmter Grenzen zu bleiben. Sie können mehr darüber in meinem Blog-Beitrag über Ratenkontrollmethoden lesen.
Wenn Sie beispielsweise -maxrate 2M -bufsize 2M
zu den Kodierungsoptionen hinzufügen, begrenzen Sie die Kodierung auf 2 Mbit/s, was für 720p-Video ausreichend sein kann. Die erforderliche Bitrate hängt natürlich davon ab, wie komplex der Inhalt ist. Dies erfordert einige Versuche und Irrtümer.
Sie können ein nicht-streambares AVI oder MP4 einfach konvertieren, auch ohne alles neu zu kodieren:
ffmpeg -i INPUT.mp4 -c copy -movflags faststart STREAMABLE_OUTPUT.mp4
Es ist nicht notwendig, irgendetwas neu zu codieren, da nur das Moov-Atom bewegt werden muss.