¿FFmpeg producirá el mismo archivo de salida binario cada vez?

¿FFmpeg producirá el mismo archivo de salida binario cada vez?

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 -bitexactlos 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. -bitexactAquí 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.

  1. El comando ffmpeg -i big_buck_bunny_480p_stereo.avi out.mp4produce 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 .mp4si 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.

  1. 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.

información relacionada