Gibt es Nachteile, wenn Sie immer den Faststart-Parameter -movflags verwenden?

10

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 faststartOption angeben . Ich frage mich, ob es einen Nachteil gibt, diesen Parameter immer zu verwenden.

Sonne
quelle

Antworten:

14

Abhängig von der Größe Ihrer Eingabe kann es einige Zeit dauern, bis der zweite Durchgang ausgeführt ist, um das moovAtom an den Anfang der Datei zu verschieben.

Ohne -movflags +faststart

ffmpeg -benchmark -i input.mkv output.mp4
rtime=0m42.701s

Mit -movflags +faststart

ffmpeg -benchmark -i input.mkv -movflags +faststart output.mp4
rtime=1m4.036s
llogan
quelle
Ich bemerkte einen zweiten Durchgang, aber ich dachte nicht, dass es so lange dauern würde. Gut zu wissen.
So
@ sunk818 Die Zeit hängt natürlich von Ihrer Eingabe ab.
Llogan
In der neuesten Version von ffmpeg (3.x + oder 4.x +) ist die korrekte Syntax -movflags faststarttatsächlich (ohne +Vorzeichen). Siehe: ffmpeg.org/ffmpeg-formats.html#Options-8
Siu Ching Pong -Asuka Kenji-
12

Ich denke, dieser Thread braucht ein Update. Auf dem neuesten ffmpeg (3.4.1) bekomme ich:

$ time ffmpeg -y -f lavfi -i nullsrc=s=hd720:d=600 -preset ultrafast out.mp4
real 0m26.578s
$ time ffmpeg -y -f lavfi -i nullsrc=s=hd720:d=600 -movflags +faststart -preset ultrafast out.mp4
real 0m26.849s

Gleiche Ergebnisse. Versuchen Sie es jetzt mit einem echten Video:

$ time ffmpeg -y -i Sintel.2010.1080p.mp4 -preset:v ultrafast out.mp4
real 3m38.829s
$ time ffmpeg -y -i Sintel.2010.1080p.mp4 -preset:v ultrafast -movflags +faststart out.mp4
real 3m43.674s

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.

Alexander Svetkin
quelle
Einverstanden. Ich habe einen 50-MB-Eingang (mjpeg-Stream), der mit h264 in mp4 codiert wird. Ohne Schnellstart real 0m30.676s. Mit Schnellstart real 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.
Konfetti
3

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.

thomasrutter
quelle