Вопрос. Есть куча отдельных jpg картинок. Есть ли способ создать из них видеофайл так, чтобы каждая картинка являлась в видео отдельным фреймом? Причем фреймрейт нужно установить достаточно низкий, чтобы в секунду сменялось 2-3 картинки.
>>3892 > Есть ли способ создать из них видеофайл так, чтобы каждая картинка являлась в видео отдельным фреймом? Есть два способа. Первый — послать все жпеги последовательно на стандартный ввод: cat *.jpg | ffmpeg -i - -f null - Второй — попросить ffmpeg читать жпеги самостоятельно, но для этого они должны быть последовательно пронумерованы с постоянным количеством цифр (yoba0000.jpg — yoba00120.jpg): ffmpeg -i yoba%04d.jpg -f null - Что будет, если у жпегов окажется разное разрешение, я не проверял.
> Причем фреймрейт нужно установить достаточно низкий -r 2 перед -i. Если нужно меньше единицы, можно указать десятичную или натуральную дробь.
Вместо -f null - (вывод пустого потока на лицо стандартный вывод) нужно указать параметры сжатия. Например, можно тупо сложить жпеги без перекодирования в контейнер mkv: ffmpeg -r 2 -i yoba%04d.jpg -c copy bigyoba.mkv или пожать в старый формат H.264 быстрым x264: ffmpeg -r 2 -i yoba%04d.jpg -c libx264 -crf 18 fastyoba.mkv или пожать в новый формат AV1 медленным libaom: ffmpeg -r 2 -i yoba%04d.jpg -c libaom-av1 -cpu-used 3 -b:v 0 -crf 30 -pass 1 -f null - ffmpeg -r 2 -i yoba%04d.jpg -c libaom-av1 -cpu-used 3 -b:v 0 -crf 30 -pass 2 smallyoba.webm или есть ещё более сотни вариантов.
>>3893 C pipeline что-то не получилось, зато вот такой способ сработал: ffmpeg -y -framerate 20 -pattern_type glob -i "*.jpg" -c copy bigyoba.mkv
В x264 не получается перекодировать, ошибка Unknown encoder 'libx264'. Его можно как-то доустановить или только вручную ffmpeg пересобирать? Я из репозитория ставил его.
>>3894 > C pipeline что-то не получилось Не пойму, что там могло не получиться. Но твой третий способ лучше, не знал, что ffmpeg умеет в глоббинг сам. Наверно, это недавно появилось.
> В x264 не получается перекодировать, ошибка Unknown encoder 'libx264'. Его можно как-то доустановить или только вручную ffmpeg пересобирать? Только пересборка. Олсо, не в x264, а в H.264, не путай энкодер и формат. > Я из репозитория ставил его. Федора? Наверняка для неё есть репы с нормальной мультимедией, где ffmpeg собран с большинством фич.
>>3896 > pipe:: Invalid data found when processing input Почему-то ffmpeg не смог выбрать правильный демуксер, но ему можно помочь: cat *.jpg | ffmpeg -f image2pipe -i - -f null -
> В vp9 сконвертировал, это даже лучше. По соотношению скорость/качество libvpx-vp9 если и дотягивает до x264, то лишь на редких сочетаниях настроек. А если на скорость плевать, то libaom-av1 выше на голову, в основном за счёт умения гладить линии при декодировании.
>>3958 Это для использования аппаратных декодеров с интерфейсом v4l2 (video4linux2). В man mpv пишут, что такие встречаются на каких-то SoC'ах. m2m = memory to memory, наверно, имеется в виду, что эти декодеры работают без предварительной загрузки видеопотока в gpu фильтрами hwmap/hwupload.
>>3961 Ага, понятно. И еще вопрос, есть декодер vp9 и libvpx_vp9, они, как я понимаю, оба могут декодирова vp9, но первый встроен в ffmpeg по умолчанию, а второй из состава libvpx. Какой из них лучше использовать?
>>3962 Встроенный в ffmpeg декодер быстрее, он и используется по умолчанию. Можешь сравнить их скорость, декодировав файл в null: ffmpeg -c:v libvpx-vp9 -i file.webm -f null - ffmpeg -i file.webm -f null - libvpx-vp9 — библиотека энкодера, декодирование для неё — второстепенная задача.
>>3964 Нет, это только декодер. При указании "vp9" в роли энкодера это воспринимается как формат и доступный энкодер (это может быть libvpx-vp9, svt-vp9 и аппаратные реализации) выбирается автоматически.
> как это по русски сказать Кодировать. Или сжимать.