Wie kann ich ffmpeg leiser / weniger wortreich machen?


117

Standardmäßig sendet ffmpeg eine ganze Menge Nachrichten an stderr: beim Erstellen, wie erstellt, Codecs usw. usw. usw.

Wie kann ich es leiser machen?

Ich habe es versucht -v 0(und -v 10da die Dokumentation nur verhalten sagt, Set the logging verbosity level.ohne Angabe des Eingangsbereichs) - immer noch nicht leise.

Ich habe es versucht -loglevel quiet- immer noch nicht leise.

Ich sollte erwähnen, ich suche "leiser", nicht "keine Ausgabe je". Wenn es einen Fehler gibt, möchte ich ihn sehen, aber ich muss nicht bei jedem Fehler etwas über die Konfiguration von ffmpeg erfahren. Single. Zeit.


14
ffmpeg ist definitiv eines dieser Programme für Entwickler.
digitxp

1
Verwenden Sie -loglevel quiet -stats.
Freitag,

Alternativ -loglevel error -statswerden Fehler angezeigt, von denen "auch solche, die behoben werden können", und durch die Verwendung wird -statssichergestellt, dass der Codierungsfortschritt und die Statistikzeile gedruckt werden. Der Wechsel -loglevelvon errornach warningist etwas ausführlicher, passt aber bequem auf eine Terminalseite.
9.

Antworten:



117

Ich habe es noch nicht ausprobiert, aber ich sehe eine Option in der Manpage:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

Sollte es so sein, werden theoretisch nur schwerwiegende Fehler protokolliert


5
Trotzdem wird -loglevel panicdie Ausgabe für mich nur geringfügig reduziert - es werden immer noch Versionsinformationen, Stream-Mapping, Konfigurationsoptionen (und sogar Fortschrittsinformationen!) Gedruckt. Ich muss vielleicht erwähnen, dass es sich um eine selbstkompilierte Version aus dem neuesten SVN-Trunk handelt.
Codeling

7
Leiten Sie es an den Bit-Eimer weiter:> / dev / null 2> & 1
Rogerdpack

2
@rogerdpack, das für die meisten Programme funktionieren würde, aber ffmpeg legt die gesamte Textausgabe auf stderr und nicht auf stdout (dies geschieht, damit Sie die Encoder-Ausgabe an andere Programme weiterleiten können). nichts Nützliches tun.
Evilsoup

20
Die Verwendung -hide_bannervon zusätzlich zu einem reduzierten Ausführlichkeitsgrad wäre ein guter Kompromiss.
Makaveli84

5
Zusätzlich zu allem, was gesagt wurde, deaktiviert -nostats die Fortschrittsausgabe.
Ely,

56

Hier haben Sie Loglevels aus dem Quellcode (FFmpeg Version 0.10.2.git)

const struct { const char *name; int level; } log_levels[] = {
        { "quiet"  , AV_LOG_QUIET   },
        { "panic"  , AV_LOG_PANIC   },
        { "fatal"  , AV_LOG_FATAL   },
        { "error"  , AV_LOG_ERROR   },
        { "warning", AV_LOG_WARNING },
        { "info"   , AV_LOG_INFO    },
        { "verbose", AV_LOG_VERBOSE },
        { "debug"  , AV_LOG_DEBUG   },
    };

5
Obwohl sich die URLs im Laufe der Zeit ändern, ist es gut, sie auch als Quelle Ihrer Antwort zu verwenden. Zum Beispiel ist dies derzeit unter ffmpeg.org/ffmpeg.html#toc-Generic-options dokumentiert, und der Leser weiß, wo er in Dokumenten suchen muss, selbst wenn sich diese URL ändert.
Fr0zenFyr

19

Ich habe mit Erfolg folgendes verwendet (neueste FFMPEG-Version zum Zeitpunkt des Schreibens):

-nostats -loglevel 0

Dann ist es in meinem Nutzungsszenario absolut ruhig.


zufrieden mit dieser Lösung in ffmpeg 3.2
Bernhard Döbler

-nostatswar das, wonach ich gesucht habe. Es unterdrückt die Fortschrittsausgabe (z. B. nützlich in einem nicht terminalen Kontext).
Jox

Versteckt -nostatsleider auch das Banner. ffmpeg braucht eine -show_bannerOption;)
mgutt

18
ffmpeg -loglevel error [other commands]

Dies verbirgt das Banner und zeigt nur Fehler an. Verwenden -loglevel warningSie diese Option, wenn Sie Warnungen anzeigen möchten.

Getestet in Ffmpeg 3.0.2.

Aus der Dokumentation :

-loglevel [Wiederholung +] loglevel | -v [Wiederholung +] loglevel

Legen Sie die von der Bibliothek verwendete Protokollierungsstufe fest. Das Hinzufügen von "repeat +" bedeutet, dass die wiederholte Protokollausgabe nicht in die erste Zeile komprimiert werden soll und die Zeile "Letzte Nachricht n-mal wiederholt" weggelassen wird. "repeat" kann auch alleine verwendet werden. Wenn "repeat" alleine verwendet wird und kein vorheriger loglevel festgelegt wurde, wird der Standard-loglevel verwendet. Wenn mehrere loglevel-Parameter angegeben sind, ändert die Verwendung von 'repeat' den loglevel nicht. loglevel ist eine Zeichenfolge oder eine Zahl, die einen der folgenden Werte enthält:

'leise, -8'

Zeig gar nichts; Schweigen.

"Panik, 0"

Zeigen Sie nur schwerwiegende Fehler an, die zum Absturz des Prozesses führen können, z. Dies wird derzeit für nichts verwendet.

'tödlich, 8'

Nur schwerwiegende Fehler anzeigen. Dies sind Fehler, nach denen der Prozess absolut nicht fortgesetzt werden kann.

'error, 16'

Zeigen Sie alle Fehler an, auch solche, die behoben werden können.

"Warnung, 24"

Alle Warnungen und Fehler anzeigen. Alle Meldungen zu möglicherweise falschen oder unerwarteten Ereignissen werden angezeigt.

'info, 32'

Zeigt während der Verarbeitung informative Meldungen an. Dies gilt zusätzlich zu Warnungen und Fehlern. Dies ist der Standardwert.

'verbose, 40'

Wie info, nur ausführlicher.

'debug, 48'

Alles anzeigen, einschließlich Debugging-Informationen.

'trace, 56'

Standardmäßig protokolliert das Programm in stderr. Wenn das Terminal die Farbgebung unterstützt, werden zur Kennzeichnung von Fehlern und Warnungen Farben verwendet. Die Protokollfarbe kann deaktiviert werden, indem die Umgebungsvariable AV_LOG_FORCE_NOCOLORoder festgelegt wird NO_COLOR, oder sie kann erzwungen werden, indem die Umgebungsvariable festgelegt wird AV_LOG_FORCE_COLOR. Die Verwendung der Umgebungsvariablen NO_COLORist veraltet und wird in einer folgenden FFmpeg-Version gelöscht.


5

Folgendes funktionierte für mich unter macOS:

ffmpeg -v quiet

oder um nur den Fortschritt zu sehen:

ffmpeg -v quiet -stats

Genau das habe ich gesucht. Ich verwende ffmpeg in einem Skript und muss
sicherstellen,

3

Sie können stderr durch grep leiten. Wenn Sie beispielsweise die Konfigurationsinformationen entfernen möchten, können Sie dies folgendermaßen tun:

% ffmpeg -i infile.avi -s 640x480 outfile.avi >/dev/null 2>&1 | grep -v configuration:

Ich glaube, das muss sein ffmpeg … 2>&1 >/dev/null | grep ….
Scott

0

Dies ist ein wenig billig, aber das Anhängen >/dev/null 2>&1ist ein sicherer Weg, um ffmpeg in der Shell stumm zu halten.

Beispiel

ffmpeg -f x11grab -y -r 24 -s 800x600 -i :0.0+1366,100 -f oss -i /dev/dsp3 -sameq ./out.avi >/dev/null 2>&1

Weitere Informationen zur Bash-Ausgabe


14
Nur dass ffmpeg Ihnen einen Schritt voraus ist und sowohl Konfigurationsinformationen als auch tatsächliche Fehler an stderr ausgibt .
Blahdiblah

0

ffmpeg -loglevel error -hide_banner -nostats

Nur die Fehler, sonst nichts.

Mir persönlich gefällt das am besten;

ffmpeg -loglevel warning -hide_banner -stats

Es gibt nur Warnungen und Fehler, zeigt aber auch den Arbeitsfortschritt an.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.