[FFmpeg-devel] [PATCH] flvenc: flush after write header
Martin Storsjö
martin at martin.st
Tue Nov 2 09:14:03 EET 2021
On Thu, 28 Oct 2021, Steven Liu wrote:
>
>
>> 2021年10月28日 下午2:32,Lingjiang Fang <vacingfang at foxmail.com> 写道:
>>
>> keep align with movenc, or it seems a little weired when debug
>> ---
>> libavformat/flvenc.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c
>> index 3f24c7e192..f4798dc9a6 100644
>> --- a/libavformat/flvenc.c
>> +++ b/libavformat/flvenc.c
>> @@ -767,6 +767,8 @@ static int flv_write_header(AVFormatContext *s)
>> flv_write_codec_header(s, s->streams[i]->codecpar, 0);
>> }
>>
>> + avio_flush(pb);
>> +
>> flv->datastart_offset = avio_tell(pb);
>> return 0;
>> }
>> --
>> 2.29.2
>>
>
> LGTM
No, please don't apply this.
We intentionally move in the other direction; every explicit avio_flush()
is a potential performance bottleneck, and we've been working on reducing
the number of extra avio_flush() calls.
When streaming, where latency is relevant, the libavformat generic code
already flushes automatically after the header and after each packet. When
latency is not relevant, we explicitly want to avoid extra avio_flush()
because each of them cause extra writes (that otherwise could be
buffered). You can also set the option "-flush_packets 1" (or "-fflags
flush_packets") to make the generic code flush when relevant. See e.g. the
flush_if_needed() function in libavformat/mux.c.
// Martin
More information about the ffmpeg-devel
mailing list