Par défaut, ffmpeg envoie de nombreux messages à stderr: date de construction, mode de construction, codecs, etc., etc., etc.
Comment puis-je le rendre plus silencieux?
J'ai essayé -v 0
(et -v 10
puisque la documentation coyly dit Set the logging verbosity level.
sans indiquer la plage des entrées) - toujours pas silencieux.
J'ai essayé -loglevel quiet
- toujours pas silencieux.
Je devrais mentionner, je cherche "plus silencieux", pas "pas de sortie jamais". S'il y a une erreur, je veux la voir, mais je n'ai pas besoin d'entendre parler de la configuration de ffmpeg chaque fois. unique. temps.
Je ne l'ai pas testé, mais je vois une option à faire dans la page de manuel:
ffmpeg -loglevel panic [rest of your ffmpeg stuff]
Doit faire en sorte que seules les erreurs sérieuses soient consignées, en théorie
ffmpeg -hide_banner -loglevel panic
Ceci est mentionné dans un commentaire sous la réponse actuelle.
L’option -hide_banner
a été introduite fin 2013 - https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2013-December/152349.html )
Ici vous avez les niveaux de log du code source (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 },
};
J'ai utilisé avec succès les éléments suivants (version la plus récente de FFMPEG au moment de la rédaction):
-nostats -loglevel 0
Ensuite, il est absolument silencieux dans mon scénario d'utilisation.
ffmpeg -loglevel error [other commands]
Cela cache la bannière et affiche uniquement les erreurs. Utilisez -loglevel warning
si vous souhaitez voir les avertissements.
Testé dans Ffmpeg 3.0.2.
De la documentation :
-loglevel [répéter +] loglevel | -v [répéter +] loglevel
Définissez le niveau de journalisation utilisé par la bibliothèque. L'ajout de "repeat +" indique que la sortie de journal répétée ne doit pas être compressée sur la première ligne et que la ligne "Dernier message répété n fois" sera omise. "répéter" peut également être utilisé seul. Si "repeat" est utilisé seul et sans définition de niveau de journalisation préalable, le niveau de journalisation par défaut sera utilisé. Si plusieurs paramètres de niveau de journalisation sont spécifiés, l’utilisation de 'repeat' ne changera pas le niveau de journalisation. loglevel est une chaîne ou un nombre contenant l'une des valeurs suivantes:
'quiet, -8'
Ne rien montrer du tout; soit silencieux.
'panique, 0'
N'afficher que les erreurs fatales susceptibles d'entraîner le blocage du processus, telles que l'affirmation d'un échec. Ce n'est actuellement pas utilisé pour rien.
'fatal, 8'
Afficher uniquement les erreurs fatales. Ce sont des erreurs après lesquelles le processus ne peut absolument plus continuer après.
'erreur, 16'
Affiche toutes les erreurs, y compris celles qui peuvent être récupérées.
'warning, 24'
Afficher tous les avertissements et les erreurs. Tout message lié à des événements éventuellement incorrects ou inattendus sera affiché.
'info, 32'
Afficher des messages informatifs pendant le traitement. Cela s'ajoute aux avertissements et aux erreurs. Ceci est la valeur par défault.
'verbose, 40'
Identique à
info
, sauf plus détaillé.'debug, 48'
Tout afficher, y compris les informations de débogage.
'trace, 56'
Par défaut, le programme se connecte à stderr. Si la coloration est prise en charge par le terminal, les couleurs sont utilisées pour marquer les erreurs et les avertissements. La coloration du journal peut être désactivée en définissant la variable d'environnement
AV_LOG_FORCE_NOCOLOR
ouNO_COLOR
, ou peut être forcée en définissant la variable d'environnementAV_LOG_FORCE_COLOR
. L'utilisation de la variable d'environnementNO_COLOR
est obsolète et sera abandonnée dans une version suivante de FFmpeg.
Ce qui suit a fonctionné pour moi sur macOS:
ffmpeg -v quiet
ou seulement voir les progrès:
ffmpeg -v quiet -stats
Vous pouvez diriger stderr via grep. Par exemple, si vous souhaitez supprimer les informations de configuration, vous pouvez le faire comme suit:
% ffmpeg -i infile.avi -s 640x480 outfile.avi >/dev/null 2>&1 | grep -v configuration: