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) | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
WebM (VP8 / vorbis) | 6.0 | 4.0 | 9.0 | 10.6 | 3.1 |
WebM (VP9 / theora) | 29.0 | 28.0 | ? | Sí | ? |
OGG (Theora / vorbis) | Sí | 3.5 | Sin soporte | 10.50 | Sin soporte |
MP4 (H.264 / AAC) | Sí | Sí | 9.0 | Sí | Sí |
MP4 (H.264 / MP3) | Sí | Sí | 9.0 | Sí | 3.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.
@linkmoises
Aún no hay comentarios...