Главная | Настройки | NSFW
Тема:
Доски


[Ответить в тред] Ответить в тред

[Назад] [Обновить тред] [Вниз] [Каталог] [ Автообновление ] 16 / 1 / 4

FFmpeg - вопросы и ответы Anonymous No.3891
ffmpeg-logo-768[...].webp (14 KB, 768x206)
В этом треде будем изучать ffmpeg, программу для работы с видеофайлами.
Есть вопрос по ней? Задай его тут.
Anonymous No.3892
Вопрос.
Есть куча отдельных jpg картинок. Есть ли способ создать из них видеофайл так, чтобы каждая картинка являлась в видео отдельным фреймом? Причем фреймрейт нужно установить достаточно низкий, чтобы в секунду сменялось 2-3 картинки.
Пост отредактировал Anonymous
Anonymous No.3893
>>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

или есть ещё более сотни вариантов.
Anonymous No.3894
>>3893
C pipeline что-то не получилось, зато вот такой способ сработал:
ffmpeg -y -framerate 20 -pattern_type glob -i "*.jpg" -c copy bigyoba.mkv

В x264 не получается перекодировать, ошибка Unknown encoder 'libx264'. Его можно как-то доустановить или только вручную ffmpeg пересобирать? Я из репозитория ставил его.
Anonymous No.3895
>>3894
> C pipeline что-то не получилось
Не пойму, что там могло не получиться. Но твой третий способ лучше, не знал, что ffmpeg умеет в глоббинг сам. Наверно, это недавно появилось.

> В x264 не получается перекодировать, ошибка Unknown encoder 'libx264'. Его можно как-то доустановить или только вручную ffmpeg пересобирать?
Только пересборка. Олсо, не в x264, а в H.264, не путай энкодер и формат.
> Я из репозитория ставил его.
Федора? Наверняка для неё есть репы с нормальной мультимедией, где ffmpeg собран с большинством фич.
Anonymous No.3896
>>3895
>Не пойму, что там могло не получиться.
Не знаю, ошибка выглядела так:
pipe:: Invalid data found when processing input


>Федора?
Типа того, CentOS. В vp9 сконвертировал, это даже лучше.
Спасибо, все получилось в итоге.
Anonymous No.3897
>>3896
> pipe:: Invalid data found when processing input
Почему-то ffmpeg не смог выбрать правильный демуксер, но ему можно помочь:
cat *.jpg | ffmpeg -f image2pipe -i - -f null -

> В vp9 сконвертировал, это даже лучше.
По соотношению скорость/качество libvpx-vp9 если и дотягивает до x264, то лишь на редких сочетаниях настроек. А если на скорость плевать, то libaom-av1 выше на голову, в основном за счёт умения гладить линии при декодировании.
Anonymous No.3958
У ffmpeg в составе есть декодеры с приставокй _v4l2m2m:
h264_v4l2m2m
hevc_v4l2m2m
vp8_v4l2m2m
vp9_v4l2m2m

Что они означают и чем отличаются от декодеров без такой приставки?
h264
hevc
vp8
vp9
Anonymous No.3959
>>3958
Это для использования аппаратных декодеров с интерфейсом v4l2 (video4linux2). В man mpv пишут, что такие встречаются на каких-то SoC'ах. m2m = memory to memory, наверно, имеется в виду, что эти декодеры работают без предварительной загрузки видеопотока в gpu фильтрами hwmap/hwupload.
Anonymous No.3960
>>3959
Спасибо!

А что такое demuxers и muxers?
Anonymous No.3961
>>3960
Демуксеры — средства разборки контейнеров на дорожки, муксеры — наоборот, сборки.
Anonymous No.3962
>>3961
Ага, понятно. И еще вопрос, есть декодер vp9 и libvpx_vp9, они, как я понимаю, оба могут декодирова vp9, но первый встроен в ffmpeg по умолчанию, а второй из состава libvpx. Какой из них лучше использовать?
Anonymous No.3963
>>3962
Встроенный в ffmpeg декодер быстрее, он и используется по умолчанию. Можешь сравнить их скорость, декодировав файл в null:
ffmpeg -c:v libvpx-vp9 -i file.webm -f null -
ffmpeg -i file.webm -f null -

libvpx-vp9 — библиотека энкодера, декодирование для неё — второстепенная задача.
Anonymous No.3964
>>3963
Спасибо!

А встроенным vp9 энкодировать (блин, как это по русски сказать) тоже получается можно, но медленно?
Пост отредактировал Anonymous
Anonymous No.3965
>>3964
Нет, это только декодер. При указании "vp9" в роли энкодера это воспринимается как формат и доступный энкодер (это может быть libvpx-vp9, svt-vp9 и аппаратные реализации) выбирается автоматически.

> как это по русски сказать
Кодировать. Или сжимать.
гну!genlock No.4013
to

[Назад] [Обновить тред] [Вверх] [Каталог] [ Автообновление ]
16 / 1 / 4

[Ответить в тред] Ответить в тред

15000

Ответ в тред No.3891
Настройки
Избранное
Топ тредов