HANDBRAKE: PONIENDO A DIETA NUESTROS VIDEOS.

     Cuando descargamos vídeos de la red, ya sean documentales, películas o series, muchas veces el tamaño de esos vídeos son desproporcionados, ocupando un espacio innecesario. Hay un programa libre y multiplataforma llamado Handbrake, cuya función es convertir video y que viene muy bien para “rebajar de peso” esos videos, sin pérdida de calidad. El programa es muy completo y fácil de manejar, pero cuando tenemos varias decenas de videos a convertir, es muy tedioso ir uno a uno. Como Handbrake tiene versión gráfica y de consola, me voy a centrar en la conversión de múltiples vídeos en su versión de comandos.

Antes de nada iniciamos Handbrake en modo gráfico. Vienen varias preconfiguraciones o presets que cubren casi todas las necesidades de las usuarias, pero yo me hice mi propia configuración que es la siguiente:

Video

Codec: h264

Frames por segundo: 25

Calidad: Constante a 23 RF

Audio

Codec: vorbis a 128 kb

Contenedor

mkv

Guadé la configuración y la exporté con el nombre Conver.json. Como no sucede en otros programas como avidemux, más farragosos de configurar, Handbrake sabe como optimizar el vídeo sin meterse en follones de codecs y configuraciones enrevesadas. Cerramos Handbrake y nos vamos a la consola. Tecleamos el siguiente comando:

HandBrakeCLI --preset-import-file Conver.json -i archivo.avi -o archivo.mkv

¿Qué sucede? Handbrake detecta los codecs del vídeo original y solo aplica la configuración de nuestro preset (Conver.json). Tras unos minutos el proceso termina, hemos dejado un vídeo de 1 Gb en 420 Mb sin pérdida de calidad. Genial.

Pero habíamos dicho que queremos convertir varios vídeos, así que para ello tecleamos el siguiente comando dentro de la carpeta donde están los vídeos. Previamente copiaremos nuestro Conver.json a dicha carpeta:

for file in *.avi; do HandBrakeCLI --preset-import-file Conver.json -i $file -o "$file.mkv"; done; rm *.avi

Esto busca todos los archivos avi y los procesa. Ojo, porque el rm *.avi del final borra el original. Podéis prescindir de eso si no os fiais del resultado.

     NOTA: Si los nombres de los archivos contienen espacios como me pasó a mi, el comando no funcionará, deberemos eliminarlos. Para no renombrar uno a uno automatizaremos la faena con el comando sed:

for FILE in *.avi ; do NEW=`echo $FILE | sed 's/ /_/g'`; mv "$FILE" $NEW; done

Esto busca los archivos con espacios y los cambia por un guión bajo _

Y ya lo tenemos. Dejé el ordenador por la mañana y por la noche ya había pasado todos los videos, ahorrando más de 20 Gb de espacio en disco.

Para automatizarlo todo me hice un pequeño script muy simple que pongo a continuación:

#!/bin/bash
# Conversor de archivos AVI a MKV

clear
echo CONVERSOR DE AVI A MKV
echo
echo

# Cambiar espacios por guion bajo

   for FILE in *.avi ; do NEW=`echo $FILE | sed 's/ /_/g'`; mv "$FILE" $NEW; done

# Convertir mediante HandBrakeCLI

for file in *.avi; do HandBrakeCLI --preset-import-file Fast_h264.json -i $file -o "$file.mkv"; done; rm *.avi

# Eliminar la extensión duplicada .avi.mkv
echo
echo
echo Eliminando extension duplicada...

   for FILE in *.avi.mkv ; do NEWFILE=`echo "$FILE" | sed 's/.avi.mkv$/.mkv/'` ; mv "$FILE" $NEWFILE ; done

Espero que os sea de utilidad.

5 Comments

  1. Podés hacer

    mv "$FILE" "${FILE// /_}"

    En lugar del sed

    Y también

    mv "$FILE" "${FILE/.avi.mkv/.mkv}

  2. Lástima que Handbrake no pueda codificar alrevés, es decir de mp4 a avi, esto lo digo, porque me toca pasar siempre los mp4 a avi, para poderlos ver en el reproductor de sobremesa. En fin… Para eso uso Curlew.
    Pregunto, ¿se podrá incluir en el mismo comando una manera de pegar el subtítulo? …Para ese menester he encontrado un script, que funciona muy bien, y que comparto aquí, de donde lo saqué: (perdón si esto acarrea algún problema; espero que no) https://blogricardo.wordpress.com/2008/09/28/script-para-pegar-subtitulos-de-forma-masiva/
    Otra cosa, imagino que también se puede usar sólo para reducir el tamaño del video, y (para mi caso) pasarlo por Curlew después, para ya sí ahí pasarlo a avi. ¡Vaya camino!
    Muchas gracias por el tip, lo voy a usar :) Abrazos

    1. Siendo breve en mi comentario, usa avidemux y ahórrate recodificar algo que ya vale tal cual está y que solo necesita cambiar de contenedor (?). Teniendo la pista de vídeo y audio en un codec que acepte el reproductor solo necesitas meterla en el contenedor que necesites, sin necesidad de recodificar.
      https://en.wikipedia.org/wiki/Comparison_of_video_container_formats

      Todos los vídeos que codifico con xvid da igual si los tengo en mp4 o avi, puedo cambiarlos a ambos formatos en 5 segundos y cambiarles el fourcc a divx para que el reproductor los acepte.

      Pegar subtitulos es algo ya desfasado y solo útil para aparatos viejos que no aceptan de ninguna manera subtitulos flotantes. Solo pego subs en los avi anteriormente mencionados por ser más difícil que los reconozcan aunque los metas dentro.

      1. No solo cambio de contenedor, si no que cambio el codec a h264 (h265 es mejor pero no lo soportan muchas teles o lectores dvd) y el audio a ogg/vorbis, reduciendo el bitrate a 128.

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax