[FFmpeg-devel] [PATCH] flv duration
Howard Chu
hyc
Thu Apr 1 22:01:56 CEST 2010
Michael Niedermayer wrote:
> On Thu, Apr 01, 2010 at 02:28:11AM -0700, Howard Chu wrote:
>> When playing an FLV, you always see this message:
>>
>> [flv @ 0x120cea0]Estimating duration from bitrate, this may be inaccurate
>>
>> even if the FLV metadata provides the duration. I'd been ignoring this for
>> the most part, but after someone else mentioned it on irc I decided to take
>> a look. The FLV demux sets the AVFormatContext->duration based on the
>> metadata, but the av_has_duration() function wants to see it set in one of
>> the AVStreams. It looks to me like it does no harm one way or the other,
>> but I wrote this patch just to shut up that diagnostic.
>>
>> --
>> -- Howard Chu
>> CTO, Symas Corp. http://www.symas.com
>> Director, Highland Sun http://highlandsun.com/hyc/
>> Chief Architect, OpenLDAP http://www.openldap.org/project/
>
>> Index: libavformat/flvdec.c
>> ===================================================================
>> --- libavformat/flvdec.c (revision 22757)
>> +++ libavformat/flvdec.c (working copy)
>> @@ -192,9 +192,16 @@
>> } else if(amf_type == AMF_DATA_TYPE_NUMBER) {
>> snprintf(str_val, sizeof(str_val), "%.f", num_val);
>> av_metadata_set(&s->metadata, key, str_val);
>> - if(!strcmp(key, "duration")) s->duration = num_val * AV_TIME_BASE;
>> - else if(!strcmp(key, "videodatarate")&& vcodec&& 0<= (int)(num_val * 1024.0))
>> + if(!strcmp(key, "duration")) {
>
>> + s->duration = num_val * AV_TIME_BASE;
>> + s->streams[0]->duration = num_val * 1000;
>
> you dont need to set s->duration
I just kept that since the original code did it. But ok, will remove that.
(Why was the original code doing it then?)
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/
More information about the ffmpeg-devel
mailing list