Como posso tornar o ffmpeg mais silencioso / menos detalhado?

117

Por padrão, o ffmpeg envia muitas mensagens para o stderr: quando construído, como construído, codecs, etc, etc, etc.

Como posso torná-lo mais silencioso?

Eu tentei -v 0(e -v 10desde que a documentação diz timidamente Set the logging verbosity level.sem nenhuma indicação de qual é o intervalo de entradas) - ainda não está quieto.

Eu tentei -loglevel quiet- ainda não está quieto.

Devo mencionar, estou procurando "mais silencioso", não "nenhuma saída de sempre". Se houver um erro, quero vê-lo, mas não preciso ouvir sobre a configuração do ffmpeg a cada. solteiro. Tempo.

blahdiblah
fonte
14
O ffmpeg é definitivamente um dos tipos de programas para desenvolvedores.
digitxp
1
Use -loglevel quiet -stats.
287352 12/05
Alternativamente, -loglevel error -statsserão mostrados erros "incluindo os que podem ser recuperados" e a utilização -statsgarante a impressão do progresso da codificação e da linha de estatísticas. Mudar -loglevelde errorpara warningé um pouco mais detalhado, mas cabe confortavelmente em uma página de terminal.
mattst 9/10

Respostas:

66

ffmpeg -hide_banner -loglevel panic

Isso é mencionado em um comentário abaixo da resposta atual.

A opção -hide_bannerfoi introduzida no final de 2013 - https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2013-December/152349.html )

Hugues
fonte
7
esta deve ser a resposta aceita
NineCattoRules
4
Melhor resposta, no entanto a opção -show-estandarte seria mais agradável do que escondê-lo
hetepeperfan
1
Talvez adicionar -nostatstambém?
Mikko Rantalainen
117

Ainda não testei, mas vejo uma opção na página do manual:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

Deve fazer com que apenas erros graves sejam registrados, em teoria

Alec
fonte
5
Mesmo com -loglevel panic, para mim, está apenas reduzindo um pouco a saída - ainda imprime informações de versão, mapeamento de fluxo, opções de configuração (e até informações de progresso!) ... alguma idéia? Talvez eu precise mencionar que é uma versão auto-compilada do último svn trunk.
Codeling
7
canalize-o para o balde de bits:> / dev / null 2> & 1
rogerdpack
2
@rogerdpack que funcionaria para a maioria dos programas, mas o ffmpeg coloca toda a sua saída de texto em stderr, em vez de stdout (faz isso para que você possa canalizar a saída do codificador para outros programas), redirecionando stdout para / dev / null wouldn ' Não faça nada de útil.
evilsoup
20
Usar -hide_banneralém de um nível de verbosidade reduzido seria um bom compromisso.
Makaveli84
5
Além de tudo o que foi dito, o -nostats desativará a saída do progresso.
Ely
56

Aqui você tem níveis de log do código fonte (FFmpeg versão 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   },
    };
surcho
fonte
5
Embora os URLs tendam a mudar com o tempo, é bom incluí-los também como fonte de sua resposta. Por exemplo, no momento, isso está documentado em ffmpeg.org/ffmpeg.html#toc-Generic-options e o reader saberá onde procurar nos documentos, mesmo que esse URL seja alterado.
Fr0zenFyr
19

Utilizei com sucesso o seguinte (versão mais recente do FFMPEG no momento da redação):

-nostats -loglevel 0

Então é absolutamente silencioso no meu cenário de uso.

Michael
fonte
satisfeito com esta solução no ffmpeg 3.2 #
Bernhard Döbler
-nostatsera o que eu estava procurando. Suprimirá a saída do progresso (por exemplo, útil em um contexto não terminal).
jox 12/07
Infelizmente, -nostatsoculta o banner também. ffmpeg precisa de uma -show_banneropção;)
mgutt
18
ffmpeg -loglevel error [other commands]

Isso oculta o banner e exibe apenas erros. Use -loglevel warningse você gostaria de ver avisos.

Testado no Ffmpeg 3.0.2.

A partir da documentação :

-loglevel [repita +] loglevel | -v [repete +] nível de log

Defina o nível de log usado pela biblioteca. A adição de "repeat +" indica que a saída repetida do log não deve ser compactada na primeira linha e a linha "Última mensagem repetida n vezes" será omitida. "repeat" também pode ser usado sozinho. Se "repeat" for usado sozinho e sem um conjunto de níveis de log anterior, o nível de log padrão será usado. Se vários parâmetros do nível de log forem fornecidos, o uso de 'repeat' não alterará o nível de log. loglevel é uma sequência ou um número que contém um dos seguintes valores:

'quieto, -8'

Não mostre nada; fique em silencio.

'pânico, 0'

Mostre apenas erros fatais que podem levar à falha do processo, como e afirmar falha. No momento, isso não é usado para nada.

'fatal, 8'

Mostrar apenas erros fatais. Estes são erros após os quais o processo absolutamente não pode continuar depois.

'erro, 16'

Mostrar todos os erros, incluindo os que podem ser recuperados.

'aviso, 24'

Mostrar todos os avisos e erros. Qualquer mensagem relacionada a eventos possivelmente incorretos ou inesperados será exibida.

'info, 32'

Mostrar mensagens informativas durante o processamento. Isso é um acréscimo a avisos e erros. Este é o valor padrão.

'detalhado, 40'

O mesmo que info, exceto mais detalhado.

'debug, 48'

Mostre tudo, incluindo informações de depuração.

'traço, 56'

Por padrão, o programa registra no stderr, se a coloração for suportada pelo terminal, cores serão usadas para marcar erros e avisos. A coloração do log pode ser desativada na configuração da variável de ambiente AV_LOG_FORCE_NOCOLORou NO_COLOR, ou pode ser forçada na configuração da variável de ambiente AV_LOG_FORCE_COLOR. O uso da variável de ambiente NO_COLORfoi descontinuado e será descartado na seguinte versão do FFmpeg.

qubodup
fonte
5

O seguinte funcionou para mim no macOS:

ffmpeg -v quiet

ou apenas para ver o progresso:

ffmpeg -v quiet -stats
morja
fonte
Era exatamente o que eu estava procurando. Estou usando o ffmpeg em um script e preciso ver se está funcionando, mas não preciso de todas as informações sobre fluxos de entrada e saída etc.
stib
3

Você pode canalizar o stderr através do grep. Por exemplo, se você deseja remover as informações de configuração, faça o seguinte:

% ffmpeg -i infile.avi -s 640x480 outfile.avi >/dev/null 2>&1 | grep -v configuration:
LittleRed
fonte
Eu acredito que pode ser necessário ffmpeg … 2>&1 >/dev/null | grep ….
Scott
0

Isso é um pouco barato, mas anexar >/dev/null 2>&1é uma maneira de manter o ffmpeg silencioso no shell.

Exemplo

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

Mais informações sobre a saída do bash

Koodough
fonte
14
Exceto que ffmpeg está um passo à sua frente e gera informações de configuração e erros reais para o stderr.
precisa saber é o seguinte
0

ffmpeg -loglevel error -hide_banner -nostats

Apenas os erros, nada mais.

Eu pessoalmente gosto mais disso;

ffmpeg -loglevel warning -hide_banner -stats

Ele fornece apenas avisos e erros, mas também mostra o andamento do trabalho.

Roel Van de Paar
fonte