Transcodificación de video con la misma calidad que los servicios de streaming

  • 21 Jun 2019
  • ffmpeg

Con el siguiente comando será posible comprimir o transcodificar video y audio para lograr un resultado decente con un nivel de compresión brillante, como teléfono de carnicería. Tomado de esta página de github donde el se habla de calidad YTS. Solo que en vez del comando para HandbrakeCLI a mi me interesa el que es para ffmpeg.

ffmpeg -i "Nombre-Serie - S01E01 - Titulo.mkv" -map 0:0 -map 0:a -map 0:s -c:v libx264 -crf 27 -x264-params cabac=1:ref=5:analyse=0x133:me=umh:subme=9:chroma-me=1:deadzone-inter=21:deadzone-intra=11:b-adapt=2:rc-lookahead=60:vbv-maxrate=10000:vbv-bufsize=10000:qpmax=69:bframes=5:b-adapt=2:direct=auto:crf-max=51:weightp=2:merange=24:chroma-qp-offset=-1:sync-lookahead=2:psy-rd=1.00,0.15:trellis=2:min-keyint=23:partitions=all -c:a aac -c:s mov_text "optimizado/Nombre-Serie - S01E01 - Titulo.mp4"

En el ejemplo se toma el primer stream (que para el archivo que trabajo es el video) con -map 0:0. Luego los streams de audio con -map 0:a. Y por último los de subtítulo con -map 0:s. En la última parte del comando podremos cambiar el orden y el modo de convertir los audios. Muy útil en el caso que tengamos por ejemplo multiples pistas de audio y que se quiera convertir las que estén en 5.1 en stereo. Algunos ejemplos:

  • -c:a:0 aac El codec del primer flujo de audio será aac
  • -ac:a:0 2 La cantidad de canales del primer flujo de audio serán 2. Stereo
  • -ac:a:1 6 La cantidad de canales del primer flujo de audio serán 6. Sonido 5.1

Al final podríamos también agregar -map_metadata 0 -movflags use_metadata_tags para conservar todos los metadatos

Para terminar, vamos a suponer que tenemos no uno si no una serie de archivos en el mismo directorio. Entonces no vendría nada mal un simple loop ya que esta tarea llevará unas cuantas horas.

Para Windows

for %a in ("*.mkv") do ffmpeg -i "%a" -map 0:v:0 -map 0:a -map -0:s -c:v libx264 -crf 27 -x264-params cabac=1:ref=5:analyse=0x133:me=umh:subme=9:chroma-me=1:deadzone-inter=21:deadzone-intra=11:b-adapt=2:rc-lookahead=60:vbv-maxrate=10000:vbv-bufsize=10000:qpmax=69:bframes=5:b-adapt=2:direct=auto:crf-max=51:weightp=2:merange=24:chroma-qp-offset=-1:sync-lookahead=2:psy-rd=1.00,0.15:trellis=2:min-keyint=23:partitions=all -c:a:0 aac -ac:a:0 2 -c:a:1 aac -ac:a:1 2 -c:a:2 aac -ac:a:2 6 -map_metadata 0 -movflags use_metadata_tags "opt/%~na.mp4"
pause