[Libav-user] How to know if lavf guessed the duration from the bitrate or not?

Michael Bradshaw mbradshaw at sorensonmedia.com
Wed Jun 13 17:58:49 CEST 2012


On Tue, Jun 12, 2012 at 8:12 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
> On Tue, Jun 12, 2012 at 11:44:03AM -0600, Michael Bradshaw wrote:
>> avformat_find_stream_info() attempts to find the file's and streams'
>> durations, but it will guess them based on the bitrate if it can't
>> determine the actual duration. This guess can be useful, but I need to
>> be able to know if the AVFormatContext's or AVStream's duration was a
>> guess   based on the bitrate or not, so I know how much I should trust
>> this duration.
>>
>> Is there a way to know this?
>
> One could parse the av_log() output other then that, i dont think
> theres a way thats not quite fragile currently.
>
> One thing that could be done is extending the API with  a flag that
> specifies the expected accuracy of the duration field

I think the flag would be nice. Would it be added to both
AVFormatContext and AVStream, or just one of them? I think
AVFormatContext may be sufficient, and would be the simplest (as
AVStream has no flags member). Perhaps 3 flags can be added:

AVFMT_FLAG_DURATION_FROM_PTS
AVFMT_FLAG_DURATION_FROM_STREAM
AVFMT_FLAG_DURATION_FROM_BITRATE

and estimate_timings() can set the proper flag according to what
method it uses. Your thoughts? I can submit a patch today (if you
don't beat me to it).

Thanks,

Michael


More information about the Libav-user mailing list