[FFmpeg-user] How to determine the video is interlaced

Tim Nicholson nichot20 at yahoo.com
Tue Apr 17 18:22:59 CEST 2012


On 06/04/12 12:34, Carl Eugen Hoyos wrote:
> 韩瑞松 <babyboy-8686 <at> 163.com> writes:
> 
>>  Can I determine the video is interlaced by ffmpeg?
> 
> Yes, there is a new filter, "idet", test reports are welcome.


Well. I have had some interesting initial results.
Using a command line of the form:-

ffmpeg -i $in_file -an \
-vf idet \
-c:v $codec \
-an -t 10 \
-y -f mov /dev/null

The results I get vary depending upon the value of $codec.

If I chose a value for codec that has the same pix_fmt as the source
material then I get sensible answers, eg:-

[idet @ 0x17eeee0] Single frame detection: TFF:83 BFF:0 Progressive:1
Undetermined:165
[idet @ 0x17eeee0] Multi frame detection: TFF:120 BFF:0 Progressive:0
Undetermined:129

For tff interlaced material with a mix of a talking head in an otherwise
static studio, and sport material.

However if I chose a codec that has a different pix_fmt to the source
ffmpeg does the following:-

"auto-inserting filter 'auto-inserted scale 0' between the filter 'src'
and the filter 'Parsed_idet_0'"

and then I get a very different result as by default the auto inserted
filter handles the material as progressive so by the time it gets to the
idet filter it has been screwed up and I get:-

idet @ 0x17ef2a0] Single frame detection: TFF:0 BFF:0 Progressive:6
Undetermined:243


[idet @ 0x17ef2a0] Multi frame detection: TFF:0 BFF:0 Progressive:120
Undetermined:129

So for accurate results one first needs to determine the pix_fmt and
then chose a suitable codec, or alternatively change the default
behaviour of the scale filter to not always work progressively. Or is
there are better command line that  does not require an output file?
(afaik you have to have an output file or ffmpeg winges)

-- 
Tim


More information about the ffmpeg-user mailing list