[FFmpeg-devel] [PATCH] avformat/hlsenc: calculate bitrate for segments with duration < 0.5

Jack Lau jacklau1222gm at gmail.com
Mon Mar 24 02:18:14 EET 2025


> On Mar 24, 2025, at 08:11, Steven Liu <lingjiujianke at gmail.com> wrote:
> 
> Jack Lau via ffmpeg-devel <ffmpeg-devel at ffmpeg.org <mailto:ffmpeg-devel at ffmpeg.org>> 于2025年3月24日周一 07:13写道:
>> 
>> The previous code sets the bitrate to be calculated only when duration>0.5, which is obviously not general enough.
>> 
>> In some scenarios, we may need to set hls_time<0.5, then the generated segments are all <0.5. At this time, because the bitrate is not calculated, max_bitrate is empty, and ff_hls_write_stream_info cannot write stream info normally, causing master_pl to be unavailable.
>> 
>> Signed-off-by: Jack Lau <jacklau1222 at qq.com>
>> ---
>> libavformat/hlsenc.c | 4 +---
>> 1 file changed, 1 insertion(+), 3 deletions(-)
>> 
>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
>> index c6ffdb99e5..223c516103 100644
>> --- a/libavformat/hlsenc.c
>> +++ b/libavformat/hlsenc.c
>> @@ -1150,9 +1150,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls,
>> 
>>     vs->total_size += size;
>>     vs->total_duration += duration;
>> -    if (duration > 0.5) {
>> -        // Don't include the final, possibly very short segment in the
>> -        // calculation of the max bitrate.
>> +    if (duration > 0) {
> 
> I'm not sure if this will work well in llhls mode,
> but when the network conditions are even slightly poor,
> severe stuttering or even an inability to continue playback occurs.
> This is because the segments are so small that the network overhead
> exceeds the time it takes to play them.

Thanks for your reply, It seems that the actual situation requires more complex considerations. I will study it further.
> 
>>         int cur_bitrate = (int)(8 * size / duration);
>>         if (cur_bitrate > vs->max_bitrate)
>>             vs->max_bitrate = cur_bitrate;
>> --
>> 2.47.1
>> 
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> 
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> 
> Thanks
> Steven
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org <mailto:ffmpeg-devel at ffmpeg.org>
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org <mailto:ffmpeg-devel-request at ffmpeg.org> with subject "unsubscribe”.

Regards
Jack





More information about the ffmpeg-devel mailing list