Codificación de 2 pasos por ffmpeg a la vez

Codificación de 2 pasos por ffmpeg a la vez

Codifico un archivo de video usando ffmpeg como este.

$ ffmpeg -i input.avi -pass 1 -an output.mp4
$ ffmpeg -i input.avi -pass 2 -ab 128k -y output.mp4

Entonces escribo siempre 2 veces, ¿hay alguna forma de codificar un video en 2 pasadas a la vez?

Cambio las opciones con frecuencia y, por supuesto, el nombre del archivo de entrada y salida es diferente cada vez.

Respuesta1

En lugar de ejecutarlos como 2 comandos separados, puedes ejecutarlos en una línea de comando así:

$ ffmpeg -i input.avi -pass 1 -an output.mp4 && \
    ffmpeg -i input.avi -pass 2 -ab 128k -y output.mp4

La diferencia es la &&notación que ejecutará el segundo comando (la segunda pasada) solo si el primer comando fue exitoso. Siguen siendo 2 operaciones separadas, pero esto le permitirá ejecutar una línea de comando en lugar de las 2 que tenía que hacer anteriormente.

Además, esto tendrá el beneficio de ejecutar el segundo pase inmediatamente después de completar el primero, donde a tu manera tendrías que esperar a que termine el primero antes de iniciar el segundo.

Respuesta2

Utilizo mencoder pero estoy seguro de que se podría hacer algo similar con ffmpeg/avconv usando un dispositivo FIFO:

$ mkfifo passlog

$ mencoder infile.flv -passlogfile passlog ........... pass=1 &

$ mencoder infile.flv -passlogfile passlog ........... pass=2

información relacionada