Conversor de archivos de imagen y vídeo gratis en Linux y Windows
Convertir formatos de archivos de imagen y vídeo es más fácil que nunca. Lo siento por las webs en las que pueden pegar tu archivo y convertirlo, pero realmente no las necesitamos. Solo tienes que entender un par de cosas que te explico en este post. Contenido:Si eres uno de esos que aprendió algo de libros como “la semana de 4 horas” y “hábitos atómicos”, sabrás que el batching o dosificación de tareas es algo realmente práctico para dar salida a todos esos temas recurrentes.
En este caso vamos a ver como convertir todos los archivos de un directorio en un formato distinto. Tanto imágenes como vídeos. Tanto en linux como en windows. De cualquier formato a cualquier formato. Todas estas herramientas parten
El reto en linux
A fecha de publicación de este post, estoy en Ubuntu 22.04, aunque todavía le sigo dando vueltas a si debo dar el salgo a 24.04. Temo que no funcionen las dos gráficas de Nvidia, por lo que prefiero estarme quietecito. Si alguien ya ha hecho las pruebas y me puede dar feedback se lo agradeceré eternamente.
El preceso simplificado: 1. Entrar en terminal con [Ctrl+Alt+T] 2. Instalar ffmpeg
si no lo tienes con: sudo apt install ffmpeg
3. Ejecuta el código que corresponda desde el directorio donde tienes los archivos.
El funcionamiento general de ffmpeg es bien sencillo. Tenéis tropecientos manuales de ffmpeg
aquí. Por ejemplo:
- Convertir un archivo JPG en WEBP:
ffmpeg -i imagen.jpg imagen.webp
- Convertir un archivo MP4 en MKV: Para convertir un video video.mp4 a formato MKV, usa el siguiente comando:
ffmpeg -i video.mp4 video.mkv
Esta estructura te permite convertir los archivos uno a uno, pero aquí lo interesante está en la iteración. Es decir, que convierta todos los archivos de un directorio, independientemente de si hay 1 o 1 millón. Así que aquí van los scripts y vídeos que permiten hacer esto a lo grande. ## Conversor de vídeo a webp
for i in *.mp4; do ffmpeg -i "$i" -vf "scale=600:-1" -c:v libwebp -quality 60 -loop 0 "../${i%.*}_s.webp" -y; done
Compresor general de vídeos
Si tienes linux ejecutarás esto:
for i in *.mp4 *.webm; do ffmpeg -i "$i" -c:v libx264 -crf 23 -c:a aac -strict experimental -b:a 192k "./${i%.*}_reduced.mp4" -y; done
Ejemplo de cómo ejecutar esto en linux
En este vídeo verás como símplemente hay que tener copiada la línea que corresponda y después abrir el terminal, pegar y ejecutar. Veréis como se van convirtiendo los archivos de forma iterativa.
Lo que considero más interesante de estos scripts es que están escritos en una sola línea, por lo que copiarlos de vuestro sistema de notas favorito es tan sencillo como hacer un triple clic. Esto, aunque parezca que no, elimina la fricción de copiar mal y luego ir a terminal y escribir caneladas.
El reto en Windows
Para poder hacer algo del corte de lo anterior, solo es necesario tener también instaladas las librerías de ffmpeg
. Para esto:
- Entrar en Windows terminal (power shell)
- Instalar ffmpeg con este comando:
winget install ffmpeg
- Ejecutar el código cambiando lo que corresponda, desde el directorio donde tienes los archivos.
Un apunte. Las opciones de ffmpeg
deben adaptarse a la realidad de nuestro pc. Tendremos dos formas generales de utilizar este código: en pc con gráfica (nvidia) o en pc sin gráfica (portátil chusquero).
Con gráfica NVIDIA y CUDA o lo que sea:
$extensions = @("*.mkv", "*.mov")
foreach ($ext in $extensions) {
foreach ($i in Get-ChildItem -Filter $ext) {
$output = [System.IO.Path]::ChangeExtension($i.FullName, ".mp4")
ffmpeg -i $i.FullName -c:v h264_nvenc $output -y
}
}
Sin gráfica (pc portátil por ejemplo):
$extensions = @("*.mkv", "*.mov")
foreach ($ext in $extensions) {
foreach ($i in Get-ChildItem -Filter $ext) {
$output = [System.IO.Path]::ChangeExtension($i.FullName, ".mp4")
ffmpeg -i $i.FullName -c:v libx264 $output -y
}
}
Actualización 01/01/2025 - Conversión con GPU en Windows
No quiero tocar nada de lo mostrado anteriormente para que quede como una introduccióna a la lógica de estas herramientas. Sin embargo, con la ayuda de ChatGPT, he podido llegar a montar un script de conversión de archivos para reducir enormememnte el tamaño de los archivos. Este script está diseñado especialmente para convertir los archivos .mp4
(los creados con una Sony RX100 VA) en archivo .mkv
que pesan en el mejor de los casos 10 veces menos.
¿Cuál es la novedad de esta conversión con ffmpeg
? Pues que la realiza con GPU. En mi caso un portátil gram con Intel I7-1260P con la GPU integrada Intel Iris Xe Graphics. Esta GPU es un juguete pues esta configuración forma parte de un pc ultralight, pero la conversión por GPU reduce el consumo energético muchísimo, además de hacer la conversión 5-10 veces más rápido.
La clave está en estos parámetros ffmpeg -hwaccel_output_format qsv -i $i.FullName -c:v hevc_qsv -crf 0 -c:a copy $output -y
.
Aquí el script completo (este escript coge todos los archivos .MP4 un directorio y los convierte en .mkv, así de simple):
$extensions = @("*.MP4")
foreach ($ext in $extensions) {
foreach ($i in Get-ChildItem -Filter $ext) {
$output = [System.IO.Path]::ChangeExtension($i.FullName, ".mkv")
ffmpeg -hwaccel_output_format qsv -i $i.FullName -c:v hevc_qsv -crf 0 -c:a copy $output -y
}
}
En este ejemplo se ha pasado de un archivo 4k de 3.6 GB a solo 30 MB, pero, ¿Dónde está la trampa?
A simple vista, las diferencias son imperceptibles, os lo aseguro. Sin embargo, sí hay diferencias y “simplificación o lavado” en el archivo .mkv, de ahí la enorme diferencia de peso. Notaréis una reducción del grano en los detalles, especialmente en las zonas de sombra, pero ya os adelanto de de que solo es perceptible si hacéis zoom a tope a una zona concreta (como podéis ver en la edición del vídeo). Dicho lo cual, dependiendo de cuál sea el destino del archivo merecerá la pena o no aligerar el peso de los archivos. Si el vídeo va a ser usado para stock o contiene algún momento muy valioso o donde creas que habrá que hacer algún zoom el día de mañana (imagina, una cena de compañeros donde quieras ver la cara de tu amigo borracho) pues mejor guardate el original. Si estamos hablando ya de algún vídeo de recuerdo general, algo malamente grabado con el móvil o algo que no vas a monetizar…aligeralo. Es una buena manera de conseguir GB para cosas más útiles.
Una muestra de a qué me refiero:
El ejemplo de lo que esta herramienta hace:
En este vídeo podemos ver el proceso general para convertir todo desde un directorio concreto. El truco para simplificar código es símplemente ejecutar el terminal desde la ubicación. Mira mira:
Conclusiones
FFmpeg destaca como una herramienta versátil y eficiente tanto en Linux como en Windows, permitiendo la conversión de cualquier archivo multimedia de un formato a otro mediante comandos simples. Esto es especialmente útil en el procesamiento masivo de archivos, donde la iteración a través de directorios completos reduce significativamente el esfuerzo. En lugar de convertir archivos uno a uno, puedes ejecutar scripts que realicen este proceso para cientos o miles de archivos en un solo paso, con la misma eficacia.
El poder de estas herramientas iterativas no solo radica en la automatización, sino también en la flexibilidad que ofrecen. Ya sea en un entorno Linux o Windows, puedes ajustar los parámetros según tus necesidades (por ejemplo, calidad de vídeo, tamaño de imagen, etc.), adaptando el proceso a los recursos de tu sistema, como la presencia o ausencia de una tarjeta gráfica dedicada. Esto permite que tanto en equipos de alta gama como en portátiles más modestos, se puedan realizar las conversiones sin grandes complicaciones.
Por último, la conversión de archivos es solo un ejemplo de cómo la automatización puede integrarse en flujos de trabajo más amplios. Ya sea que trabajes en diseño gráfico, producción audiovisual o simplemente necesitas gestionar grandes volúmenes de datos, herramientas como FFmpeg se vuelven indispensables. Y cuando combinas estos scripts con la simplicidad de los terminales de Linux y Windows, consigues un entorno potente donde puedes optimizar el tiempo y esfuerzo, enfocándote en tareas de mayor valor añadido.
Espero que hayas apreciado el esfuerzo en todo esto. Podrías apoyarme de muchas formas: contratándome, contactándome o símplemente compartiéndolo.