Cómo convertir MP4 a WebM para web — guía paso a paso
Convertir tus vídeos MP4 a WebM puede reducir el tamaño de archivo un 20–40% manteniendo la misma calidad visual. Para sitios web modernos donde Chrome y Firefox son los principales navegadores, WebM es la opción óptima.
Por qué convertir a WebM
- Menor tamaño: VP9 comprime un 30% mejor que H.264 al mismo nivel de calidad
- Sin royalties: WebM es completamente libre de patentes
- Nativo en Chrome y Firefox: carga sin necesidad de plugins
- Soporte en YouTube y otras plataformas: ya lo aceptan de forma nativa
Instalar FFmpeg
Windows
- Descarga desde ffmpeg.org/download.html → Windows builds
- Extrae el ZIP y copia
ffmpeg.exeaC:\Windows\System32\(o añade la carpeta al PATH) - Verifica:
ffmpeg -versionen CMD
macOS
brew install ffmpeg
Linux (Ubuntu/Debian)
sudo apt install ffmpeg
Conversión básica MP4 → WebM
# WebM con VP9 (mejor calidad-tamaño)
ffmpeg -i video.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k video.webm
Parámetros explicados:
-c:v libvpx-vp9: usa el encoder VP9-crf 30: calidad constante (0=mejor, 63=peor; recomendado 28–35 para web)-b:v 0: modo de calidad constante (CRF sin límite de bitrate)-c:a libopus: usa el codec de audio Opus (mejor que Vorbis)-b:a 128k: bitrate de audio 128 kbps
Variantes para diferentes casos de uso
# Vídeo de fondo web (sin audio, autoplay)
ffmpeg -i video.mp4 -c:v libvpx-vp9 -crf 33 -b:v 0 -an video_mudo.webm
# Mayor calidad (CRF más bajo = mejor calidad, mayor tamaño)
ffmpeg -i video.mp4 -c:v libvpx-vp9 -crf 22 -b:v 0 -c:a libopus -b:a 192k video_hq.webm
# Redimensionar a 1280×720 al convertir
ffmpeg -i video.mp4 -vf scale=1280:720 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus video_720p.webm
# Limitar el bitrate máximo (útil para streaming)
ffmpeg -i video.mp4 -c:v libvpx-vp9 -crf 30 -b:v 1M -maxrate 2M -bufsize 2M -c:a libopus video.webm
Crear MP4 y WebM simultáneamente
Si necesitas servir ambos formatos (para compatibilidad con Safari), puedes generar ambos en un solo comando:
ffmpeg -i original.mp4 \
-c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k video.webm \
-c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k video.mp4
Velocidad de codificación vs calidad
VP9 puede ser lento. Para acelerar a costa de un poco de compresión:
# Más rápido (deadline=realtime para previsualizaciones)
ffmpeg -i video.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 \
-deadline realtime -cpu-used 4 \
-c:a libopus video_rapido.webm
# Balance calidad-velocidad (buena calidad en tiempo razonable)
ffmpeg -i video.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 \
-deadline good -cpu-used 2 \
-c:a libopus video.webm
Los valores de -cpu-used van de 0 (más lento, mejor compresión) a 8 (más rápido, peor compresión).
Implementar en HTML con fallback para Safari
<video controls preload="metadata" width="1280" height="720">
<source src="video.webm" type="video/webm">
<source src="video.mp4" type="video/mp4">
<p>Tu navegador no soporta vídeo HTML5.
<a href="video.mp4">Descarga el vídeo</a>.</p>
</video>
<!-- Para vídeo de fondo autoplay (sin controles) -->
<video autoplay muted loop playsinline>
<source src="fondo.webm" type="video/webm">
<source src="fondo.mp4" type="video/mp4">
</video>
Convertir múltiples vídeos en lote
# Bash — convertir todos los MP4 de la carpeta a WebM
for f in *.mp4; do
ffmpeg -i "$f" \
-c:v libvpx-vp9 -crf 30 -b:v 0 \
-c:a libopus -b:a 128k \
"${f%.mp4}.webm"
echo "Convertido: $f"
done
Comparativa de tamaño (ejemplo real)
Un vídeo MP4 H.264 de 100 MB (1080p, 2 minutos):
| Formato | Configuración | Tamaño |
|---|---|---|
| MP4 H.264 | CRF 23 | 100 MB (referencia) |
| WebM VP9 | CRF 30 | ~70–80 MB |
| WebM VP9 | CRF 35 | ~50–60 MB |
| WebM AV1 | CRF 30 | ~50–60 MB |
La ganancia real depende del contenido (vídeos de pantalla comprimen mucho mejor que metraje de cámara con mucho movimiento).
Conversiones relacionadas
Conversiones de vídeo que encajan con esta guía: