¿Cómo puedo hacer que ffmpeg sea más silencioso / menos detallado?


117

Por defecto, ffmpeg envía una gran cantidad de mensajes a stderr: cuando está construido, cómo está construido, códecs, etc., etc.

¿Cómo puedo hacerlo más silencioso?

He intentado -v 0(y -v 10ya que la documentación acaba con timidez dice Set the logging verbosity level.sin ninguna indicación de lo que es la variedad de entradas) - Todavía no es tranquilo.

Lo he intentado -loglevel quiet, aún no callado.

Debo mencionar que estoy buscando "más silencioso", no "sin salida alguna vez". Si hay un error, quiero verlo, pero no necesito escuchar sobre la configuración de ffmpeg cada vez. soltero. hora.


14
ffmpeg es definitivamente uno de esos programas para desarrolladores, por tipo de programadores.
digitxp

1
Utilizar -loglevel quiet -stats.
287352

Alternativamente -loglevel error -stats, mostrará errores "incluidos los que se pueden recuperar" y el uso -statsgarantiza la impresión del progreso de codificación y la línea de estadísticas. Cambiar -loglevelde errora warninges un poco más detallado pero se adapta cómodamente a una página de terminal.
Mattst

Respuestas:



117

No lo he probado, pero veo una opción en la página del manual para hacer:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

Debería hacerlo de modo que solo se registren errores graves, en teoría


55
Incluso -loglevel panicpara mí, solo está reduciendo un poco la producción: todavía imprime información de versión, asignación de flujo, opciones de configuración (¡e incluso información de progreso!) ... ¿alguna idea? Puede que tenga que mencionar que es una versión autocompilada del último tronco de svn.
codeling

77
canalícelo al cubo de bits:> / dev / null 2> & 1
rogerdpack

2
@rogerdpack que funcionaría para la mayoría de los programas, pero ffmpeg pone toda su salida de texto en stderr, en lugar de stdout (lo hace para que pueda canalizar la salida del codificador a otros programas), por lo que redirigir stdout a / dev / null wouldn ' No hagas nada útil.
evilsoup

20
Usar -hide_bannerademás de un nivel de verbosidad reducido sería un buen compromiso.
Makaveli84

55
Además de todo lo que se ha dicho, -nostats deshabilitará la salida de progreso.
Ely

56

Aquí tiene los niveles de registro del código fuente (versión FFmpeg 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   },
    };

55
Aunque las URL tienden a cambiar con el tiempo, es bueno incluirlas también como fuente de su respuesta. Por ejemplo, en la actualidad esto está documentado en ffmpeg.org/ffmpeg.html#toc-Generic-options y el lector sabrá dónde buscar en los documentos, incluso si esta URL cambia.
Fr0zenFyr

19

He utilizado con éxito lo siguiente (la última versión de FFMPEG al momento de escribir):

-nostats -loglevel 0

Entonces es absolutamente silencioso en mi escenario de uso.


satisfecho con esta solución en ffmpeg 3.2
Bernhard Döbler

-nostatsera lo que estaba buscando Suprimirá la salida de progreso (por ejemplo, útil en un contexto no terminal).
jox

Lamentablemente, también -nostatsoculta la pancarta. ffmpeg necesita una -show_banneropción;)
mgutt

18
ffmpeg -loglevel error [other commands]

Esto oculta el banner y solo muestra errores. Úselo -loglevel warningsi desea ver advertencias.

Probado en Ffmpeg 3.0.2.

De la documentación :

-loglevel [repetir +] loglevel | -v [repetir +] loglevel

Establezca el nivel de registro utilizado por la biblioteca. Agregar "repetir +" indica que la salida de registro repetida no se debe comprimir a la primera línea y se omitirá la línea "Último mensaje repetido n veces". "repetir" también se puede usar solo. Si se utiliza "repetir" solo, y sin un nivel de registro anterior establecido, se utilizará el nivel de registro predeterminado. Si se proporcionan múltiples parámetros de nivel de registro, el uso de 'repetir' no cambiará el nivel de registro. loglevel es una cadena o un número que contiene uno de los siguientes valores:

'tranquilo, -8'

No mostrar nada en absoluto; guarda silencio

'pánico, 0'

Solo muestre errores fatales que podrían provocar que el proceso se bloquee, como por ejemplo una falla de afirmación. Esto no se usa actualmente para nada.

'fatal, 8'

Solo muestra errores fatales. Estos son errores después de los cuales el proceso no puede continuar después.

'error, 16'

Muestra todos los errores, incluidos los que se pueden recuperar.

'advertencia, 24'

Mostrar todas las advertencias y errores. Se mostrará cualquier mensaje relacionado con eventos posiblemente incorrectos o inesperados.

'información, 32'

Mostrar mensajes informativos durante el procesamiento. Esto se suma a las advertencias y errores. Este es el valor predeterminado.

'detallado, 40'

Igual que info, excepto más detallado.

'depuración, 48'

Mostrar todo, incluida la información de depuración.

'rastro, 56'

Por defecto, el programa registra en stderr, si el terminal admite la coloración, los colores se utilizan para marcar errores y advertencias. La coloración del registro se puede desactivar configurando la variable de entorno AV_LOG_FORCE_NOCOLORo NO_COLOR, o se puede forzar la configuración de la variable de entorno AV_LOG_FORCE_COLOR. El uso de la variable de entorno NO_COLORestá en desuso y se eliminará en la siguiente versión de FFmpeg.


5

Lo siguiente funcionó para mí en macOS:

ffmpeg -v quiet

o solo para ver el progreso:

ffmpeg -v quiet -stats

Eso es exactamente lo que estaba buscando. Estoy usando ffmpeg en un script y necesito ver que funciona, pero no necesito toda la información sobre las secuencias de entrada y salida, etc.
stib

3

Puede canalizar stderr a través de grep. Por ejemplo, si desea eliminar la información de configuración, puede hacerlo así:

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

Creo que puede ser necesario ffmpeg … 2>&1 >/dev/null | grep ….
Scott

0

Esto es un poco barato, pero anexar >/dev/null 2>&1es una forma segura de mantener el ffmpeg en silencio en el shell.

Ejemplo

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

Más información sobre la salida de bash


14
Excepto que ffmpeg está un paso por delante de usted y genera información de configuración y errores reales en stderr.
blahdiblah

0

ffmpeg -loglevel error -hide_banner -nostats

Solo los errores, nada más.

Personalmente, esto me gusta más;

ffmpeg -loglevel warning -hide_banner -stats

Solo da advertencias y errores, pero también muestra el progreso del trabajo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.