diff --git a/libavformat/utils.c b/libavformat/utils.c index be0ef6538d..6bc2c002a4 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1846,9 +1846,18 @@ int av_find_stream_info(AVFormatContext *ic) st->codec.codec_tag= avcodec_pix_fmt_to_codec_tag(st->codec.pix_fmt); if(best_duration[i] < INT64_MAX && st->codec.frame_rate_base*1000 <= st->codec.frame_rate){ + int int_fps; + st->r_frame_rate= st->codec.frame_rate; st->r_frame_rate_base= av_rescale(best_duration[i], st->codec.frame_rate, AV_TIME_BASE); av_reduce(&st->r_frame_rate, &st->r_frame_rate_base, st->r_frame_rate, st->r_frame_rate_base, 1<<15); + + int_fps= av_rescale(st->r_frame_rate, 1, st->r_frame_rate_base); + + if(av_rescale(st->r_frame_rate, 1, int_fps) == st->r_frame_rate_base){ + st->r_frame_rate= int_fps; + st->r_frame_rate_base= 1; + } } /* set real frame rate info */