-loop 1
deve vir imediatamente antes da imagem de entrada, e o -r 0.1
deve idealmente ir como uma opção de saída após a imagem. Veja mais no wiki do FFmpeg sobre como criar uma apresentação de slides a partir de imagens .
Em seguida, verifique se você executou uma versão recente do ffmpeg. Baixe um aqui e não use o que você instalou com apt-get
- está muito desatualizado.
Além disso, você quer usar H.264 e AAC como codec de áudio e vídeo, respectivamente, com MP4 como contêiner, não a combinação MPEG-4 e MP3 em AVI que você obterá com seu comando atual.
Faça o loop em todos os arquivos MP3, retire a extensão e execute o script ffmpeg:
for f in *.mp3; do
# create output filename songX.mp4
name="${f%%.mp3}.mp4"
# run ffmpeg command
ffmpeg -loop 1 -i imagen.png -i "$f" \
-r 0.1 -shortest \
-c:v libx264 -pix_fmt yuv420p -c:a aac -strict experimental \
-crf 18 -b:a 128k "$name"
done
O que também adicionei é:
- CRF (fator de taxa constante) define a qualidade do vídeo (use algo entre 18 e 28, menor é melhor)
- uma conversão explícita para subamostragem 4: 2: 0 - caso contrário, você obterá 4: 4: 4 se tem PNG como entrada, e isso não pode ser reproduzido em todos os jogadores