Es scheint, dass viele Websites wie YouTube moov atom am Anfang der Datei vorschlagen (Fast Start) .
ffmpeg macht dies nicht zu einem Standardverhalten, aber Sie können es mit der -movflags faststart
Option angeben . Ich frage mich, ob es einen Nachteil gibt, diesen Parameter immer zu verwenden.
-movflags faststart
tatsächlich (ohne+
Vorzeichen). Siehe: ffmpeg.org/ffmpeg-formats.html#Options-8+
oder nicht .Ich denke, dieser Thread braucht ein Update. Auf dem neuesten ffmpeg (3.4.1) bekomme ich:
Gleiche Ergebnisse. Versuchen Sie es jetzt mit einem echten Video:
Etwa 2% Unterschied, das könnte nur Lärm sein. Beachten Sie auch, dass die Phase "Starten des zweiten Durchgangs: Verschieben des Moov-Atoms an den Anfang der Datei" für eine 600-MB-Ausgabedatei nicht länger als ein paar Sekunden dauerte.
quelle
real 0m30.676s
. Mit Schnellstartreal 0m30.599s
. Meine ffmpeg-Version ist 4.2. Ich denke, man kann mit Sicherheit sagen, dass dies keinen großen Unterschied mehr macht, wenn überhaupt.Wie Sie vielleicht bereits wissen, sind die Informationen, die zum Schreiben des Moov-Atoms oder sogar zum Erkennen der Größe des Moov-Atoms erforderlich sind, erst verfügbar, nachdem die gesamte Datei verarbeitet wurde.
Die Nachteile, das Moov-Atom am Anfang zu haben, und der Grund, warum viele Tools dies nicht standardmäßig tun, hängen daher alle mit dieser Tatsache zusammen.
Wenn keines der folgenden Probleme für Sie ein Problem darstellt, können Sie den Moov jederzeit an den Start setzen und haben keine Nachteile.
Ein zweiter Durchgang ist erforderlich. Dies verdoppelt möglicherweise die Anzahl der Festplatten-E / A, da Daten von der Eingabe gelesen, auf die Festplatte geschrieben, dann von der Festplatte gelesen und neu geschrieben werden müssen. Dies kann unpraktisch sein, wenn die E / A-Geschwindigkeit sehr langsam ist, z. B. beim Schreiben auf ein Netzwerklaufwerk.
Beachten Sie, dass einige Software dies optimieren kann, indem sie die erforderliche Größe des Moov-Atoms kurz vor Beginn der Codierung grob schätzt und zu Beginn der Ausgabe so viel Speicherplatz plus eine Fehlerquote reserviert. In vielen Fällen würde dies die Notwendigkeit beseitigen, den Rest der Datei zurückzulesen und neu zu schreiben, und stattdessen versuchen, nur einen kleinen Teil zu starten und zu überschreiben, was etwas mehr Platz für das Moov-Atom als nötig kostet.
Die Ausgabe kann nicht direkt an einen anderen Befehl weitergeleitet oder an stdout gesendet werden, da diese Mechanismen keine Möglichkeit haben, einen zweiten Durchgang durchzuführen.
quelle