Во-первых, вам нужно немного переупорядочить параметры ffmpeg. -loop 1
должен стоять перед входным изображением, а -r 0.1
идеале должно идти как выходной параметр после изображения. Смотрите больше на вики FFmpeg о создании слайд-шоу из изображений.
Затем убедитесь, что вы используете последнюю версию ffmpeg. Загрузите один здесь и не используйте тот, который вы установили с apt-get
- он очень устарел.
Кроме того, вы хотите использовать H.264 и AAC в качестве видео- и аудиокодека соответственно с MP4 в качестве контейнера, а не с комбинацией MPEG-4 и MP3 в AVI, которую вы получите с помощью текущей команды.
Зациклите все MP3-файлы, удалите расширение и запустите сценарий 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
То, что я также добавил, это:
- CRF (коэффициент постоянной скорости) устанавливает качество видео (используйте значение от 18 до 28, чем ниже, тем лучше)
- явное преобразование в субсэмплинг 4:2:0 - в противном случае вы получите 4:4:4, если у вас есть PNG в качестве ввода, и это не может быть воспроизведено у всех игроков