FFmpeg ya no incluye preajustes y perfiles basados en archivos de texto para libx264, es decir, lo que ha usado con la -vpre
opción. Estos se han depreciado y eliminado en favor de acceder a los preajustes x264 reales, perfiles (y canciones) con el -preset
, -profile:v
y -tune
opciones. Los archivos de texto antiguos solo emulaban los preajustes y perfiles oficiales x264, y debido a varias limitaciones no podían ofrecer la funcionalidad completa que proporciona el nuevo sistema. También es mucho más fácil de mantener.
Además, muchos codificadores tienen sus propias opciones separadas; también llamado "opciones privadas". Tendrá que buscar en las opciones de codificador de audio y video para códecs comunes en la documentación en línea de FFmpeg, o verificar la salida ffmpeg -h full
para obtener una lista completa de las opciones compatibles. Por ejemplo, x264 enumera sus opciones libx264 AVOptions
en la salida de ayuda completa.
Si su ffmpeg es compatible, -preset
entonces no se debe usar ningún archivo preestablecido de archivos de texto, y FFmpeg ya no viene con otros ajustes preestablecidos de iPod no estándar. Es un error común pensar que los preajustes de texto simplemente se pueden copiar desde cualquier lugar y usar con cualquier ffmpeg. Esto no es cierto y provocará la rotura.
Básicamente, los ajustes preestablecidos le permitieron hacer lo siguiente:
Control de calidad
La calidad se controla especificando un bitrate a través -b:v
(para video) o -b:a
(para audio), o especificando cualquier otro método de codificación que el códec pueda admitir.
Para x264, existen varios métodos de codificación, siendo el método del Factor de tasa constante el más sofisticado. Resulta en bitrate variable, pero en general de buena calidad en una sola pasada. Los valores de CRF oscilan entre 0 y 51, pero los valores correctos están en algún lugar entre 19 y 26, según su fuente y la calidad que desee. 23 es el predeterminado, por lo que podría elegir, por ejemplo, 18 para "alta calidad" y 28 para "baja calidad", lo que sea que eso signifique para usted.
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
x264 también tiene otros métodos de codificación , pero esto está fuera del alcance aquí.
Estos perfiles definen un conjunto de características que el codificador puede usar para igualar las capacidades de un determinado decodificador. En FFmpeg reciente, use la siguiente sintaxis para especificar un perfil, dónde podría estar el perfil baseline
, main
o high
:
ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4
Para obtener más información y cuándo debe usar qué perfil, consulte: ¿Cuáles son las diferencias entre los perfiles H.264?
Elija una codificación x264 preset
Estos preajustes afectan la velocidad de codificación. El uso de un preajuste más lento le brinda una mejor compresión o calidad por tamaño de archivo, mientras que los preajustes más rápidos le dan una peor compresión. En general, solo debe usar el valor predeterminado que puede esperar. Preajustes pueden ser ultrafast
, superfast
, veryfast
, faster
, fast
, medium
(por defecto), slow
y veryslow
. Aquí hay un ejemplo:
ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4
Codificar video sin pérdida
Esto es posible especificando un CRF de 0, así que simplemente use -crf 0
:
ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4
Finalmente, hablemos de ProRes rápidamente. ProRes acepta una tasa de bits fija -b:v
o puede especificar el perfil, que debe ser un valor entre 0 y 3 , donde las tasas de bits se eligen de acuerdo con el perfil. Más alto significa mejor:
ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov
El Wiki de ffmbc sugiere que se pueden usar los nombres de los perfiles; sin embargo, esto falla en FFmpeg 1.0.
ffmpeg -i input.mp4 -c:v libx264 output.mp4
? crf: 23 y preestablecido: medio?Hice una prueba en la que transcodifiqué (usando codificación libx264 a
.mp4
) un video de alta calidad de una videocámara Sony usando el rango completo de valores preestablecidos (excepto placebo) en un rango de valores CRF (18, 21, 24 y 27 ) Quería saber qué me daría la mejor combinación de velocidad de codificación, calidad de salida y tamaño de archivo.Para cada valor de CRF, le di a cada operación de transcodificación una puntuación para su tiempo de codificación (por ejemplo, para CRF = 18, el tiempo preestablecido de ultrafast de 5,7 segundos obtuvo una puntuación de 1,0, el tiempo de veryslow de 162 segundos obtuvo un 0, con todos otros puntajes escalados en el medio). Calculé las puntuaciones de tamaño del archivo de salida de manera similar, por supuesto, dando la mejor puntuación al archivo más pequeño. Luego agregué los dos puntajes para un puntaje de velocidad / tamaño "combinado".
Para cada uno de los cuatro valores de CRF, el valor predeterminado "muy rápido" fue el ganador indiscutible, con puntajes casi perfectos de 1.94 (para CRF 18 y 21), 1.96 (CRF 24) y 1.97 (CRF 27). Me parece muy curioso que "muy rápido" produzca casi el tamaño de archivo más pequeño cada vez , perdiendo solo por "muy lento" y nunca por mucho.
Una diferencia que noté entre los diversos valores preestablecidos fue que el sistema operativo (Windows 7) me daría diferentes miniaturas. Los ajustes preestablecidos más rápidos mostrarían una miniatura durante varios segundos en el video, donde las miniaturas de los ajustes preestablecidos más lentos reflejarían los fotogramas de apertura del video. Eso no es importante para mí; Lo que aprendí fue que "preset veryfast" parece ser una opción fácil.
Aquí están mis resultados (como una imagen instantánea de una hoja de cálculo de Excel):
Aquí está la hoja de cálculo de Excel como texto csv:
fuente