Translate

Convertir video a mp4

 

Introducción


El formato mp4 utiliza un contenedor del mismo nombre y admite diferentes codecs de audio/video/subtítulos. Generalmente se utiliza para fácil difusión y almacenamiento en dispositivos con espacio insuficiente.

Con el objetivo de reducir el tamaño de archivo al máximo, manteniendo una calidad aceptable, se emplea el códec de video h264, mientras que para el audio se utiliza un codec de "Advanced Audio Coding". Ffmpeg cuenta con una implementación libre del codec h264, llamada libx264 (se dice que es superior al mismo h264) completamente compatible con los decodificadores h264, asimismo puede codificar audio usando LC-AAC y, de forma restringida, HE-AAC y HE-AAC v2.

Cabe mencionar que mp4/h264/aac no es la mejor combinación pero sí la más compatible y práctica a la hora de convertir. Existe ya un sucesor de h264 llamado h265, también presente en ffmpeg como libx265. Su competencia "Vp9" es prácticamente equivalente. Utilizado en contenedores matroska (webm) junto con el codec de audio opus o vorbis, vp9 fue desarrollado por google, es completamente libre y es utilizado por YouTube quien los muestra a través del reproductor html5. Sin embargo, para usar esos codecs se necesitan equipos más sofisticados, además que los tiempos de conversión son prácticamente inaceptables para equipos personales (diferentes a los servidores), incluso la decodificación demanda bastantes recursos.


Configurar el convertidor 

 


La forma más fácil es simplemente ingresar "mp4" como extensión de archivo de salida, pero los resultados son malos, así que lo mejor es configurar de forma mínima los codecs.

Para hacer esto, selecciona "<Manual>" en la lista "Formato" y haz clic en el botón "Editar". Si el perfil está previamente configurado habrá que limpiarlo desde el menú "Archivo-Limpiar todo", si se cargó un codec externo deberás ir al menú "Opciones" y buscar la opción para descargarlo.

Dentro del Editor de Perfiles de Formato, ingresa mp4 en "Formato de contenedor", para el codec de video elige libx264 y para el de audio libvo_aacenc. En extensión de archivo ingresa mp4.

Se van a necesitar un par de opciones avanzadas que se ingresan en "Parámetros adicionales". La primera es "bufsize", es necesaria para lograr el bitrate deseado, si no se ingresa esto es prácticamente como si no configuraras el convertidor ya que ffmpeg ignora el bitrate requerido. La segunda opción es "tune", ésta carga un perfil interno que optimiza el codificador de video para procesar imágenes según el tipo de información que contengan.

Para calcular el dato "bufsize" es necesario tomar en cuenta el bitrate que queramos. Siempre "bufsize" debe ser mayor al bitrate final elegido. Para calcularlo suma el bitrate de audio y el de video y multiplícalo por 2 (o por 3).


Ejemplos:
  • Bitrate de video: 512kbps (512k)
  • Bitrate de audio: 128kbps (128k)
  • Bitrate total: 640 kbps (640k)
  • bufsize: 1280 kbps (1280k)

  • Bitrate de video: 1Mbps (1000 kbps)
  • Bitrate de audio: 128kbps (128k)
  • Bitrate total: 1128kbps (1128k)
  • Bufsize: 2256kbps (2256k) 

En cuanto a la opción "tune", se tienen los siguientes perfiles internos:
  • film: utilízalo para codificar filmes o películas con alta calidad y alto bitrate
  • animation: utilízalo para codificar cartoons o anime
  • grain: utilízalo para codificar videos con ruido granulado
  • stillimage: utilízalo para imágenes estáticas, video presentaciones con fotografías por ejemplo.
  • psnr y ssim
  • fastdecode: utilízalo si el video será reproducido en dispositivos con pocos recursos
  • zerolatency: aumenta la velocidad de codificación y reduce la latencia para transmitir en línea sin entrecortar el streaming

Ingresa en "Parametros adicionales" -bufsize [Bitrate] -tune [Perfil]. Obviamente debes reemplazar [Bitrate] y [Perfil] por las opciones requeridas.

Ejemplos:
  • -bufsize 3000k -tune animation
  • -bufsize 3000k -tune film

A continuación debes configurar los bitrates. Selecciona "Salida-Audio" para mostrar las opciones para audio y "Salida-Video" para ver las opciones de video. Para el audio, un bitrate razonable es 96k, con 128k se logra una excelente calidad cercana a audio-CD. Los demás parámetros no es necesario configurarlos ya que incluso pueden empeorar la calidad de audio. 


Un error muy común de las personas es hacer resampler de audios monofónicos con baja calidad aumentando el Samplerate a 48kHz y seleccionando "2 canales", eso solo agrega ruido al audio y aumenta innecesariamente el tamaño del archivo. También, si tu audio es de baja calidad, es un desperdicio utilizar bitrates altos ya que no se conseguirá aumentarla y el tamaño final será mayor. Recuerda que nunca se podrá obtener información que no esté contenida en la grabación original, la calidad nunca será superior a la del archivo original. Si lo que pretendes es aumentar la calidad del audio necesitarás herramientas especializadas que aún así únicamente hacen retoques que consisten en quitar información innecesaria como ruido, siseo, etc.

En cuanto al video debes ingresar el bitrate en los cuadros "Bitrate", "Bitrate max" y "Bitrate min", con esto se fuerza al convertidor a lograr el bitrate requerido sin necesidad de usar la opción "2 pases". Los bitrates óptimos para h264 dependen mucho del tipo de datos que intentes procesar, sin embargo soporta valores bastante bajos manteniendo una calidad aceptable. Utiliza valores de 256k o superiores. Recuerda que puedes hacer pruebas de conversión con "Libre AV Converter" desde el menú "Convertir-realizar una prueba", esta opción es sumamente útil para experimentar con diferentes bitrates y no tener que esperar a que la conversión finalice.


Reduciendo el tiempo de codificación


Los resultados obtenidos con ffmpeg/libx264 son superiores a los del software comercial por el simple hecho de poder manipular una enorme cantidad de parámetros para encontrar una configuración óptima. Pero la gran desventaja es el alto tiempo de codificación, sin embargo puedes aumentar la velocidad a costa de empeorar el resultado final.

Para aumentar la velocidad puedes elegir un bitrate alto y manejar un rango variable, estableciendo límites en las opciones "Bitrate max" y "Bitrate min". Forzar a ffmpeg a conseguir un bitrate pequeño y constante lógicamente aumentará los tiempos de codificación ya que tiene que repetir una y otra vez el procedimiento hasta lograr el objetivo, pero si aumentas el rango de libertad ffmpeg finalizará este bucle rápidamente.

Otra opción para aumentar la velocidad es elegir un perfil con la opción "preset". Se tienen los siguientes valores para el parámetro (en orden de mayor a menor velocidad de codificacion): ultrafast,superfast, veryfast, faster, fast, medium, slow, slower, veryslow y placebo. El preset predeterminado es "medium".

Esta opción debe ser introducirda en el cuadro "Parámetros adicionales", con la siguiente sintaxis: -preset [opcion]


Ejemplos:
  • -preset slow
  • -preset fast

Se recomienda también copiar o mover el archivo original a un dispositivo de rápido acceso como una memoria USB. Convertir un archivo contenido en un disco DVD/CD demorará más tiempo.

Si bien ffmpeg/libx264 es lento, los recursos que consume son bastante reducidos en comparación con el software comercial, por lo que podrás utilizar el ordenador sin problema mientras el archivo es convertido, incluso puedes abrir múltiples instancias de "Libre AV Converter" y procesar varios archivo a la vez o segmentos de un mismo archivo para agilizar el proceso.