Фильтр FFmpeg для поворота изображения на произвольный угол

9

Мне нужно создать видео с замедленной съемкой с веб-камеры, которая была установлена ​​под немного вертикальным углом, и мне нужно повернуть изображение примерно на 3 градуса против часовой стрелки. (Веб-камера находится в практически недоступном месте, и из-за погоды в конечном итоге ее могут выгнать, даже если мы исправим угол. Поэтому мне нужно исправить это программно.)

Я имел успех, используя инструмент преобразования ImageMagick с параметром командной строки:

  convert infile.jpg -distort ScaleRotateTranslate 750,50,-3  outfile.jpg

но, конечно, это мучительно медленно конвертировать. Я могу делать абсолютно все остальное, что мне нужно (обрезка и наложение логотипа на изображение) с использованием фильтров FFmpeg, но, похоже, не существует фильтра, который позволял бы поворачивать изображение на произвольный угол, только на 90 или 180 градусов. ,

Возможно, есть какой-то общий фильтр линейного преобразования, который может это сделать?

Спасибо за любую помощь.

Том
источник

Ответы:

14

rotateФильтр был недавно добавлен к FFmpeg, что позволяет вращение на произвольный угол. Чтобы использовать его, вы можете собрать последнюю версию из git или скачать последнюю сборку снимка.

Угол указан в радианах; положительное по часовой стрелке и отрицательное против часовой стрелки. Если у вас есть градусы, умножьте на PI / 180, чтобы преобразовать в радианы. Например, чтобы повернуть на 3 ° против часовой стрелки:

ffmpeg -i in.mp4 -vf "rotate=-3*PI/180" out.mp4

Проверьте документацию для более подробной информации и дополнительных примеров.

mark4o
источник
1
Это выглядит многообещающе. Определенно ответ, который я искал. Я бы хотел, чтобы был способ указать центр вращения. Я найду обходной путь, выполнив некоторое поступательное смещение изображения до и после поворота, чтобы добиться того же эффекта. Я постараюсь не забыть опубликовать продолжение того, что я нахожу.
Том
1
Ирония в том, что используемую мной версию ffmpeg я собрал из исходников 11 июня, в тот же день, когда была добавлена ​​новая функция поворота. Если бы я просто подождал несколько часов, у меня уже было бы это!
Том
Забавно, что по умолчанию это не просто градусы. Я только что попробовал "rotate = -4" и получил серьезный дурацкий результат!
FinancialRadDeveloper
@FinancialRadDeveloper: см. Math.stackexchange.com/q/1952206 и связанные / связанные вопросы
mark4o