Convertir videos a formatos compatibles con HTML5

Muchas veces me he encontrado en la situación de necesitar colocar un video en un sitio web y no contar con el mismo en un formato adecuado. Afortunadamente en cualquier distro GNU/Linux contamos con la navaja Suiza de la multimedia, ffmpeg.

En este artículo de MDN encontramos una revisión muy completa sobre este tema y cuáles son los contenedores compatibles con HTML5, se reducen a 3. El formato MP4, que aunque propietario es el más difundido y soportado; el WEBM, completamente libre menos conocido; y el OGG también libre pero menos utilizado.

Sobre el contenedor MP4, tampoco es cualquiera, tiene que tener los streams en códecs específicos. El vídeo debe estar en H.264 baseline profile ya que le exige menos capacidad de procesamiento a la máquina del usuario. Un vídeo en H.264 High profile probablemente también podrá ser visualizado, pero en un dispositivo con baja capacidad de procesamiento, un teléfono de gama baja o incluso una laptop con un procesador atom por ejemplo podrán empezar a visualizarlo y luego de algunos minutos no podrán continuar la reproducción del vídeo o se ralentizará el dispositivo. El audio debe estar en formato AAC. También alguno navegadores soportan que el audio este en MP3, pero no son todos.

En esta tabla se resume los formatos de video compatibles con HTML5.

Contenedor (video codec / audio codec)ChromeFirefox (Gecko)Internet ExplorerOperaSafari
WebM (VP8 / vorbis)6.04.09.010.63.1
WebM (VP9 / theora)29.028.0??
OGG (Theora / vorbis)3.5Sin soporte10.50Sin soporte
MP4 (H.264 / AAC)9.0
MP4 (H.264 / MP3)9.03.1

Para convertir un vídeo a MP4 con H.264 baseline tomando como base un MP4 con video H.264 en otro perfil y optimizado para reproducir vía web.

1
$ ffmpeg -i input-mp4-highprofile.mp4 -movflags faststart -vcodec libx264 -vprofile baseline -crf 18 -acodec copy output-mp4-baselineprofile.mp4

Para convertir un video a WEBM tomando como base un video MP4 (aunque puede ser cualquier tipo).

1
$ ffmpeg -i input.mp4 -vcodec libvpx -crf 10 -b:v 0 -acodec libvorbis -threads 4 output.webm

La velocidad de encoding es extremadamente lenta, entre 8-10 frames por segundo.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.