5

Я пытаюсь создать базовый 5-кратный зум-масштаб к центру изображения (из примера на веб-сайте ffmpeg.org). Команда ниже работает, но дрожит больше, чем мои руки после 5 чашек кофе:

ffmpeg -framerate 25 -loop 1 -i island.jpg -filter_complex "[0:v]scale=-2:480,zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125,trim=duration=5[v]" -map "[v]" -y out.mp4

Вход jpg. Выход mp4.

Я знаю об ошибке ffmpeg # 4298. Предложенный предложенный обходной путь должен использовать фильтр scale перед zoompan . Но, как показано в моем примере, это все еще, кажется, не имеет никакого эффекта.

Кажется, что любые произвольные значения x или y вызывают эффект jiggle/jerky/shaky.

Может ли кто-нибудь предложить какой-либо эффективный обходной путь? Спасибо!

Информация о версии:

ffmpeg version 3.1.2-static http://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (Debian 5.4.0-6) 20160609

1 ответ1

12

Избегайте уменьшения масштаба заранее. Либо примените функцию усечения к выражениям x и y. Или увеличить его раньше. Предпочтительно последний. Это избавляет меня от большей части дрожания.

ffmpeg -framerate 25 -loop 1 -i island.jpg -filter_complex "[0:v]scale=8000x4000,zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125,trim=duration=5[v]" -map "[v]" -y out.mp4

По сути, фильтр округляет значения из выражений x и y , которые могут быть округлены в большую или меньшую сторону. Это создает неравномерное движение из-за изменения направления панорамирования. Предварительное увеличение разрешения позволяет уменьшить округление.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .