ffmpeg es una herramienta poderosa para manipular archivos multimedia.

ffmpeg -start_number 1 -framerate 30 -i "$dir/frame_%05d.jpg" -vf "unsharp,format=yuv420p" -g 30  -c:v libx264 -pix_fmt yuv420p -y -movflags +faststart -profile:v high -color_range pc -crf 23 -preset fast -fps_mode cfr ../2k_fast_420p_264.mp4

Si ffmpeg no tiene suficiente RAM o GPU, puede generar errores en la decodificación.

Si tienes una GPU integrada de NVIDIA, AMD o Intel, puedes usar aceleración por hardware.

  • -i input.mp4 → Entrada
    • Frame_%05d.jpg
  • -c:v libx264 → Códec de compresión:
    • libx264 → Códec estándar de compresión de video.
    • libx265 → Reduce el peso sin perder calidad. Usa el códec HEVC (H.265).
  • GeneraR video a 30 FPS.
    1. -framerate 30 antes de -i especifica que las imágenes deben tratarse como un video de 30 FPS.
    2. -g 30 → Establece el intervalo de GOP (Group of Pictures), que define cada cuántos frames se insertará un keyframe [1].
    3. -r 30 después de la codificación fuerza el video de salida a 30 FPS.
    4. -fps_mode cfr → Fuerza un frame rate constante (CFR) sin duplicación de frames.

-framerate 30 controla cómo se leen los frames, mientras que -r 30 podría forzar duplicación o eliminación de frames.

  • -start_number 1 → Define el primer número de la secuencia de imágenes que se usará como entrada (Frame_00001.jpg).
  • -crf 16 → Controla la calidad:
    • 18 → Reduce artefactos sin perder calidad.
    • 23 → Mejora la velocidad sin perder mucha calidad.
    • 28 → Reduce la calidad, pero acelera bastante.
  • -preset fast
    • veryslow → Maximiza la compresión, lo que puede causar micro-lags.
    • slow → Optimiza la compresión sin sacrificar demasiado tiempo.
    • medium.
    • fast → Optimiza la velocidad, pero puede generar artefactos...
    • ultrafast.
  • -pix_fmt yuv420p → Formato de píxeles:
    • yuv420p → (8 bits) Compatible con la mayoría de reproductores.
    • yuvj420p → Una variante mejorada de yuv420p.
    • yuv420p10le → (10 bits) Mejor para HDR o gradientes suaves. 25%-30% más pesado.
    • yuv444p → Mantiene más información de color, 2x-3x más pesado.
  • -vf "format=yuv420p" → Agrega un filtro para asegurarnos que la conversión de colores sea compatible.
  • -color_range tv
    • tv → Evita problemas de color en algunos dispositivos.
    • pc → Mejora el detalle en sombras y luces.
  • -profile:v high → Evita que el video se codifique con un perfil bajo, lo cual puede generar artefactos:

Opcionales

  • -y → Sobrescribe el archivo sin preguntar.
  • -movflags +faststart → Permite reproducir el video mientras se descarga.
  • nice -n 10 → Si ffmpeg ralentiza tu Mac, dale baja prioridad en segundo plano.
  • -threads 8 → Limita el número de hilos y evita sobrecargar la memoria.

De preferencia deja que ffmpeg administre los hilos automáticamente: -threads 8 puede generar artefactos visuales si el códec no maneja bien la paralelización.

Limitar

Para limitar la duración del video de salida, puedes usar:

  • -ss 10 → Para saltar al segundo 10 del video antes de procesarlo.
  • -t 5 → Para tomar 5 segundos desde ese punto.

Deben ir antes de -i input.mp4 para que afecte al video de entrada.

  1. Utíl, si se quiere generar un video corto de N segundo sin procesar todo el archivo.

Recortar

Si quieres usar solo 3/4 partes superiores, puedes recortar el video equirectangular, usando crop en -filter_complex:

crop=3840:1620:0:0
  • 3840:1620 → Ancho y alto del área a conservar.
  • 0:0 → Empieza desde la esquina superior izquierda (no desplazamiento en x, y).

o modificar iv_fov=135 en v360. Porque 135° es 3/4 de 180° [0:v]