Está en la página 1de 4

x264 CLI En esta pequea gua vamos a mostrar como codificar un video con x264.exe usando lneas de comandos.

Aplicaciones como MeGUI pueden usar x264.exe, pero ya veremos que trabajar en lnea de comandos no es tan complicado. Sirve tanto para usuarios noveles como para expertos, dadas las ltimas modificaciones en el cdec que cuentan con presets que incluyen las configuraciones ms usadas y simplifican mucho la tarea. Por qu usar x264 cli y no x264VFW? Por una razn muy sencilla: la nica versin oficial del cdec es x264 cli. X264VFW no tiene soporte. Podemos descargar el X264.exe desde aqu http://x264.nl/ Bajad la versin de 32bits. Aunque nuestro equipo est preparado para la versin de 64bits no la recomiendo por lo siguiente: vamos a necesitar avisynth 64bits. De las docenas de aplicaciones y filtros que hay en avisynth solo un pequeo porcentaje funcionan en 64bits. Y si no las podemos usar estamos atados de manos, as que recomiendo usar avisynth y x264 de 32bits. Algunas opciones del cdec x264 que hemos de conocer: Presets: ordenados de menos eficiencia (ms rapidez de codificacin) a ms eficiencia (menos rapidez) tenemos Ultrafast ? Very fast ? Fast ? Medium ? Slow ? Slower ? Placebo Recomendamos Slow. Si nuestro PC est muy limitado pues Medium. Tune: (afinar la compresin): opciones para el tipo de video del que partimos (animacin, real,). Destacamos Film ? Animation ? Grain Respectivamente para imgenes reales, para dibujos animados (cartoon: fondos planos, sin texturas, tipo Los Simpson) y para conservar el grano del video (como por ejemplo pelculas filmadas en 16mm. Ojo que esta opcin aumenta mucho el bitrate). Level: para establecer las frames que se tomarn de referencia. Puede ser 3.1, 4.1, 5.1, ? (para un video con resolucin 1280x720 correspondera a 5, 9 y 16 ref-frames respectivamente). Recomendamos el level 4.1 para una mayor compatibilidad con reproductores tipo mediatank y dems. Ntese que el indicar el Level a 4.1 no siempre asegura que los vdeos codificados se reproducirn correctamente, ya que los reproductores tienen limitaciones en cuanto al mximo de flujo de datos que puede gestionar el procesador del aparato. Las especificaciones para los Blu-ray limitan la tasa de datos de video a 40mbit y el buffer de 30mbit. Para ajustar esto incluiremos en la lnea de comandos estas instrucciones --vbv-bufsize 30000 --vbv-maxrate 40000

A diferencia del XviD, el x264 funciona perfectamente a una pasada, y no vale la pena realizar dos a no ser que queramos fijar un bitrate o un tamao final concreto. Al hacerlo en una pasada vamos a buscar una calidad constante, por lo que no tendremos control sobre lo mencionado. Tambin decir que los valores de los quants para cada frame (Q) van desde 1 (ms calidad ms tamao) a 51 (menos calidad menos tamao). Los valores que Q ofrecen gran calidad estaran entre 19 y 23. En cuanto a las resoluciones podemos tranquilamente especificar valores de resolucin mod4 cuando creemos el script de avisynth. Para esta gua suponemos que: El x264.exe est en la ubicacin C:\ Hemos creado un script de avisynth para cargar el video y realizar otras operaciones como crop, resize , denoising, etc (ver manual avisynth) C:\script.avs El video resultante va a ser C:\video.mkv CODIFICACIN EN UNA PASADA Podemos usar para una single-pass CQP (Constant Quantization Parameter) o CRF (Constant Rate Factor). La mejor manera de hacerlo es usando CRF. Usando CQP por ejemplo a Q=20, todos los frames se codificaran a Q=20, independientemente de cmo sean. Habr valores fijos para las I, P y Bframes. El Rate Factor es una medida de calidad, y puede variar los valores de Q segn cmo sean nuestras frames ya que tiene en cuenta el movimiento. Asignar valores medios no fijos para las I/P/B. En las escenas con mucho movimiento aumenta la compresin y por tanto el valor de Q (menos calidad), y en las escenas con poco movimiento disminuye la compresin y baja el valor de Q (ms calidad). Pero no era al revs?! Lo explicamos. En escenas con mucho movimiento asigna un Q mayor ya que el ojo humano no puede fijarse en todos los detalles, y si hay alguna imperfeccin no nos daremos cuenta. En escenas con poco movimiento s nos podemos dar cuenta si hay alguna imperfeccin. As, si el CRF lo asignamos en 20, para las escenas con movimiento subir p.ej a Q=22 y para las sin movimiento a Q=18. Ojo!, esto no quiere decir que el bitrate asignado a las escenas con mucho movimiento ser menor que a las de poco. Estamos hablando de calidad constante, luego como es lgico, una escena movida tendr un bitrate mayor aunque est ligeramente ms comprimida que una que no. No aparecern artefactos ni macrobloques en este tipo de escenas si nos movemos en los valores de CRF recomendados, que sern entre 19 y 23. Un anlisis objetivo (por ejemplo PSNR) nos dira que un montaje a CRF=20

tiene menos calidad que uno a CQP=20. Pero como nuestra apreciacin es subjetiva, usando CRF apreciaremos ms calidad. Por ello hay que coger con pinzas los anlisis PSNR. Lnea de comandos para codificacin a una pasada indicando el CRF. Vamos a Menu de inicio>Ejecutar>cmd y le damos a enter. Se abre la consola y escribimos "c:\x264.exe" --preset slow --tune film --crf 19 --level 4.1 --vbv-bufsize 30000 --vbv-maxrate 40000 --output "c:\video.mkv" "c:\ script.avs" Vemos en color las opciones que podemos variar. CODIFICACIN EN DOS PASADAS Usaremos las dos pasadas cuando tengamos que establecer un determinado bitrate por cuestiones de tener que controlar el tamao final del video. Primer pasada "c:\x264.exe" --preset slow --tune film --pass 1 --bitrate 2500 --stats "c:\video.stats" --level 4.1 --vbv-bufsize 30000 --vbv-maxrate 40000 --output NUL "c:\script.avs" Segunda pasada "c:\x264.exe" --preset slow --tune film --pass 2 --bitrate 2500 --stats "c:\video.stats" --level 4.1 --vbv-bufsize 30000 --vbv-maxrate 40000 --output "c:\video.mkv" "c:\script.avs" Vemos en color las opciones que podemos variar. TEST DE COMPRESIBILIDAD. COMO SABER SI EL BITRATE QUE LE INDICO ES EL ADECUADO Si se da el caso de que quiero montar un video y que me quepa digamos en DVD, segn sea la resolucin y lo que ocupe el audio habr de indicarle el bitrate. Para ello se usa una calculadora de bitrate. Aqu hay una http://forum.doom9.org/showthread.php?t=122562 Cmo saber si me quedo corto o me paso? Podemos hacer un test de compresibilidad sobre una parte del video. Ser rpido y nos adelantar resultados finales. En el script de avisynth aadimos al final del mismo la funcin SelectRangeEvery(500, 25) , para que comprima un 5% del video. Descripcin de la funcin: SelectRangeEvery(clip, int "every", int "length", int "offset", bool "audio"). En el ejemplo cada 500 frames coger 25 (en un video a 25FPS equivale a un segundo por cada 20). Los valores los podemos variar a

gusto. La lnea de comandos: "c:\x264.exe" --preset slow --tune film --pass 2 --bitrate xxxx --stats "c:\video.stats" --level 4.1 --vbv-bufsize 30000 --vbv-maxrate 40000 --output NUL "c:\ script.avs" --slow-firstpass Vemos en color las opciones que podemos variar. El valor del bitrate xxxx ser el que nos d la calculadora. Ntese que se aade --slow antes de first pass ya que por defecto las primeras pasadas se hacen rpido, y a nosotros nos interesa que se haga despacio y bien. Al terminar la codificacin nos arrojar la info del ratefactor resultante. x264 [info]: final ratefactor: 20.53 Como hemos dicho que el ratefactor ser el parmetro de calidad, si nos da unos valores dentro de los recomendados es que lo hemos acertado. Si no ha sido as, hemos de replantearnos el cambiar el tamao final buscado y por tanto el bitrate, o variar la resolucin, etc Indicar que si la fuente es mala y tiene mucho ruido, el uso de un denoiser en avisynth puede ahorrarnos algo de bitrate. CONSIDERACIONES FINALES Las fuentes en HD suelen ser bastante uniformes y no tener mucho ruido y artefactos, as que con un poco de prctica podemos dar con los valores de CRF que ms nos convengan y a partir de ah usarlos. No ocurre lo mismo con los DVDs, que los hay que dan pena.