Vorrei “utilizzare il nuovo codec x265 (libx265) per codificare la mia raccolta video.

Per questo ho creato un bellissimo script bash sotto Linux che funziona in generale molto bene! Ma qualcosa è strano:

proibisco alloutput di ffmpeg di fare eco a modo mio. Con x264 (il “vecchio” ) funziona tutto bene. Ma non appena uso x265 ottengo sempre questo tipo di output sul mio terminale:

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 

Questo è il modo in cui codifico il mio video con ffmpeg:

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

pensavo che

<>/dev/null 2>&1 

e

-loglevel quiet 

lo farà ma a quanto pare mi sbaglio.

Come posso risolvere questo problema?

Grazie per il tuo aiuto!

Risposta

Sembra che ffmpeg non dica al codificatore x265 di usare il livello di lingua che stai dicendo a ffmpeg uso. Quindi, se vuoi che ffmpeg e il codificatore x265 allinterno di ffmpeg siano silenziosi, devi impostare le opzioni del livello di log per entrambi.

Se hai un comando ffmpeg simile a questo:

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

Puoi aggiungere lopzione log-level = error allelenco di parametri x265 in questo modo:

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

Commenti

  • Grazie per la tua risposta. Questa è la soluzione che ho cercato! Anche se la mia risposta arriva un po troppo tardi, immagino ^^
  • La mia preferenza personale è quella di visualizzare i progressi e gli errori importanti se ce ne sono. Inoltre, poiché ' sto esportando in x265, ho bisogno di questo flag aggiuntivo. Personalmente lo considero un bug e il loglevel dovrebbe riguardare tutto, ma ' è davvero bello sapere sopprimerlo in modo efficace e corretto. Grazie!

Risposta

<>/dev/null collegherà solo input standard e loutput in /dev/null e 2>&1 viene applicato dopo <>/dev/null, in pratica non facendo nulla.

Modificandolo in >/dev/null 2>&1 si farà quello che vuoi.

Commenti

  • Grazie! Questo risolve il problema. Ma hai un errore nella tua risposta: ho scritto 2>&1 e non 1>&2 ma comunque .. funziona 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *