[FFmpeg-user] Automatic Aspect Ratio Conversion
Stefano Sabatini
stefano.sabatini-lala at poste.it
Tue Jul 26 13:50:03 CEST 2011
On date Tuesday 2011-07-26 14:51:39 +1000, Dan Flett encoded:
> Hi all,
>
> For a while I'd been wondering if ffmpeg could correctly aspect ratio
> convert (ARC) a video to a specified width/height/Display Aspect Ratio(DAR),
> without needing to know the width/height/Display Aspect Ratio of the source
> file.
>
> I wanted to have the choice of padding (pillar or letterboxing) or cropping
> (centre cut). After reading the libavfilter documentation closely I found
> the answer under my nose.
>
> http://ffmpeg.org/libavfilter.html
>
> There is an example under the "pad" section:
>
> # pad the input to get a final w/h ratio of 16:9
> pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
>
> This example assumes that the input is thinner/taller than 16:9 - if the
> input video is wider/shorter than 16:9 it will fail with error - because the
> input width will be wider than ih*16/9 and pad doesn't allow an output width
> thinner than the input video.
>
> Another example is:
>
> # pad the input to get a squared output with size equal to the maximum
> # value between the input width and height, and put the input video at
> # the center of the padded area
> pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
>
> This gives an output that is always padded square, regardless of the input
> video dimensions.
>
> To get the best of both examples (output 16:9 but works with any input
> dimensions) I did this:
> "pad=max(iw\,ih*(16/9)):ow/(16/9):(ow-iw)/2:(oh-ih)/2" -aspect 16:9
>
> This example selects the maximum of either the input width as-is, or the
> input height * 16/9. The output height is the output width * 16/9.
>
> This gives an output that is always 16:9, padding either the sides or
> top/bottom, as appropriate. The video is always centred.
>
> However I found that if the input video is anamorphic (i.e. non-square
> pixel), the output is also anamorphic, and the DAR / SAR information is
> lost.
Yes this is a bug which needs to be fixed.
Currently a=in_w/in_h, which is not what the docs say.
Possible solutions:
1. keep the current semantics for a, and fix the docs
2. change semantics for a to match the docs
I can't say which of 1. or 2. is better, they both have problems, what
do you suggest to do?
And of course we'll have to add the sar/dar variables.
--
ffmpeg-user random tip #13
Have you ever *seen* ffmpeg?
find ~/src/ffmpeg/ -type f | xargs cat | ffmpeg -s qcif \
-f rawvideo -i - -y ff.mpeg
More information about the ffmpeg-user
mailing list