Wie kann ich konvertieren some.flv
oder some.avi
oder some.wmv
mit FFmpeg sicher sein , dass dieses Video spielbar sein wird und seekable in JW Player?
quelle
Wie kann ich konvertieren some.flv
oder some.avi
oder some.wmv
mit FFmpeg sicher sein , dass dieses Video spielbar sein wird und seekable in JW Player?
Dies ist eine Antwort auf den letzten Kommentar von dir @abrahab.
Sie brauchen keine mp4box
Datei, 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. Gute Verwendung mp4box
für Pseudo-Streaming ist das Interleaven der Videos für eine bessere Suche. 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.
MP4Box -isma -inter 500 Myvideo.mp4
H.264 in MP4
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:
Sie können Handbrake auch zum Codieren verwenden, wenn Sie die GUI-Art mögen.
Mit der
faststart
OptionBewegen Sie nun das MOOV-Atom des 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):
qt-faststart in Python , das überall dort funktioniert, wo Python installiert ist.
Das ist alles.
Bitrate / Qualität steuern
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 Methoden zur Ratenkontrolle lesen .
Wenn Sie beispielsweise
-maxrate 2M -bufsize 2M
die Codierungsoptionen erweitern, begrenzen Sie die Codierung auf 2 Mbit / s, was für 720p-Videos ausreichend sein kann. Die erforderliche Bitrate hängt natürlich davon ab, wie komplex der Inhalt ist. Dies erfordert einige Versuche und Irrtümer.quelle
ffmpeg -i 1.flv -vcodec libx264 -f mp4 -an -g 1 -f mp4 -g 30 -level 3 new.mp4
dannmp4box
und kann mp4 nicht suchen und nginx berichte500 internal server error
für startparameter mehr als das0
. wenn video codiert ohne-vcoded libx264
(default mp4 coder) alle arbeitsdatei (aber Qualität! krank!) :( (Entschuldigung, jetzt nicht erlaubt, Sie Antwort zu stimmen)-movflags faststart
genau das, was ich brauchteSie können ein nicht-streambares AVI oder MP4 einfach konvertieren, auch ohne alles neu zu kodieren:
Es ist nicht notwendig, irgendetwas neu zu codieren, da nur das Moov-Atom bewegt werden muss.
quelle
Sie können dies mit ffmpeg versuchen:
quelle
-acodec pcm_s16le
(error:)Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
. Ein guter Grund wie ein IETF-Entwurf, warum genau diese Parameter ausgewählt werden sollten, scheint ebenfalls zu fehlen.