Sería el códec de video el principal responsable del uso de alta memoria.
Así que es el codificador cuyo uso de memoria debe abordarse, no FFmpeg directamente. No estoy seguro de cómo corregir el uso de memoria de x264
, pero probé con el nuevo x26 y en mi caso solo está utilizando 1.6 GB, mientras que libx264 fallaba al pedir más que el límite de memoria de 2 GB (por proceso, en sistemas de 32 bits).
Por lo tanto, lo que funcionó para mí era utilizar:
ffmpeg -i input -pix_fmt yuv420p -c:v hevc -x265-params crf=23 out.mp4
(La omisión de parámetros para cuidar del audio.)
Pero el enfoque general es tratar otros codificadores. Iba a probar mpeg4 y vp9 si x265 no funcionaba, tal vez otros. Si nada de esto funciona, a continuación, otras opciones incluyen mirar la configuración de los codificadores (aunque nada obvia y directamente relevante para el uso de memoria se muestra):
ffmpeg -h encoder=mpeg4
Actualización: de hecho, resultó que YouTube doesn Aún no he aceptado HEVC (también conocido como H.265) (y solo me avisó cuando finalizó la carga). Entonces, como sugerí anteriormente, opté por la VP9, esta vez hice una prueba piloto con los primeros 50 cuadros.He utilizado una configuración similar a a guide encontré (los constantes ajustes de calidad, a pesar de que debería haber utilizado más de sus parámetros sugeridos):
ffmpeg.exe -i <input> -pix_fmt yuv420p -c:v libvpx-vp9 -pass 1 -b:v 0 -crf 20 -f webm pass1.webm
ffmpeg.exe -i <input> -pix_fmt yuv420p -c:v libvpx-vp9 -pass 2 -b:v 0 -crf 20 -f webm pass2.webm
(Tenga en cuenta que pass1.webm
habrá casi vacío.)
también tenga en cuenta que se prefieren dos pases siempre que sea posible. Es mejor en todos los frentes, incluida una codificación más rápida en general.
Con estos ajustes, un clip de 73 segundos a una resolución de 4K tardó unas 16 horas en codificarse, es decir, utilizando un núcleo, ya que olvidé especificar -threads
. Aunque lento, el uso de la memoria de FFmpeg solo aumentó a aproximadamente 0.6 GB. El archivo resultante era de 300 MB, y no puedo ver ninguna pérdida de calidad en comparación con los marcos sin comprimir (por lo que -crf 20
podría haber sido demasiado bajo).
¿Qué otras opciones tengo para lograr el objetivo (convertir el archivo 1080p .mov a la misma calidad mp4) ?? – Khan
@Khan, parece que solo quieres transformar y no necesariamente codificar el video. Entonces puedes hacerlo con muy poco requerimiento de memoria. Ver mi respuesta arriba. – av501