[MEncoder-users] 24000/1001 not recognised as valid framerate for MPEG-2

Rich Felker dalias at aerifal.cx
Tue Feb 12 08:04:17 CET 2008


On Tue, Feb 12, 2008 at 07:55:58AM +0100, belcampo wrote:
> John Brown wrote:
> > 
> > 
> > On > Date: Mon, 11 Feb 2008 13:16:36 -0500, Rich Felker wrote:
> >> On Mon, Feb 11, 2008 at 05:39:55PM +0000, John Brown wrote:
> >>> I am using MEncoder dev-SVN-r25958-3.4.5 on Windows XP.
> >>>
> >>> According to mplayer -identify, ID_VIDEO_FPS=23.976
> >>>
> >>> Minimal command line:
> >>> $ ./mencoder.exe -nosound -ovc lavc -lavcopts vcodec=mpeg2video -of mpeg
> >>> mpegopts tele_src=24000/1001:tele_dest=30000/1001 -o $TMP/test.mpg test.avi
> >>>
> >>> Result:
> >>> videocodec: libavcodec (640x480 fourcc=3267706d [mpg2])
> >>> [mpeg2video @ 00BCF300]MPEG1/2 does not support 31001/1293 fps
> >>                                                   ^^^^^^^^^^
> >>
> >> Looks to me like your avi file is not 24000/1001 fps but 31001/1293
> >> fps. Probably some broken software generated it. Try -ofps 24000/1001
> >> and if it still doesn't work it could be a recent bug introducted into
> >> MPlayer..
> >>
> > 
> > I forgot to mention that -ofps 24000/1001 did not work either. No parameter
> > that takes a framerate will accept 24000/1001.  24, 30000/1001, and 30
> > all work. The only problem is 24000/1001.
> > 
> >>> MEncoder dev-SVN-r24764-4.2.1-sjlj (executable date-time 
> >>> = 2007-10-17) does not have this problem.
> >> Sounds like this may be the problem....
> > 
> > Indeed. 
> > 
> > That is just the next most recent version that I have.  I first noticed it
> > some time ago (maybe a few weeks) but I didn't bother to report it
> > because I had an older working copy.
> > 
> > _________________________________________________________________
> > Connect and share in new ways with Windows Live.
> > http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_012008
> > _______________________________________________
> > MEncoder-users mailing list
> > MEncoder-users at mplayerhq.hu
> > https://lists.mplayerhq.hu/mailman/listinfo/mencoder-users
> I don't know if it matters to the result, but your calculator will give:
> 310010000/1293
> 239760
> 240000000/1001
> 239760

Yes, the issue seems to be that the change in limits for the
float-to-rational code broke the recognition of 24000/1001 and led to
31001/1293 being considered a 'better' approximation of the floating
point value. The fundamental issue is that single precision floating
point is crap and insufficient to represent framerates. Converting
everything to use double would make the problem go away for all
practical purposes; converting instead to the use of rational numbers
everywhere would be even nicer but more work.

Rich



More information about the MEncoder-users mailing list