← All posts

Cómo convertir el formato de video con FFmpeg paso a paso

Guía completa para convertir formatos de video con FFmpeg — MP4, MOV, AVI, WebM, MKV. Cubre selección de códec, control de calidad y scripts de conversión por lotes.

FFHub·2026-04-21
Cómo convertir el formato de video con FFmpeg paso a paso

La conversión de formatos de video es una de las tareas más comunes en el procesamiento de medios. Ya sea que necesites MP4 para la web, MOV para flujos de trabajo de Apple o WebM para proyectos de código abierto, FFmpeg los maneja todos desde la línea de comandos. Esta guía cubre desde conversiones básicas hasta selección avanzada de códecs y procesamiento por lotes.

Conversión básica de formato

La conversión más sencilla solo cambia el formato contenedor. FFmpeg detecta el formato de salida a partir de la extensión del archivo:

# Convertir MKV a MP4
ffmpeg -i input.mkv output.mp4

# Convertir AVI a MOV
ffmpeg -i input.avi output.mov

# Convertir MP4 a WebM
ffmpeg -i input.mp4 output.webm

Cuando no especificas códecs, FFmpeg elige los predeterminados para el contenedor de destino. Esto funciona pero no te da control sobre la calidad o compatibilidad.

Contenedores vs. códecs

Antes de profundizar, es útil entender la diferencia:

  • Contenedor (MP4, MKV, MOV, AVI, WebM) — el formato de archivo que contiene video, audio y metadatos
  • Códec de video (H.264, H.265, VP9, AV1) — cómo se comprime el video
  • Códec de audio (AAC, Opus, MP3, FLAC) — cómo se comprime el audio

Un contenedor es como una caja; los códecs son lo que hay dentro. El mismo códec de video puede vivir en distintos contenedores.

ContenedorCódecs de video comunesCódecs de audio comunesIdeal para
MP4H.264, H.265, AV1AAC, MP3Web, móvil, uso general
MKVCualquieraCualquieraArchivado, medios multi-pista
MOVH.264, H.265, ProResAAC, PCMEcosistema Apple, edición
WebMVP8, VP9, AV1Vorbis, OpusWeb (código abierto)
AVIH.264, MPEG-4MP3, PCMCompatibilidad con versiones anteriores

Guía de selección de códecs

H.264 — Máxima compatibilidad

H.264 (libx264) se reproduce en prácticamente cualquier dispositivo y navegador. Es la opción más segura para distribución general.

ffmpeg -i input.avi -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4

H.265 (HEVC) — Mejor compresión

H.265 (libx265) entrega archivos ~50% más pequeños con la misma calidad. El soporte está creciendo pero aún no es universal.

ffmpeg -i input.avi -c:v libx265 -crf 28 -preset medium -c:a aac -b:a 128k output.mp4

Nota: H.265 usa una escala CRF diferente. CRF 28 en H.265 es aproximadamente equivalente a CRF 23 en H.264.

VP9 — Código abierto, amigable para la web

VP9 es el códec libre de regalías de Google. Se combina con WebM y es compatible con todos los navegadores modernos.

ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm

El -b:v 0 indica a FFmpeg que use el modo CRF puro (sin límite de tasa de bits).

AV1 — La siguiente generación

AV1 ofrece la mejor tasa de compresión, pero la codificación es muy lenta. Úsalo cuando tengas tiempo y quieras los archivos más pequeños.

ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -cpu-used 4 -c:a libopus -b:a 128k output.mkv

-cpu-used 4 acelera significativamente la codificación (rango 0-8; mayor = más rápido pero menor calidad).

Comparación de códecs

CódecCompresiónVelocidadSoporte en navegadoresLicencia
H.264BuenaRápidaUniversalCon licencia
H.265MejorMediaCrecienteCon licencia
VP9MejorLentaTodos los modernosSin regalías
AV1La mejorMuy lentaCrecienteSin regalías

Combinación de códecs de audio

Cada contenedor funciona mejor con ciertos códecs de audio:

# MP4 + AAC (combinación más común)
ffmpeg -i input.mkv -c:v libx264 -crf 23 -c:a aac -b:a 192k output.mp4

# WebM + Opus (mejor calidad por tasa de bits)
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm

# MKV + FLAC (audio sin pérdida)
ffmpeg -i input.mov -c:v libx264 -crf 18 -c:a flac output.mkv

# MOV + PCM (sin comprimir, para edición)
ffmpeg -i input.mp4 -c:v copy -c:a pcm_s16le output.mov
Códec de audioCalidadTamaño del archivoMejor contenedor
AACBuenaPequeñoMP4, MOV
OpusExcelenteEl más pequeñoWebM, MKV
MP3BuenaPequeñoMP4, AVI, MKV
FLACSin pérdidaGrandeMKV
PCMSin pérdidaMuy grandeMOV, WAV

Copia de flujo — Conversión instantánea

Cuando los códecs del origen son compatibles con el contenedor de destino, puedes copiar los flujos sin recodificar. Esto es instantáneo y sin pérdida:

# Remuxar MKV a MP4 sin recodificar
ffmpeg -i input.mkv -c copy output.mp4

# Copiar video, recodificar solo el audio
ffmpeg -i input.mkv -c:v copy -c:a aac -b:a 128k output.mp4

La copia de flujo solo funciona cuando los códecs son compatibles con el contenedor de destino. Por ejemplo, no puedes poner video VP9 en un contenedor AVI.

Calidad vs. tamaño de archivo

Modo CRF — El mejor para archivos locales

CRF (Factor de Tasa Constante) da la mejor relación calidad/tamaño. El codificador ajusta la tasa de bits escena por escena. Para profundizar en las técnicas de compresión, consulta nuestra guía de compresión de video.

# Alta calidad (archivo más grande)
ffmpeg -i input.avi -c:v libx264 -crf 18 -c:a aac -b:a 192k output.mp4

# Calidad equilibrada
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4

# Archivo más pequeño (menor calidad)
ffmpeg -i input.avi -c:v libx264 -crf 28 -c:a aac -b:a 96k output.mp4

Codificación en dos pasadas — Lo mejor para tamaño de archivo objetivo

Cuando necesitas un tamaño de archivo específico, usa la codificación en dos pasadas:

# Pasada 1: analizar
ffmpeg -i input.avi -c:v libx264 -b:v 2M -pass 1 -an -f null /dev/null

# Pasada 2: codificar
ffmpeg -i input.avi -c:v libx264 -b:v 2M -pass 2 -c:a aac -b:a 128k output.mp4

Presets — Velocidad vs. compresión

Los presets más lentos producen archivos más pequeños con la misma calidad:

# Codificación rápida, archivo más grande
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset fast -c:a aac output.mp4

# Codificación lenta, archivo más pequeño
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset slow -c:a aac output.mp4

Convertir con cambios de resolución

Combina la conversión de formato con el escalado:

# Convertir a MP4 720p
ffmpeg -i input.mkv -c:v libx264 -crf 23 -vf "scale=-2:720" -c:a aac -b:a 128k output.mp4

# Convertir a WebM 1080p
ffmpeg -i input.avi -c:v libvpx-vp9 -crf 30 -b:v 0 -vf "scale=-2:1080" -c:a libopus output.webm

Scripts de conversión por lotes

Convertir todos los archivos en un directorio

# Convertir todos los archivos AVI a MP4
for f in *.avi; do
  ffmpeg -i "$f" -c:v libx264 -crf 23 -c:a aac -b:a 128k "${f%.avi}.mp4"
done

# Convertir todos los archivos MKV a MP4 (copia de flujo si es posible)
for f in *.mkv; do
  ffmpeg -i "$f" -c copy "${f%.mkv}.mp4"
done

Convertir con calidad personalizada por formato

#!/bin/bash
# Convertir por lotes a múltiples formatos
INPUT="input.mp4"

# MP4 optimizado para la web
ffmpeg -i "$INPUT" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k -movflags +faststart web.mp4

# Archivo MKV de alta calidad
ffmpeg -i "$INPUT" -c:v libx265 -crf 22 -preset slow -c:a flac archive.mkv

# WebM para alojamiento de código abierto
ffmpeg -i "$INPUT" -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k web.webm

Conversión recursiva

# Buscar y convertir todos los archivos AVI de forma recursiva
find . -name "*.avi" -exec sh -c '
  ffmpeg -i "$1" -c:v libx264 -crf 23 -c:a aac "${1%.avi}.mp4"
' _ {} \;

Optimización para la web — faststart

Para archivos MP4 servidos en la web, siempre agrega -movflags +faststart. Esto mueve los metadatos al inicio del archivo para que la reproducción pueda comenzar antes de que se complete la descarga:

ffmpeg -i input.mkv -c:v libx264 -crf 23 -c:a aac -movflags +faststart output.mp4

Recetas de conversión comunes

Aquí están los comandos listos para usar en las conversiones más frecuentes:

# MOV (iPhone) a MP4 para compartir
ffmpeg -i input.mov -c:v libx264 -crf 23 -c:a aac -b:a 128k -movflags +faststart output.mp4

# AVI a MP4 (recodificación)
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4

# MP4 a WebM para incrustar en la web
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm

# MKV a MP4 (remux sin pérdida)
ffmpeg -i input.mkv -c copy -movflags +faststart output.mp4

# Cualquier formato a GIF (clip corto)
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" -t 5 output.gif

# MP4 a HLS para streaming
ffmpeg -i input.mp4 -c copy -hls_time 10 -hls_list_size 0 output.m3u8

Solución de problemas

Advertencias "Discarding packet" — El contenedor de origen tiene problemas de compatibilidad. Agrega -err_detect ignore_err para omitir paquetes corruptos.

Errores "Non-monotonous DTS" — Problemas de marca de tiempo en el origen. Corrígelos con:

ffmpeg -i input.mkv -fflags +genpts -c:v libx264 -crf 23 -c:a aac output.mp4

Códec no compatible con el contenedor — Estás intentando poner un códec incompatible en un contenedor (por ejemplo, VP9 en AVI). Cambia el contenedor o recodifica con un códec compatible.

El archivo de salida es más grande que el de entrada — Esto ocurre cuando se convierte de un códec más eficiente a uno menos eficiente, o cuando el origen estaba muy comprimido. Intenta reducir el valor CRF o usa un códec más eficiente.

Alternativa en la nube con FFHub

Convertir formatos de video localmente funciona bien para tareas puntuales, pero las conversiones por lotes pueden mantener tu máquina ocupada durante horas. FFHub te permite ejecutar comandos FFmpeg en la nube vía API — la misma sintaxis de FFmpeg, sin uso de CPU local.

Esto es especialmente útil cuando necesitas convertir grandes lotes de archivos, integrar la conversión de formatos en una aplicación web, o procesar videos en máquinas sin FFmpeg instalado.

Resumen

  • Usa copia de flujo (-c copy) cuando los códecs sean compatibles — es instantáneo
  • Elige H.264 + AAC en MP4 para máxima compatibilidad
  • Elige VP9 + Opus en WebM para entrega web de código abierto
  • Usa el modo CRF para codificación orientada a la calidad
  • Agrega -movflags +faststart para archivos MP4 servidos en la web
  • Usa scripts por lotes para convertir directorios completos de una vez

Artículos relacionados

Cómo convertir el formato de video con FFmpeg paso a paso | FFHub