[FFmpeg-devel] [PATCH] avformat/hlsenc: check the segment duration valid

zhilizhao quinkblack at foxmail.com
Sun Aug 16 17:52:58 EEST 2020


Hi Steven,

> On Aug 17, 2020, at 8:49 AM, Steven Liu <lq at chinaffmpeg.org> wrote:
> 
> output a warning message if the target duration of the segment.

The sentence is incomplete.

> and modify the target duration to one packet duration,
> because there maybe have bframe and then split not by keyframe,
> and the segment is very very small.

The warning message is very helpful, modify the target duration is less helpful
IMHO. The generated files are broken and cannot be fixed. Let the user see what’s
going wrong from the log messages or from the m3u8 files, and fix the usage
problem.

> 
> Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
> ---
> libavformat/hlsenc.c | 5 +++++
> 1 file changed, 5 insertions(+)
> 
> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> index cb31d6aed7..76d59f5f79 100644
> --- a/libavformat/hlsenc.c
> +++ b/libavformat/hlsenc.c
> @@ -2512,6 +2512,11 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
> 
>         if (vs->start_pos || hls->segment_type != SEGMENT_TYPE_FMP4) {
>             double cur_duration =  (double)(pkt->pts - vs->end_pts) * st->time_base.num / st->time_base.den;
> +            if (cur_duration < 0) {
> +                av_log(s, AV_LOG_WARNING, "duration < 0, maybe you splited a too short segment, "
> +                                        "the duration will set to 1 packet duration.\n");
> +                cur_duration = vs->duration;
> +            }
>             ret = hls_append_segment(s, hls, vs, cur_duration, vs->start_pos, vs->size);
>             vs->end_pts = pkt->pts;
>             vs->duration = 0;
> -- 
> 2.25.0
> 
> _______________________________________________
> 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".



More information about the ffmpeg-devel mailing list