Я использую ffmpeg для преобразования нескольких jpg в файл mp4, и, похоже, он отлично работает, создается video.mp4. это команда, которую я использую:
ffmpeg -r 0.1 -i uploads/image%d.jpg uploads/video.mp4
У меня есть эти файлы в моем каталоге загрузок
image1.jpg
image2.jpg
image3.jpg
image4.jpg
Я нашел этот пример в быстром поиске в Google. Я немного изменил его, но изображение% d.jpg осталось прежним. Предполагается, что каждое изображение зацикливается и помещается в mp4. Однако я обнаружил, что здесь не последний файл.
Как% d увеличивается на единицу и впоследствии захватывает здесь каждый файл? Почему он не захватывает последний файл? Когда я удаляю 4-е изображение, загружаются только первые два изображения, поэтому последнее изображение по какой-то причине просто не включается.
Любые комментарии о том, как это работает, были бы действительно полезны, спасибо!
ffmpeg знает, что% d означает один числовой символ, и поэтому увеличивает список файлов. Таким образом, это делает ffmpeg, а не оболочка - это важно, чтобы изображения располагались последовательно.
Обратите внимание, что если ваши числовые суффиксы состоят из более чем одной цифры - например, от image001.jpg до image110.jpg, то вам необходимо сообщить ему об этом:
ffmpeg -r 0.1 -i uploads/image%03d.jpg uploads/video.mp4
«% 03d» означает 3-значное число, дополненное нулями слева (например, 005). «% 05d» будет означать 5-значное число, заполненное нулями слева (например, 00044).
Также обратите внимание, что у вас не может быть пробелов в числах, поэтому переименуйте, если вы это сделаете.
Подробнее о форматировании числа здесь: http://www.pixelbeat.org/programming/gcc/format_specs.html
если вы знаете диапазон, вы можете сделать что-то вроде
ffmpeg -r 0.1 -i uploads/image{1..4}.jpg uploads/video.mp4
НАСКОЛЬКО МНЕ ИЗВЕСТНО, %d
принадлежит ffmpeg
, а не bash. Я проверил вашу команду, и она отлично работает. Убедитесь, что у третьего изображения нет пробелов в начале имени файла.