💾 Archived View for moribundo.flounder.online › blog › blog024.gmi captured on 2023-01-29 at 16:03:23. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-04-28)

-=-=-=-=-=-=-

- ENTRADA 024 -

Recodificar videos. 1 parte: HandBrake

Tenga usted cuidado con el Sr. Popov, no le llaman triciclo por nada

Cuando descargo algún video de internet suelen tener una calidad excesiva, lo que hace que su tamaño también lo sea, siendo de varios Gigas.

Nunca he sido sibarita con el tamaño de las películas, y mi TV tampoco soporta grandes formatos, así que suelo recodificar todo lo que me descargo. Normalmente dejo películas de 1.5 Gb en 400-600 Mb sin pérdida de calidad. Como ves, la reducción de espacio es grande.

Para ello utilizo el codec MPEG4 AVC, conocido como h264. Sé que su hermano menor, el codec HEVC, conocido como h265, aporta mayor compresión para la misma calidad, pero mi TV no lo soporta. Otros formatos más recientes como VP9 o AV1 aun comprimen más y mejor, pero con ellos ya ni cuento para mi TV.

Los tamaños rondan los 720HD, es decir 1280x720, o 1024x576, más que suficiente para TV normales, a 25 fps.

Para el audio elijo el codec mp3 con tasa de bits variable a 128 o 96. Me gustan más otros, pero hay cacharros que si no es MP3 no soportan audio, así que lo elijo por compatibilidad.

Como empaquetador uso Matroska (mkv).

Las aplicaciones que uso son dos: Handbrake y avidemux.

Handbrake

Me gusta porque es todoterreno y tiene mogollón de opciones. Además puedes crearte perfiles con tus configuraciones, y para mi, lo mejor de todo, es que se pueden exportar a archivos json para usarlos en scripts como verás luego.

Cuando le das a "Abrir fuente" y cargas el video, podrás elegir el "Preset" que quieras. Vienen muchos ya preconfigurados para web, dispositivos, uso general, o puedes crear el tuyo y guardarlo con el nombre que quieras, incluso ponerlo como opción predeterminada del programa.

Debajo de los presets están las opciones: Resumen, Dimensiones, Filtros, Video, Audio, Subtítulos, Capítulos y Etiquetas.

En estos apartados pondrás toda la configuración que puse antes.

Imagen Handbrake

Si ahora le das al botón de inciar, empezará la recodificación. Puedes ir a hacerte la cena, o a limpiar un poco la casa, porque tarda unos buenos minutos dependiendo de la calidad de la fuente, las configuraciones elegidas y también de la potencia del equipo que uses (entre 20 minutos y media hora en mi caso).

En la pestaña del menú "Preajustes" tienes para guardar el nuevo preset, usarlo como predeterminado y exportarlo. Esta última opción es importante, porque genera un archivo de configuración en formato json.

¿Para que quieres un archivo json?, pues porque Handbrake tiene la opción de funcionar por CLI (comandos por consola), por lo que nos viene genial para aplicar un preset guardado y meterlos en scripts. La orden sería así:

HandBrakeCLI --preset-import-file mipreset.json -i original.avi -o final.mkv

Eligiendo bitrate

En las opciones de Video, HandBrake viene predeterminada la "Calidad constante", así que nunca sabrás el tamaño resultante.

Si quieres dejar el archivo en un tamaño específico, deberás elegir "Tasa de bits" y teclear el bitrate.

¿Y cual es esa tasa?, pues hay que calcularla. Me hice un script que lo calcula en función de unas preguntas. Básicamente es multiplicar el tamaño que quieres obtener por un factor de corrección y dividir por el tiempo del video en segundos. La fórmula es así:

Bitrate= Mb del video * 8388,608 / Tiempo en segundos - bitrate de audio -15 (factor de corrección):

#!/bin/bash
#mb * 8388.608 / seg - audio -15
#800 * 8388.608 / 6760 -40 -15

clear
echo "CALCULAR LOS SEGUNDOS"
echo
echo
read -p "Introduce las horas del video: " hor
read -p "Introduce los minutos del video: " min
read -p "Introduce los segundos del video: " seg

HORA=$(( $hor*3600 ))
MIN=$(( $min*60 )) 
CONV=$(( $HORA + $MIN + $seg ))
echo
echo "Segundos del video: " $CONV

echo
echo "CALCULAR EL BITRATE"
read -p "Introduce los Megas del video resultante: " MB
read -p "Introduce bitrate del audio: " AUD

SUMAUDIO=$(( $AUD+15 ))
MEGAS=$(( $MB*8389/($CONV)-$SUMAUDIO ))

echo
echo "El bitrate para el video es:" $MEGAS

O también puedes usar una calculadora de bitrate que hay muchas por la red.

Usando scripts

Cuando tienes un solo archivo, no tienes mucho problema, pero cuando tienes muchos y quieres recodificarlos todos, ir uno a uno es tedioso.

Mediante el preset guardado puedes hacer un script que recodifique todo lo que pille. Igualmente, con un solo archivo también es más fácil lanzar el script que abrir Handbrake, cargar el archivo y aplicar las configuraciones.

El script es muy sencillo. Buscas los archivos por extensión, cambias espacios por guiones bajos, aplica el json y luego borra el archivo original (opcional).

NOTA: Es buena idea que revises el siguiente script antes de usarlo para que no sucedan cosas que no quieras. Modifícalo a tu gusto.
#!/bin/bash
# Conversor de archivos AVI a MKV
# Por Moribundo Insurgente

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 Handbrake_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

Si, vale, es un script mierder, pero no se hacerlo mejor, y es funcional, ya sabes, KISS.

Al principio recomiendo hacer pruebas para ir afinando las configuraciones. Una vez hayas dado con lo que quieres, guarda el preset como oro en paño y úsalo sin piedad.

Próxima entrada:

• Avidemux

Tags #handbrake #h264 #h265 #codec

◄ Listado de noticias

◄◄ Inicio