Gostaria de usar o novo codec x265 (libx265) para codificar minha coleção de vídeos.

Para isso criei um adorável script bash no Linux que funciona em geral muito bem! Mas algo é estranho:

Eu proíbo a saída do ffmpeg de ecoar do meu jeito. Com x264 (o “antigo” ) tudo funciona bem. Mas assim que eu uso x265, sempre recebo este tipo de saída no meu terminal:

x265 [info]: HEVC encoder version 1.7 x265 [info]: build info [Linux][GCC 5.1.0][64 bit] 8bpp x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64 x265 [info]: Main profile, Level-2.1 (Main tier) x265 [info]: Thread pool created using 2 threads x265 [info]: frame threads / pool features : 1 / wpp(5 rows) x265 [info]: Coding QT: max CU size, min CU size : 64 / 8 x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra x265 [info]: ME / range / subpel / merge : hex / 57 / 2 / 2 x265 [info]: Keyframe min / max / scenecut : 25 / 250 / 40 x265 [info]: Lookahead / bframes / badapt : 20 / 4 / 2 x265 [info]: b-pyramid / weightp / weightb / refs: 1 / 1 / 0 / 3 x265 [info]: AQ: mode / str / qg-size / cu-tree : 1 / 1.0 / 64 / 1 x265 [info]: Rate Control / qCompress : CRF-28.0 / 0.60 x265 [info]: tools: rd=3 psy-rd=0.30 signhide tmvp strong-intra-smoothing x265 [info]: tools: deblock sao 

Esta é a maneira que codifico meu vídeo com ffmpeg:

ffmpeg -i /input/file -c:v libx265 -c:a copy -loglevel quiet /output/file.mp4 <>/dev/null 2>&1 

Achei que

<>/dev/null 2>&1 

e

-loglevel quiet 

vou fazer isso, mas aparentemente estou enganado.

Como posso resolver este problema?

Obrigado por seu ajuda!

Resposta

Parece que o ffmpeg não diz ao codificador x265 para usar o nível de log que você está dizendo ao ffmpeg usar. Portanto, se você quiser que o ffmpeg e o codificador x265 dentro do ffmpeg sejam silenciosos, você precisa definir as opções de nível de registro para ambos.

Se você tiver um comando ffmpeg parecido com este:

ffmpeg -loglevel error -stats -i "inputfile.xyz" -c:v libx265 -x265-params parameter1=value:parameter2=value outputfile.xyz 

Você pode adicionar a opção log-level = error à lista de parâmetros x265 como este:

ffmpeg -loglevel error -stats -i "inputfile.xyz" -c:v libx265 -x265-params log-level=error:parameter1=value:parameter2=value .... 

Comentários

  • Obrigado por sua resposta. Essa é a solução que procurei! Mesmo que minha resposta chegue um pouco tarde, eu acho ^^
  • Minha preferência pessoal é ver o progresso e erros importantes, se houver. Além disso, como eu ' m exportando para x265, preciso desse sinalizador extra. Pessoalmente, considero isso um bug, e o nível de log deve pertencer a tudo, mas ' é muito bom saber como suprimi-lo de maneira eficaz e correta. Obrigado!

Resposta

<>/dev/null conectará apenas a entrada padrão e a saída para /dev/null, e 2>&1 é aplicada após <>/dev/null, efetivamente não fazendo nada.

Mudá-lo para >/dev/null 2>&1 fará o que você quiser.

Comentários

  • Obrigado! Isso resolve o problema. Mas você tem um erro em sua resposta: eu escrevi 2>&1 e não 1>&2, mas mesmo assim … funciona 🙂

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *