[FFmpeg-user] Duplicates frames when converting interlaced h264 to png frames and double length when converting interlaced .png to interlaced mp4
Lionel Trésaugues
lionel.tresaugues at gmail.com
Mon Nov 21 23:12:53 CET 2011
On 11/20/2011 10:56 PM, Mark Himsley wrote:
> On 18/11/2011 21:39, Lionel Trésaugues wrote:
>> Dear FFmpeg users,
>>
>> I am currently encountering two major problems during my video-editing
>> process (I am running the 64bits edition of Ubuntu Linux 11.10). My
>> camcorder (Panasonic HDC-SD60) shots 1080/50i (AVCHD in a mts
>> container).
>>
>> First problem)
>>
>> I want, in a first step, to convert the .mts into a sequence of .png
>> frames while preserving the interlacing.
>>
>> To do so, I used the following FFmpeg command-line:
>>
>> ffmpeg -i 00030.MTS -an -vcodec png -r 50 -flags +ilme+ildct+mv4+aic
>> -top 1 -qscale 1 -s 1920x1080 -sameq 00030%05d.png
>>
>> Then for a 2min21sec long .mts movie, ffmpeg produces 7080 frames each
>> of them clearly showing signs of interlacing (which was the expected
>> result) (and 7080/50=2min21sec).
>>
>> But, indeed, two consecutive frames are absolutely identical (e.g
>> frames 1 and 2 are identical, 3 and 4 are identical, 5 and 6, etc..)
>
> I suspect you are mistaken in your thinking of what 1080/50i means.
> Unless I am very much mistaken, and your description backs me up on
> this, your camera is actually shooting 25 interlaced frames per
> second. That is 50 interlaced fields per second, which is why some
> manufacturers write 50i. And since 50 is twice as many as 25 it's got
> to be better.
And you were right ! My camera effectively shots in 1080i/25 (I was
mistaken by the manual provided with the camcorder that was mentioning
50i). I didn't get until your message the fact that the two interlaced
fields that compose a frame have the same timestamp.
>
> This really gets my goat. To quote Wikipedia, so it must be right:
>
> The European Broadcasting Union (EBU) prefers to use the resolution
> and frame rate (not field rate) separated by a slash, as in 1080i/30
> and 1080i/25, likewise 480i/30 and 576i/25.[1] Resolutions of 1080i60
> or 1080i50 often refers to 1080i/30 or 1080i/25 in EBU notation.
>
>
> http://en.wikipedia.org/wiki/1080i
>
> So, try -r 25. I think that will give you 25 interlaced frames, each
> being unique.
>
> HTH.
>
I tried to replace -r 50 by -r 25 in the command-line I used to generate
the .png frames and I didn't obtain any duplicate. Using these generated
png as an input to produce an mp4 while, once again replacing -r 50 by
-25, give now a fluid movie (with the right length and framerate) whose
quality is similar to the one used to generated the png.
Thank you a lot for your help.
/lionel
>
>> When I try to do the same process using avisynth and VirtualDub (on
>> windows), while using this avisynth script :
>> DirectShowSource("E:\00030.MTS").AssumeTFF().DoubleWeave()
>> I, then obtain once again 7080 interlaced png frames but this time
>> they all are different.
>>
>> So, first question, how would I be able to produce the same results
>> with ffmpeg ?
>>
>> Second problem)
>>
>> Then, I want to convert the interlaced png frames (ideally after
>> processing in Blender) and merge them with an audio track into a mp4
>> container and still want to preserve the interlacing.
>>
>> I used the following command-line :
>>
>> ffmpeg -threads 2 -i %05d.png -i audio.aac -qscale 1 -vcodec mpeg4
>> -acodec copy -minrate 0 -b 50000k -mbd 2 -trellis 2 -cmp 2 -subcmp 2
>> -g 300 -r 50 -flags +ilme+ildct+mv4+aic -top 1 -f mp4 00030.mp4
>>
>> And I obtain a slow-motion interlaced movie which lasts twice the
>> duration of the initial footage. The problem is the same whether I use
>> the 7080 frames produced by ffmpeg (containing duplicates) or the 7080
>> frames (without duplicates) produced by VirtualDub.
>>
>> How would I be able to use the sequence of .png frames to produce an
>> interlaced movie (50i) in a mp4 container correctly ?
>>
>> Thanks a lot for your suggestions
>>
> [...]
>
More information about the ffmpeg-user
mailing list