Я использую 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» означает трехзначные числа, дополненные нулями слева (например, 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
AFAIK, % d
принадлежит ffmpeg
, а не bash. Я проверил вашу команду, и она отлично работает. Убедитесь, что у третьего изображения нет пробелов в начале имени файла.