Codificação 2pass por ffmpeg de uma só vez

Codificação 2pass por ffmpeg de uma só vez

Eu codifico um arquivo de vídeo usando ffmpeg assim.

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

Então eu digito sempre 2 vezes, existe alguma maneira de codificar um vídeo em 2 passagens de uma vez?

Eu mudo as opções com frequência e, claro, o nome do arquivo de entrada e saída é diferente a cada vez.

Responder1

Em vez de executá-los como dois comandos separados, você pode executá-los em uma linha de comando, assim:

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

A diferença é a &&notação que executará o segundo comando (a 2ª passagem) somente se o primeiro comando for bem-sucedido. Ainda são duas operações separadas, mas isso permitirá que você execute uma linha de comando em vez das duas que você precisava fazer anteriormente.

Além disso, isso terá o benefício de executar a 2ª passagem imediatamente após a conclusão da 1ª passagem, onde do seu jeito você teria que esperar essencialmente que a 1ª terminasse antes de iniciar a 2ª.

Responder2

Eu uso o mencoder, mas tenho certeza de que algo semelhante poderia ser feito com ffmpeg/avconv usando um dispositivo fifo:

$ mkfifo passlog

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

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

informação relacionada