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