FFmpeg filter to rotate image through arbitrary angle

10

2

I need to produce timelapse video from a webcam that was mounted at a slightly off-vertical angle, and I need to rotate the image about 3 degrees counter-clockwise. (The webcam is in a virtually inaccessible location and due to weather may get kicked askew eventually even if we did fix the angle. So I need to fix it in software.)

I have had success using ImageMagick's convert tool with the command line option:

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

but of course it is painfully slow to convert. I can do absolutely everything else I need to do (cropping and overlaying a logo on the image) using FFmpeg filters, but there doesn't seem to be a filter that allows rotating an image by an arbitrary angle, only by 90 or 180 degrees.

Perhaps there is some sort of generic linear transformation filter that can do this?

Thanks for any help.

Tom

Posted 2013-07-06T15:29:27.403

Reputation: 103

Answers

16

A rotate filter was recently added to FFmpeg, which allows rotation by an arbitrary angle. To use it, you can build the lastest version from git or download a recent snapshot build.

The angle is specified in radians; positive is clockwise and negative is counterclockwise. If you have degrees, multiply by PI/180 to convert to radians. For example, to rotate 3° counterclockwise:

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

Check out the documentation for more details and additional examples.

mark4o

Posted 2013-07-06T15:29:27.403

Reputation: 4 729

It's hilarious that its not just degrees by default. I just tried "rotate=-4" and got some serious wacky result! – FinancialRadDeveloper – 2016-12-07T22:27:14.833

@FinancialRadDeveloper: see http://math.stackexchange.com/q/1952206 and linked/related questions

– mark4o – 2016-12-07T23:56:04.387

1This looks promising. Definitely the answer I was looking for. I do wish there was a way to specify the center of rotation. I'll figure out a workaround by doing some translational displacement of the image before and after rotation to achieve the same effect. I'll try to remember to post a followup on what I find. – Tom – 2013-07-06T20:19:26.427

1Irony is that the version of ffmpeg I was using, I built from sources on June 11, the same day the new rotate feature was added. If I had just waited a few hours I would have already had it! – Tom – 2013-07-06T20:36:29.907