[FFmpeg-user] Get exact duration of an mpeg1 file

Robert Krüger krueger at lesspain.software
Tue Dec 18 22:49:24 EET 2018


On Fri, Dec 14, 2018 at 5:28 PM Carl Eugen Hoyos <ceffmpeg at gmail.com> wrote:

> 2018-12-14 17:19 GMT+01:00, Robert Krüger <krueger at lesspain.software>:
> > On Fri, Dec 14, 2018 at 3:03 AM Carl Eugen Hoyos <ceffmpeg at gmail.com>
> wrote:
> >
> >> 2018-12-13 17:10 GMT+01:00, Robert Krüger <krueger at lesspain.software>:
> >>
> >> > is there a way to get the exact duration of a raw mpeg1 file using the
> >> > ffmpeg command line? For testing I created a 30 minute test file using
> >> > ffmpeg (using -c:v mpeg1video -f mpeg1video), then verified the
> duration
> >> > using VLC and mediainfo and it is indeed exactly 30 minutes long but
> >> > ffmpeg -i shows the file's duration as 00:00:04.98 after displaying
> this
> >> > warning:
> >> >
> >> > [mpegvideo @ 0x7fe212806000] Estimating duration from bitrate, this
> >> > may be inaccurate
> >> >
> >> > Are there command line parameters to make it compute the exact
> >> > size or is this a design or implementation limitation?
> >>
> >> Just the mpeg specification;-)
> >>
> > Yes, sure, having to count packets/frames is unavoidable for some
> formats.
> > My question is rather whether ffmpeg's (or rather libavformat's) duration
> > computation code can be made to do this internally without these
> > workarounds.
> >
> >> $ ffmpeg -i input -c copy -f null -
> >
> > Thanks for the command line.
> >
> > Just a comparison: This approach gives me the duration information for a
> > 180 minute file in 1.8 seconds while mediainfo does it in 0.25 seconds
>
> (Does your input have timestamp discontinuities? You could try to
> concatenate a few parts - or cut away something - from the input file.)
>

Very unlikely since I generated the sample using an ffmpeg command line
using testsrc.


>
> > (being exact while ffmpeg is a few frames off, but that's a different
> > topic), so there must be a faster way to implement it.
>
> Patch probably welcome.
>

My asking is actually with the motivation to get enough information about
the problem as possible to decide whether to offer sponsoring for a patch
implementing the behaviour I describe, so it's good to know a patch would
be welcome.


>
> > Tested with a number
> > of different files with identical results in principle.
>
> > What keeps confusing me is that analyzeduration and probesize really seem
> > to be the parameters that should address the behaviour
>
> No, you misunderstand "analyzeduration", it does not analyze the
> duration of the input but specifies the duration that should be used
> for analysis.
>

That's how I understood it, so in my tests I set it to a value beyond the
duration of the file so that, if needed, the entire file is parsed for
calculating its duration (as well as setting probesize to a value larger
than the file size) but that did not happen.

Robert


>
> Carl Eugen
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-user mailing list