Chuletillas (y XXXVIII) – Cambiar la resolución de un vídeo con ffmpeg

chuleta Y otra chuletilla más sobre formatos de vídeo. Si quieres cambiar de tamaño un archivo de vídeo (por ejemplo de FullHD 1280×720 a HD 1080×608) con ffmpeg y desde línea de comando, basta con ejecutar esto:

ffmpeg -i input.avi -filter:v scale=1080:-1 -acodec copy output.avi

Se llevará su ratito (entre una y cuatro horas dependiendo del procesador que tengas, claro) pero al final el resultado es impecable. Además, si así lo deseas, puedes cambiar el formato del vídeo de salida simplemente cambiando la extensión (por ejemplo, output.mkv te dará un archivo de salida en ese formato).

El valor -1 que acompaña a la escala horizontal le indica a ffmpeg que calcule el número de píxeles de la vertical para que el vídeo mantenga la proporcionalidad adecuada. Si queremos especificarlo manualmente o romper la proporcionalidad para crear un vídeo anamófico usamos este otro formato:

ffmpeg -i input.avi -filter:v scale=1080x500 -acodec copy output.avi

Y una nota: he tenido problemas cuando uso estos comandos con un vídeo en formato .mkv con pistas de subtítulos. El vídeo y el audio no presentan problemas pero las pistas de subtítulos no se codifican correctamente en el vídeo final. La solución más rápida y sencilla que he encontrado es usar mkvmerge (una utilidad gráfica para manipular las pistas de un archivo mkv) de la siguiente forma: antes de reescalar extraigo las pistas de subtítulos y las borro del original; a continuación ejecuto el comando anterior para realizar el reescalado y, por último, vuelvo a usar mkvmerge para reintegrar los subtítulos en el vídeo final. Son apenas 5 minutos mas que no se notan frente al total del proceso.

ACTUALIZACIÓN: Y otro método más:

ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.avi

5 opiniones en “Chuletillas (y XXXVIII) – Cambiar la resolución de un vídeo con ffmpeg”

  1. Parece que no me funciona bien. Al introducir: ffmpeg -i input.avi -filter:v scale=1920:-1 -acodec copy output.avi

    resulta que no es compatible el -c:v copy con el cambio de tamaño. En cambio si le pongo el codec que uso (el mismo de origen) entonces va bien: -c:v qtrle

  2. Gracias por la info. Estoy haciendo pruebas con ffmpeg y esta “chuletilla” me viene muy bien. Quiero probar también a escalar con estos otros filtros: super2xsai xbr y hqx. Si me da la vida publicaré un post con la comparativa.

  3. Pingback: Bitacoras.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *