No comando indicado,
ffmpeg -loop 1 -r 1 -i image.jpg -i image2.jpg -vcodec libx264 -acodec copy -xerror -preset ultrafast -r 1 -shortest out.mp4
desde que nenhuma atribuição de mapa seja feita, o ffmpeg mapeia a primeira entrada de vídeo para a saída. Como a opção de loop foi definida, é um fluxo sem fim. O -shortest
não tem efeito porque a segunda imagem não é mapeada automaticamente e, portanto, sua duração (0,04 s) não tem relevância.
Uma solução alternativa é adicionar um fluxo de áudio simulado finito, criado da mesma forma - ffmpeg -f lavfi -t 1 -i anullsrc=cl=mono dummy.m4a
ffmpeg -loop 1 -r 1 -i image.jpg -i image2.jpg -i dummy.m4a -vcodec libx264 -acodec copy -xerror -preset ultrafast -r 1 -shortest out.mp4
Isso não resolverá o problema de arquivos "estranhos".
Há também -timelimit seconds
, por exemplo -timelimit 600
para sair do ffmpeg após 10 minutos. No entanto, isso usa a chamada de sistema setrlimit
e AFAICT, não está disponível no Windows nativamente, então não posso testá-la agora.