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.
-framerate 30
antes de-i
especifica que las imágenes deben tratarse como un video de 30 FPS.-g 30
→ Establece el intervalo de GOP (Group of Pictures), que define cada cuántos frames se insertará un keyframe [1].-r 30
después de la codificación fuerza el video de salida a 30 FPS.-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
→ Siffmpeg
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.
- 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 enx
,y
).
o modificar iv_fov=135
en v360
. Porque 135° es 3/4 de 180°
[0:v]