
Есть несколько решений для выбора каждого нечетного или четного изображения на уровне фильтра, и все они работают. Но в моем случае у меня есть входные данные из файлов 15360x8640 .jpg, где имеет значение, ввожу ли я все изображения и отбрасываю каждую секунду в фильтре или пропускаю каждое второе входное изображение. Это значительно ускорит кодирование. Мой обычный входной сигнал (для пятизначных числовых файлов, работающий на win10 x64):
ffmpeg.exe -framerate 60 -i %05d.jpg -vcodec libx264 out.mkv
Что я пробовал (взято изэта тема, возможно, работает только на Linux, но я не смог проверить):
ffmpeg.exe -framerate 60 -i %04d%[13579%].jpg -vcodec libx264 out.mkv
и различные варианты с опциями glob и без них и т. д. Все терпят неудачу. Всегда выдает "%04d%[13579%].jpg: Нет такого файла или каталога" или что-то в этом роде.
Рабочий пример для каждого десятого кадра (т.е. 00001 00011 00021 и т.д.).
ffmpeg.exe -framerate 60 -i %04d1.jpg -vcodec libx264 out.mkv
Кто-нибудь уже решил проблему или у кого-нибудь появилась новая идея?
решение1
В настоящее время двухэтапное решение.
Создать список:
dir *1.jpg *3.jpg *5.jpg *7.jpg *9.jpg /b /on | c:\prog\unix\sed "s/^/file /" > "!list.txt"
Использовать список:
ffmpeg.exe -r 60 -f concat -safe 0 -i "!list.txt" -vcodec libx264 out.mkv
Плюс: Экономит мне около терабайта только для того, чтобы иметь копию этих файлов с разными именами в качестве входных данных или время декодирования на входном уровне. Почти в 1,5 раза быстрее по сравнению с конвертацией на уровне фильтра с моими огромными .jpg в качестве входных данных.
Минус: Кажется, требует больше оперативной памяти, чем при использовании на уровне фильтра, но почему?
У кого-нибудь есть лучшее решение?