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

Carl Eugen Hoyos ceffmpeg at gmail.com
Fri Dec 14 18:28:38 EET 2018


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.)

> (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.

> 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.

Carl Eugen


More information about the ffmpeg-user mailing list