The Computer Oracle

How to convert 1080@50i -> 720@50p using ffmpeg?

--------------------------------------------------
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------

Music by Eric Matyas
https://www.soundimage.org
Track title: Magic Ocean Looping

--

Chapters
00:00 How To Convert 1080@50i -≫ 720@50p Using Ffmpeg?
01:51 Answer 1 Score 9
03:08 Answer 2 Score 1
03:28 Answer 3 Score 1
03:46 Accepted Answer Score 1
04:10 Answer 5 Score 0
04:24 Thank you

--

Full question
https://superuser.com/questions/253691/h...

--

Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...

--

Tags
#video #ffmpeg #fps

#avk47



ANSWER 1

Score 9


Just like interlacing progressive content divides each frame into 2 fields, thus doubling the frame rate, the common method of deinterlacing is to combine each 2 fields into 1 frame, which reduces the rate by 2, thus taking 50 into 25fps. You can of course double each final frame, but that does not provide any benefit.

First, we can read not to use -deinterlace, and yadif instead (which you already do):

 - deinterlace This option is deprecated since the deinterlacing is very low quality. Use the yadif filter with -filter:v yadif. 

You'll probably find the the yadif section of the FFMPEG documentation pretty interesting:

Deinterlace the input video ("yadif" means "yet another deinterlacing filter"). 
It accepts the optional parameters: mode:parity:auto. 

MODE specifies the interlacing mode to adopt, accepts one of the following values: 
‘0’
output 1 frame for each frame
‘1’
output 1 frame for each field 
‘2’
like 0 but skips spatial interlacing check 
‘3’
like 1 but skips spatial interlacing check 
Default value is 0. 

PARITY default value is -1.
AUTO default value is 0. 

Notice how the default MODE is 0, which instructs FFMPEG to ouput 1 frame for each 2 fields, thus halving the fps. I think what you're looking for is MODE 1: one frame per field. I'm not too sure how to use these optional parameters but perhaps something like

-filter:v yadif 1:-1:0 -s "1280x720" -r 50 



ANSWER 2

Score 1


According to the documentation, the -r option sets the output file frames per second. For example, this sets the output to 50 frames per second:

ffmpeg -i input.avi -r 50 output.avi



ANSWER 3

Score 1


ffmpeg -i input.avi -deinterlace -filter:v yadif -s "1280x720" output.avi




ACCEPTED ANSWER

Score 1


"For most practical cases it is not possible to retrieve a complete progressive video from interlaced content."

Also if you could upload a small sample of the video, it would help your cause tremedously.

Source: mplayerhq.hu/DOCS/HTML/en/menc-feat-telecine.html




ANSWER 5

Score 0


This command is working for me:

ffmpeg -i source_50i.MTS -aspect 1920:1080 -vf yadif=1,scale=1920:1080 -c:v libx264 -preset fast -profile:v high -crf 23 -ac 2 -strict experimental -c:a aac -b:a 96k -movflags +faststart -y result_50p.mp4

The source was a Sony camcorder file.