Me gustaría usar el nuevo códec x265 (libx265) para codificar mi colección de videos.
Para esto, creé un encantador script bash bajo linux que en general funciona muy bien! Pero algo es extraño:
Prohíbo que la salida de ffmpeg se haga eco a mi manera. Con x264 (el «antiguo» ) todo funciona bien. Pero tan pronto como uso x265 siempre obtengo este tipo de salida en mi 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 es la forma en que codifico mi video con ffmpeg:
ffmpeg -i /input/file -c:v libx265 -c:a copy -loglevel quiet /output/file.mp4 <>/dev/null 2>&1
Pensé que el
<>/dev/null 2>&1
y el
-loglevel quiet
haré esto, pero aparentemente estoy equivocado.
¿Cómo puedo resolver este problema?
Gracias por tu ¡ayuda!
Responder
Parece que ffmpeg no le dice al codificador x265 que use el nivel de registro que le está diciendo a ffmpeg usar. Entonces, si desea que ffmpeg y el codificador x265 dentro de ffmpeg estén en silencio, debe configurar las opciones de nivel de registro para ambos.
Si tiene un comando ffmpeg que se ve así:
ffmpeg -loglevel error -stats -i "inputfile.xyz" -c:v libx265 -x265-params parameter1=value:parameter2=value outputfile.xyz
Puede agregar la opción log-level = error a la lista de x265-params de esta manera:
ffmpeg -loglevel error -stats -i "inputfile.xyz" -c:v libx265 -x265-params log-level=error:parameter1=value:parameter2=value ....
Comentarios
- Gracias por su respuesta. ¡Esa es la solución que buscaba! Incluso si mi respuesta llega un poco tarde, supongo que ^^
- Mi preferencia personal es ver el progreso y los errores importantes, si los hay. Además, como ' estoy exportando a x265, necesito este indicador adicional. Personalmente, considero que esto es un error, y el nivel de registro debería pertenecer a todo, pero es ' muy bueno saber suprimirlo de manera efectiva y correcta. ¡Gracias!
Respuesta
<>/dev/null
solo conectará la entrada estándar y la salida a /dev/null
, y 2>&1
se aplica después <>/dev/null
, efectivamente sin hacer nada.
Cambiarlo a >/dev/null 2>&1
hará lo que quieras.
Comentarios
- ¡Gracias! Eso resuelve el problema. Pero tienes un error en tu respuesta: escribí
2>&1
y no1>&2
pero de todos modos … funciona 🙂