
Suponiendo que el archivo fuente no cambió y se utiliza la misma versión de FFmpeg, ¿el archivo de salida será siempre el mismo?
Digamos que tengo un archivo fuente que tiene una extensión AVI. Si lo convierto a MP4 usando la configuración predeterminada de FFmpeg, ¿cada ejecución de FFmpeg producirá archivos con bits idénticos?
Respuesta1
La respuesta calificada es sí. Las diferencias habituales se deben a las cadenas de versión integradas en codificadores y muxers. Agregarlos -bitexact
los suprimirá.
Sin embargo, algunos codificadores como x265 no son deterministas en la codificación multiproceso.
Hay algunos otros casos específicos, como algunas rutinas DSP en arquitecturas PPC y Altivec, y algunas rutinas de conversión de formato de píxeles. -bitexact
Aquí también influye el modo en que se seleccionan las rutinas.
FFmpeg tiene un conjunto de pruebas de regresión automatizadas, cuyos resultados públicos se pueden ver endestino.ffmpeg.org.
Casi todas las pruebas se comparan con hashes de ejecuciones de referencia. Lo que básicamente requiere un poco de exactitud.
Respuesta2
Depende de los códecs y opciones utilizadas.
- El comando
ffmpeg -i big_buck_bunny_480p_stereo.avi out.mp4
produce los mismos archivos binarios. Pero si agregas opciones de tasa de bits
ffmpeg -i big_buck_bunny_480p_stereo.avi -maxrate 500k -bufsize 500k out.mp4
es posible que obtenga resultados diferentes incluso con -bitexact
.
Entonces, codificar con x264 (que es el valor predeterminado .mp4
si libx264 está disponible), múltiples subprocesos (de manera predeterminada, el número de subprocesos esseleccionado automáticamente) y las opciones de tasa de bits pueden producir binarios diferentes.
- Es posible que deba asegurarse de que elcódecLas versiones (no solo la versión de ffmpeg) son las mismas que las de ffmpeg con la misma versión que se pueden configurar para usar diferentes versiones de libx264, lo que puede generar diferentes binarios en las codificaciones del mismo archivo. DesafortunadamenteNo hay manera fácilpara comprobar las versiones de códec.